Last active
May 6, 2016 16:43
-
-
Save kerinin/af409f1eb934bb3e0eb4a26cf50bf463 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"crypto/tls" | |
"crypto/x509" | |
"flag" | |
"fmt" | |
"log" | |
"time" | |
"golang.org/x/net/context" | |
"google.golang.org/grpc" | |
"google.golang.org/grpc/credentials" | |
pb "github.com/ReturnPath/proto/go/src/unsubscriber" | |
) | |
const ca string = ` | |
-----BEGIN CERTIFICATE----- | |
MIIDjzCCAnegAwIBAgIJALB1xVQ5HBn/MA0GCSqGSIb3DQEBCwUAMF4xCzAJBgNV | |
BAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEPMA0GA1UEBwwGQXVzdGluMRcwFQYDVQQK | |
DA5SZXR1cm5QYXRoIEluYzEVMBMGA1UECwwMZ1JQQyBSb290IENBMB4XDTE2MDUw | |
NTE2MjYyMloXDTI2MDUwMzE2MjYyMlowXjELMAkGA1UEBhMCVVMxDjAMBgNVBAgM | |
BVRleGFzMQ8wDQYDVQQHDAZBdXN0aW4xFzAVBgNVBAoMDlJldHVyblBhdGggSW5j | |
MRUwEwYDVQQLDAxnUlBDIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw | |
ggEKAoIBAQC2NS05t1WOn2lrZJHM/fj1eOW/Lio/BaqJSGTXDpO/AssEV629mYeh | |
gCKBZWhRDyEUUbiRN71oUFOCfs9LR+Cfu/+OWWtIJw9KU3jyU8H/Ns0EItYqlwAy | |
LpjQc7cewCm5RQpPhuCfOyNJIYdr83JHMSiTMsAS9HmxMvVxBsK1MebI2/wypdls | |
aC0NXimltaTNwC6Qq1pS1jJomvb7Rl/TVpsPMWkIZ+HzSc5MDX+leNsRxQhqhYVB | |
MUymnadfCDqpUnWNc7w1y2baKGB6HvFix/bAFp7LE9ElxjCPFR+VilIKvIdKoitf | |
33IMmQCbKesvjf01qjnbzTlXgg36DtAjAgMBAAGjUDBOMB0GA1UdDgQWBBSjGnXo | |
O38b7qZIR7+P9GohVAYM/DAfBgNVHSMEGDAWgBSjGnXoO38b7qZIR7+P9GohVAYM | |
/DAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBx17RrFeR5piY78j8/ | |
9n7WLRCfURxe+Y9xm/IMyxwFeaVdUff14loWta0NtwjgGMJKkdVSFwTMPRMlQXGm | |
XCsau7PKYuvB9gKt2BVmxDIQC07jywrfeL61TbTq7u59sRBUI09denClXnSEe3qa | |
FAQnIUYuYvRXc79vs3HYMqeCkkOzOHruCqOYl/Krag6pnkFIKe1d5A2hV92tAhJY | |
rAkBj2LhrOIrGRTzo95bGE9xNLboneIf4h64Ndr6DL0O3f8CblqYaTOpNnGE9V39 | |
7tiJsSNLi9fgitLgQ6CECYwGLPX3g4hjHZCwJ0winMRstNozEwcbr166C7dXmk0u | |
7Ssr | |
-----END CERTIFICATE----- | |
` | |
type server struct{} | |
func (s server) GetUser(ctx context.Context, req *pb.UserID) (*pb.UserSettings, error) { | |
fmt.Printf("GetUser: %+v\n", req) | |
return &pb.UserSettings{Email: "response from go"}, nil | |
} | |
func main() { | |
var ( | |
cert = flag.String("cert", withConfigDir("cert.pem"), "TLS client certificate.") | |
key = flag.String("key", withConfigDir("key.pem"), "TLS client key.") | |
) | |
flag.Parse() | |
if cert == nil || key == nil { | |
log.Fatal("Must specify 'cert' and 'key' paths") | |
} | |
caPool := x509.NewCertPool() | |
caPool.AppendCertsFromPEM([]byte(ca)) | |
cert, err := tls.LoadX509KeyPair(*tlsCert, *tlsKey) | |
if err != nil { | |
log.Fatal(err) | |
} | |
creds := credentials.NewTLS(&tls.Config{ | |
RootCAs: caPool, | |
Certificates: []tls.Certificate{cert}, | |
}) | |
conn, err := grpc.Dial( | |
"grpc.otherinbox.com:50051", | |
grpc.WithTransportCredentials(creds), | |
grpc.WithTimeout(5*time.Second), | |
grpc.WithUserAgent(`demo client`), | |
) | |
if err != nil { | |
log.Fatalf("failed to dial: %v", err) | |
} | |
defer conn.Close() | |
client := pb.NewOIBClient(conn) | |
feature, err := client.GetUser(context.Background(), &pb.UserID{EmailAddress: "request from go"}) | |
if err != nil { | |
log.Fatalf("failed to get feature: %v", err) | |
} | |
fmt.Printf("Got feature: %+v\n", feature) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment