frontend: add integration for adservice

Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
This commit is contained in:
Ahmet Alp Balkan 2018-08-16 18:01:03 -07:00
parent c9cd627453
commit 3e90b73464
No known key found for this signature in database
GPG key ID: 5C02521D7B216AD6
8 changed files with 374 additions and 121 deletions

View file

@ -56,6 +56,8 @@ spec:
value: "shippingservice:50051"
- name: CHECKOUT_SERVICE_ADDR
value: "checkoutservice:5050"
- name: AD_SERVICE_ADDR
value: "adservice:9555"
resources:
requests:
cpu: 100m

View file

@ -35,7 +35,7 @@ func (m *CartItem) Reset() { *m = CartItem{} }
func (m *CartItem) String() string { return proto.CompactTextString(m) }
func (*CartItem) ProtoMessage() {}
func (*CartItem) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{0}
return fileDescriptor_demo_c812a73334c7ff0d, []int{0}
}
func (m *CartItem) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CartItem.Unmarshal(m, b)
@ -81,7 +81,7 @@ func (m *AddItemRequest) Reset() { *m = AddItemRequest{} }
func (m *AddItemRequest) String() string { return proto.CompactTextString(m) }
func (*AddItemRequest) ProtoMessage() {}
func (*AddItemRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{1}
return fileDescriptor_demo_c812a73334c7ff0d, []int{1}
}
func (m *AddItemRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AddItemRequest.Unmarshal(m, b)
@ -126,7 +126,7 @@ func (m *EmptyCartRequest) Reset() { *m = EmptyCartRequest{} }
func (m *EmptyCartRequest) String() string { return proto.CompactTextString(m) }
func (*EmptyCartRequest) ProtoMessage() {}
func (*EmptyCartRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{2}
return fileDescriptor_demo_c812a73334c7ff0d, []int{2}
}
func (m *EmptyCartRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_EmptyCartRequest.Unmarshal(m, b)
@ -164,7 +164,7 @@ func (m *GetCartRequest) Reset() { *m = GetCartRequest{} }
func (m *GetCartRequest) String() string { return proto.CompactTextString(m) }
func (*GetCartRequest) ProtoMessage() {}
func (*GetCartRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{3}
return fileDescriptor_demo_c812a73334c7ff0d, []int{3}
}
func (m *GetCartRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetCartRequest.Unmarshal(m, b)
@ -203,7 +203,7 @@ func (m *Cart) Reset() { *m = Cart{} }
func (m *Cart) String() string { return proto.CompactTextString(m) }
func (*Cart) ProtoMessage() {}
func (*Cart) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{4}
return fileDescriptor_demo_c812a73334c7ff0d, []int{4}
}
func (m *Cart) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Cart.Unmarshal(m, b)
@ -247,7 +247,7 @@ func (m *Empty) Reset() { *m = Empty{} }
func (m *Empty) String() string { return proto.CompactTextString(m) }
func (*Empty) ProtoMessage() {}
func (*Empty) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{5}
return fileDescriptor_demo_c812a73334c7ff0d, []int{5}
}
func (m *Empty) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Empty.Unmarshal(m, b)
@ -279,7 +279,7 @@ func (m *ListRecommendationsRequest) Reset() { *m = ListRecommendationsR
func (m *ListRecommendationsRequest) String() string { return proto.CompactTextString(m) }
func (*ListRecommendationsRequest) ProtoMessage() {}
func (*ListRecommendationsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{6}
return fileDescriptor_demo_c812a73334c7ff0d, []int{6}
}
func (m *ListRecommendationsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListRecommendationsRequest.Unmarshal(m, b)
@ -324,7 +324,7 @@ func (m *ListRecommendationsResponse) Reset() { *m = ListRecommendations
func (m *ListRecommendationsResponse) String() string { return proto.CompactTextString(m) }
func (*ListRecommendationsResponse) ProtoMessage() {}
func (*ListRecommendationsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{7}
return fileDescriptor_demo_c812a73334c7ff0d, []int{7}
}
func (m *ListRecommendationsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListRecommendationsResponse.Unmarshal(m, b)
@ -366,7 +366,7 @@ func (m *Product) Reset() { *m = Product{} }
func (m *Product) String() string { return proto.CompactTextString(m) }
func (*Product) ProtoMessage() {}
func (*Product) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{8}
return fileDescriptor_demo_c812a73334c7ff0d, []int{8}
}
func (m *Product) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Product.Unmarshal(m, b)
@ -432,7 +432,7 @@ func (m *ListProductsResponse) Reset() { *m = ListProductsResponse{} }
func (m *ListProductsResponse) String() string { return proto.CompactTextString(m) }
func (*ListProductsResponse) ProtoMessage() {}
func (*ListProductsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{9}
return fileDescriptor_demo_c812a73334c7ff0d, []int{9}
}
func (m *ListProductsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListProductsResponse.Unmarshal(m, b)
@ -470,7 +470,7 @@ func (m *GetProductRequest) Reset() { *m = GetProductRequest{} }
func (m *GetProductRequest) String() string { return proto.CompactTextString(m) }
func (*GetProductRequest) ProtoMessage() {}
func (*GetProductRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{10}
return fileDescriptor_demo_c812a73334c7ff0d, []int{10}
}
func (m *GetProductRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetProductRequest.Unmarshal(m, b)
@ -508,7 +508,7 @@ func (m *SearchProductsRequest) Reset() { *m = SearchProductsRequest{} }
func (m *SearchProductsRequest) String() string { return proto.CompactTextString(m) }
func (*SearchProductsRequest) ProtoMessage() {}
func (*SearchProductsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{11}
return fileDescriptor_demo_c812a73334c7ff0d, []int{11}
}
func (m *SearchProductsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SearchProductsRequest.Unmarshal(m, b)
@ -546,7 +546,7 @@ func (m *SearchProductsResponse) Reset() { *m = SearchProductsResponse{}
func (m *SearchProductsResponse) String() string { return proto.CompactTextString(m) }
func (*SearchProductsResponse) ProtoMessage() {}
func (*SearchProductsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{12}
return fileDescriptor_demo_c812a73334c7ff0d, []int{12}
}
func (m *SearchProductsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SearchProductsResponse.Unmarshal(m, b)
@ -585,7 +585,7 @@ func (m *GetQuoteRequest) Reset() { *m = GetQuoteRequest{} }
func (m *GetQuoteRequest) String() string { return proto.CompactTextString(m) }
func (*GetQuoteRequest) ProtoMessage() {}
func (*GetQuoteRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{13}
return fileDescriptor_demo_c812a73334c7ff0d, []int{13}
}
func (m *GetQuoteRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetQuoteRequest.Unmarshal(m, b)
@ -630,7 +630,7 @@ func (m *GetQuoteResponse) Reset() { *m = GetQuoteResponse{} }
func (m *GetQuoteResponse) String() string { return proto.CompactTextString(m) }
func (*GetQuoteResponse) ProtoMessage() {}
func (*GetQuoteResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{14}
return fileDescriptor_demo_c812a73334c7ff0d, []int{14}
}
func (m *GetQuoteResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetQuoteResponse.Unmarshal(m, b)
@ -669,7 +669,7 @@ func (m *ShipOrderRequest) Reset() { *m = ShipOrderRequest{} }
func (m *ShipOrderRequest) String() string { return proto.CompactTextString(m) }
func (*ShipOrderRequest) ProtoMessage() {}
func (*ShipOrderRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{15}
return fileDescriptor_demo_c812a73334c7ff0d, []int{15}
}
func (m *ShipOrderRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ShipOrderRequest.Unmarshal(m, b)
@ -714,7 +714,7 @@ func (m *ShipOrderResponse) Reset() { *m = ShipOrderResponse{} }
func (m *ShipOrderResponse) String() string { return proto.CompactTextString(m) }
func (*ShipOrderResponse) ProtoMessage() {}
func (*ShipOrderResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{16}
return fileDescriptor_demo_c812a73334c7ff0d, []int{16}
}
func (m *ShipOrderResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ShipOrderResponse.Unmarshal(m, b)
@ -756,7 +756,7 @@ func (m *Address) Reset() { *m = Address{} }
func (m *Address) String() string { return proto.CompactTextString(m) }
func (*Address) ProtoMessage() {}
func (*Address) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{17}
return fileDescriptor_demo_c812a73334c7ff0d, []int{17}
}
func (m *Address) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Address.Unmarshal(m, b)
@ -834,7 +834,7 @@ func (m *Money) Reset() { *m = Money{} }
func (m *Money) String() string { return proto.CompactTextString(m) }
func (*Money) ProtoMessage() {}
func (*Money) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{18}
return fileDescriptor_demo_c812a73334c7ff0d, []int{18}
}
func (m *Money) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Money.Unmarshal(m, b)
@ -887,7 +887,7 @@ func (m *GetSupportedCurrenciesResponse) Reset() { *m = GetSupportedCurr
func (m *GetSupportedCurrenciesResponse) String() string { return proto.CompactTextString(m) }
func (*GetSupportedCurrenciesResponse) ProtoMessage() {}
func (*GetSupportedCurrenciesResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{19}
return fileDescriptor_demo_c812a73334c7ff0d, []int{19}
}
func (m *GetSupportedCurrenciesResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetSupportedCurrenciesResponse.Unmarshal(m, b)
@ -927,7 +927,7 @@ func (m *CurrencyConversionRequest) Reset() { *m = CurrencyConversionReq
func (m *CurrencyConversionRequest) String() string { return proto.CompactTextString(m) }
func (*CurrencyConversionRequest) ProtoMessage() {}
func (*CurrencyConversionRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{20}
return fileDescriptor_demo_c812a73334c7ff0d, []int{20}
}
func (m *CurrencyConversionRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CurrencyConversionRequest.Unmarshal(m, b)
@ -975,7 +975,7 @@ func (m *CreditCardInfo) Reset() { *m = CreditCardInfo{} }
func (m *CreditCardInfo) String() string { return proto.CompactTextString(m) }
func (*CreditCardInfo) ProtoMessage() {}
func (*CreditCardInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{21}
return fileDescriptor_demo_c812a73334c7ff0d, []int{21}
}
func (m *CreditCardInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreditCardInfo.Unmarshal(m, b)
@ -1035,7 +1035,7 @@ func (m *ChargeRequest) Reset() { *m = ChargeRequest{} }
func (m *ChargeRequest) String() string { return proto.CompactTextString(m) }
func (*ChargeRequest) ProtoMessage() {}
func (*ChargeRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{22}
return fileDescriptor_demo_c812a73334c7ff0d, []int{22}
}
func (m *ChargeRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChargeRequest.Unmarshal(m, b)
@ -1080,7 +1080,7 @@ func (m *ChargeResponse) Reset() { *m = ChargeResponse{} }
func (m *ChargeResponse) String() string { return proto.CompactTextString(m) }
func (*ChargeResponse) ProtoMessage() {}
func (*ChargeResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{23}
return fileDescriptor_demo_c812a73334c7ff0d, []int{23}
}
func (m *ChargeResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChargeResponse.Unmarshal(m, b)
@ -1119,7 +1119,7 @@ func (m *OrderItem) Reset() { *m = OrderItem{} }
func (m *OrderItem) String() string { return proto.CompactTextString(m) }
func (*OrderItem) ProtoMessage() {}
func (*OrderItem) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{24}
return fileDescriptor_demo_c812a73334c7ff0d, []int{24}
}
func (m *OrderItem) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OrderItem.Unmarshal(m, b)
@ -1168,7 +1168,7 @@ func (m *OrderResult) Reset() { *m = OrderResult{} }
func (m *OrderResult) String() string { return proto.CompactTextString(m) }
func (*OrderResult) ProtoMessage() {}
func (*OrderResult) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{25}
return fileDescriptor_demo_c812a73334c7ff0d, []int{25}
}
func (m *OrderResult) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OrderResult.Unmarshal(m, b)
@ -1235,7 +1235,7 @@ func (m *SendOrderConfirmationRequest) Reset() { *m = SendOrderConfirmat
func (m *SendOrderConfirmationRequest) String() string { return proto.CompactTextString(m) }
func (*SendOrderConfirmationRequest) ProtoMessage() {}
func (*SendOrderConfirmationRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{26}
return fileDescriptor_demo_c812a73334c7ff0d, []int{26}
}
func (m *SendOrderConfirmationRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SendOrderConfirmationRequest.Unmarshal(m, b)
@ -1284,7 +1284,7 @@ func (m *PlaceOrderRequest) Reset() { *m = PlaceOrderRequest{} }
func (m *PlaceOrderRequest) String() string { return proto.CompactTextString(m) }
func (*PlaceOrderRequest) ProtoMessage() {}
func (*PlaceOrderRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{27}
return fileDescriptor_demo_c812a73334c7ff0d, []int{27}
}
func (m *PlaceOrderRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PlaceOrderRequest.Unmarshal(m, b)
@ -1350,7 +1350,7 @@ func (m *PlaceOrderResponse) Reset() { *m = PlaceOrderResponse{} }
func (m *PlaceOrderResponse) String() string { return proto.CompactTextString(m) }
func (*PlaceOrderResponse) ProtoMessage() {}
func (*PlaceOrderResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_e1d03823e14b5fb0, []int{28}
return fileDescriptor_demo_c812a73334c7ff0d, []int{28}
}
func (m *PlaceOrderResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PlaceOrderResponse.Unmarshal(m, b)
@ -1377,6 +1377,131 @@ func (m *PlaceOrderResponse) GetOrder() *OrderResult {
return nil
}
type AdsRequest struct {
// List of important key words from the current page describing the context.
ContextKeys []string `protobuf:"bytes,1,rep,name=context_keys,json=contextKeys" json:"context_keys,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *AdsRequest) Reset() { *m = AdsRequest{} }
func (m *AdsRequest) String() string { return proto.CompactTextString(m) }
func (*AdsRequest) ProtoMessage() {}
func (*AdsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_c812a73334c7ff0d, []int{29}
}
func (m *AdsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AdsRequest.Unmarshal(m, b)
}
func (m *AdsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_AdsRequest.Marshal(b, m, deterministic)
}
func (dst *AdsRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_AdsRequest.Merge(dst, src)
}
func (m *AdsRequest) XXX_Size() int {
return xxx_messageInfo_AdsRequest.Size(m)
}
func (m *AdsRequest) XXX_DiscardUnknown() {
xxx_messageInfo_AdsRequest.DiscardUnknown(m)
}
var xxx_messageInfo_AdsRequest proto.InternalMessageInfo
func (m *AdsRequest) GetContextKeys() []string {
if m != nil {
return m.ContextKeys
}
return nil
}
type AdsResponse struct {
Ads []*Ad `protobuf:"bytes,1,rep,name=ads" json:"ads,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *AdsResponse) Reset() { *m = AdsResponse{} }
func (m *AdsResponse) String() string { return proto.CompactTextString(m) }
func (*AdsResponse) ProtoMessage() {}
func (*AdsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_c812a73334c7ff0d, []int{30}
}
func (m *AdsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AdsResponse.Unmarshal(m, b)
}
func (m *AdsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_AdsResponse.Marshal(b, m, deterministic)
}
func (dst *AdsResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_AdsResponse.Merge(dst, src)
}
func (m *AdsResponse) XXX_Size() int {
return xxx_messageInfo_AdsResponse.Size(m)
}
func (m *AdsResponse) XXX_DiscardUnknown() {
xxx_messageInfo_AdsResponse.DiscardUnknown(m)
}
var xxx_messageInfo_AdsResponse proto.InternalMessageInfo
func (m *AdsResponse) GetAds() []*Ad {
if m != nil {
return m.Ads
}
return nil
}
type Ad struct {
// url to redirect to when an ad is clicked.
RedirectUrl string `protobuf:"bytes,1,opt,name=redirect_url,json=redirectUrl" json:"redirect_url,omitempty"`
// short advertisement text to display.
Text string `protobuf:"bytes,2,opt,name=text" json:"text,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Ad) Reset() { *m = Ad{} }
func (m *Ad) String() string { return proto.CompactTextString(m) }
func (*Ad) ProtoMessage() {}
func (*Ad) Descriptor() ([]byte, []int) {
return fileDescriptor_demo_c812a73334c7ff0d, []int{31}
}
func (m *Ad) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Ad.Unmarshal(m, b)
}
func (m *Ad) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Ad.Marshal(b, m, deterministic)
}
func (dst *Ad) XXX_Merge(src proto.Message) {
xxx_messageInfo_Ad.Merge(dst, src)
}
func (m *Ad) XXX_Size() int {
return xxx_messageInfo_Ad.Size(m)
}
func (m *Ad) XXX_DiscardUnknown() {
xxx_messageInfo_Ad.DiscardUnknown(m)
}
var xxx_messageInfo_Ad proto.InternalMessageInfo
func (m *Ad) GetRedirectUrl() string {
if m != nil {
return m.RedirectUrl
}
return ""
}
func (m *Ad) GetText() string {
if m != nil {
return m.Text
}
return ""
}
func init() {
proto.RegisterType((*CartItem)(nil), "hipstershop.CartItem")
proto.RegisterType((*AddItemRequest)(nil), "hipstershop.AddItemRequest")
@ -1407,6 +1532,9 @@ func init() {
proto.RegisterType((*SendOrderConfirmationRequest)(nil), "hipstershop.SendOrderConfirmationRequest")
proto.RegisterType((*PlaceOrderRequest)(nil), "hipstershop.PlaceOrderRequest")
proto.RegisterType((*PlaceOrderResponse)(nil), "hipstershop.PlaceOrderResponse")
proto.RegisterType((*AdsRequest)(nil), "hipstershop.AdsRequest")
proto.RegisterType((*AdsResponse)(nil), "hipstershop.AdsResponse")
proto.RegisterType((*Ad)(nil), "hipstershop.Ad")
}
// Reference imports to suppress errors if they are not otherwise used.
@ -2127,95 +2255,165 @@ var _CheckoutService_serviceDesc = grpc.ServiceDesc{
Metadata: "demo.proto",
}
func init() { proto.RegisterFile("demo.proto", fileDescriptor_demo_e1d03823e14b5fb0) }
var fileDescriptor_demo_e1d03823e14b5fb0 = []byte{
// 1389 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xdd, 0x72, 0xd3, 0xc6,
0x17, 0x8f, 0x12, 0x3b, 0xb6, 0x8f, 0x63, 0x27, 0xd9, 0x7f, 0xc2, 0xdf, 0x28, 0x7c, 0xa4, 0x9b,
0x81, 0x42, 0x81, 0x94, 0x49, 0x3b, 0xc3, 0x45, 0x69, 0x29, 0x63, 0x32, 0xc6, 0x33, 0x50, 0xa8,
0x02, 0x1d, 0x3a, 0x74, 0xea, 0x11, 0xda, 0x05, 0xab, 0x44, 0x5a, 0xb1, 0xbb, 0xca, 0xd4, 0x5c,
0xb6, 0x0f, 0xd0, 0xfb, 0x3e, 0x42, 0x5f, 0xa0, 0xef, 0xd0, 0xfb, 0xbe, 0x42, 0x9f, 0xa3, 0xb3,
0x2b, 0xad, 0xbe, 0x62, 0x25, 0xe1, 0xa6, 0x77, 0xda, 0xb3, 0xbf, 0x3d, 0xe7, 0x77, 0xce, 0x9e,
0x73, 0xf6, 0x08, 0x80, 0xd0, 0x80, 0xed, 0x46, 0x9c, 0x49, 0x86, 0xba, 0x53, 0x3f, 0x12, 0x92,
0x72, 0x31, 0x65, 0x11, 0xde, 0x87, 0xf6, 0xd0, 0xe5, 0x72, 0x2c, 0x69, 0x80, 0x2e, 0x02, 0x44,
0x9c, 0x91, 0xd8, 0x93, 0x13, 0x9f, 0x0c, 0xac, 0x6d, 0xeb, 0x5a, 0xc7, 0xe9, 0xa4, 0x92, 0x31,
0x41, 0x36, 0xb4, 0xdf, 0xc5, 0x6e, 0x28, 0x7d, 0x39, 0x1b, 0x2c, 0x6e, 0x5b, 0xd7, 0x9a, 0x4e,
0xb6, 0xc6, 0xcf, 0xa0, 0x7f, 0x9f, 0x10, 0xa5, 0xc5, 0xa1, 0xef, 0x62, 0x2a, 0x24, 0xfa, 0x3f,
0xb4, 0x62, 0x41, 0x79, 0xae, 0x69, 0x59, 0x2d, 0xc7, 0x04, 0x5d, 0x87, 0x86, 0x2f, 0x69, 0xa0,
0x55, 0x74, 0xf7, 0x36, 0x77, 0x0b, 0x6c, 0x76, 0x0d, 0x15, 0x47, 0x43, 0xf0, 0x0d, 0x58, 0xdb,
0x0f, 0x22, 0x39, 0x53, 0xe2, 0xd3, 0xf4, 0xe2, 0xeb, 0xd0, 0x1f, 0x51, 0x79, 0x26, 0xe8, 0x23,
0x68, 0x28, 0x5c, 0x3d, 0xc7, 0x1b, 0xd0, 0x54, 0x04, 0xc4, 0x60, 0x71, 0x7b, 0xa9, 0x9e, 0x64,
0x82, 0xc1, 0x2d, 0x68, 0x6a, 0x96, 0xf8, 0x3b, 0xb0, 0x1f, 0xf9, 0x42, 0x3a, 0xd4, 0x63, 0x41,
0x40, 0x43, 0xe2, 0x4a, 0x9f, 0x85, 0xe2, 0xd4, 0x80, 0x5c, 0x86, 0x6e, 0x1e, 0xf6, 0xc4, 0x64,
0xc7, 0x81, 0x2c, 0xee, 0x02, 0x7f, 0x05, 0x5b, 0x73, 0xf5, 0x8a, 0x88, 0x85, 0x82, 0x56, 0xcf,
0x5b, 0xc7, 0xce, 0xff, 0x6e, 0x41, 0xeb, 0x69, 0xb2, 0x44, 0x7d, 0x58, 0xcc, 0x08, 0x2c, 0xfa,
0x04, 0x21, 0x68, 0x84, 0x6e, 0x40, 0xf5, 0x6d, 0x74, 0x1c, 0xfd, 0x8d, 0xb6, 0xa1, 0x4b, 0xa8,
0xf0, 0xb8, 0x1f, 0x29, 0x43, 0x83, 0x25, 0xbd, 0x55, 0x14, 0xa1, 0x01, 0xb4, 0x22, 0xdf, 0x93,
0x31, 0xa7, 0x83, 0x86, 0xde, 0x35, 0x4b, 0xf4, 0x29, 0x74, 0x22, 0xee, 0x7b, 0x74, 0x12, 0x0b,
0x32, 0x68, 0xea, 0x2b, 0x46, 0xa5, 0xe8, 0x3d, 0x66, 0x21, 0x9d, 0x39, 0x6d, 0x0d, 0x7a, 0x2e,
0x08, 0x7e, 0x08, 0x1b, 0xca, 0xb9, 0x94, 0x5f, 0xee, 0xd5, 0x6d, 0x68, 0xa7, 0x2e, 0x24, 0x2e,
0x75, 0xf7, 0x36, 0x4a, 0x7a, 0xd2, 0x03, 0x4e, 0x86, 0xc2, 0x3b, 0xb0, 0x3e, 0xa2, 0x46, 0x91,
0x89, 0x7a, 0xc5, 0x5f, 0x7c, 0x0b, 0x36, 0x0f, 0xa8, 0xcb, 0xbd, 0x69, 0x6e, 0x30, 0x01, 0x6e,
0x40, 0xf3, 0x5d, 0x4c, 0xf9, 0x2c, 0xc5, 0x26, 0x0b, 0xfc, 0x10, 0xce, 0x55, 0xe1, 0x29, 0xbf,
0x5d, 0x68, 0x71, 0x2a, 0xe2, 0xc3, 0x53, 0xe8, 0x19, 0x10, 0x0e, 0x61, 0x75, 0x44, 0xe5, 0xb7,
0x31, 0x93, 0xd4, 0x98, 0xdc, 0x85, 0x96, 0x4b, 0x08, 0xa7, 0x42, 0x68, 0xa3, 0x55, 0x15, 0xf7,
0x93, 0x3d, 0xc7, 0x80, 0x3e, 0x2c, 0x2b, 0xef, 0xc3, 0x5a, 0x6e, 0x2f, 0xe5, 0x7c, 0x0b, 0xda,
0x1e, 0x13, 0x52, 0xdf, 0x8d, 0x55, 0x7b, 0x37, 0x2d, 0x85, 0x51, 0x57, 0xc3, 0x60, 0xed, 0x60,
0xea, 0x47, 0x4f, 0x38, 0xa1, 0xfc, 0x3f, 0xe1, 0xfc, 0x39, 0xac, 0x17, 0x0c, 0xe6, 0xe9, 0x2d,
0xb9, 0xeb, 0xbd, 0xf5, 0xc3, 0x37, 0x79, 0xed, 0x80, 0x11, 0x8d, 0x09, 0xfe, 0xcd, 0x82, 0x56,
0x6a, 0x17, 0x5d, 0x81, 0xbe, 0x90, 0x9c, 0x52, 0x39, 0x29, 0xb2, 0xec, 0x38, 0xbd, 0x44, 0x6a,
0x60, 0x08, 0x1a, 0x9e, 0x69, 0x63, 0x1d, 0x47, 0x7f, 0xab, 0x04, 0x10, 0xd2, 0x95, 0x34, 0xcd,
0xf7, 0x64, 0xa1, 0x32, 0xdd, 0x63, 0x71, 0x28, 0xf9, 0xcc, 0x64, 0x7a, 0xba, 0x44, 0xe7, 0xa1,
0xfd, 0xde, 0x8f, 0x26, 0x1e, 0x23, 0x54, 0x27, 0x7a, 0xd3, 0x69, 0xbd, 0xf7, 0xa3, 0x21, 0x23,
0x14, 0xbf, 0x80, 0xa6, 0x0e, 0x25, 0xda, 0x81, 0x9e, 0x17, 0x73, 0x4e, 0x43, 0x6f, 0x96, 0x00,
0x13, 0x36, 0x2b, 0x46, 0xa8, 0xd0, 0xca, 0x70, 0x1c, 0xfa, 0x52, 0x68, 0x36, 0x4b, 0x4e, 0xb2,
0x50, 0xd2, 0xd0, 0x0d, 0x99, 0xd0, 0x74, 0x9a, 0x4e, 0xb2, 0xc0, 0x23, 0xb8, 0x34, 0xa2, 0xf2,
0x20, 0x8e, 0x22, 0xc6, 0x25, 0x25, 0xc3, 0x44, 0x8f, 0x4f, 0xf3, 0xbc, 0xbc, 0x02, 0xfd, 0x92,
0x49, 0xd3, 0x10, 0x7a, 0x45, 0x9b, 0x02, 0xff, 0x00, 0xe7, 0x87, 0x99, 0x20, 0x3c, 0xa2, 0x5c,
0xf8, 0x2c, 0x34, 0x97, 0x7c, 0x15, 0x1a, 0xaf, 0x39, 0x0b, 0x4e, 0xc8, 0x11, 0xbd, 0xaf, 0x5a,
0x9a, 0x64, 0x89, 0x63, 0x49, 0x24, 0x97, 0x25, 0xd3, 0x01, 0xf8, 0xc7, 0x82, 0xfe, 0x90, 0x53,
0xe2, 0xab, 0x7e, 0x4c, 0xc6, 0xe1, 0x6b, 0x86, 0x6e, 0x02, 0xf2, 0xb4, 0x64, 0xe2, 0xb9, 0x9c,
0x4c, 0xc2, 0x38, 0x78, 0x45, 0x79, 0x1a, 0x8f, 0x35, 0x2f, 0xc3, 0x7e, 0xa3, 0xe5, 0xe8, 0x2a,
0xac, 0x16, 0xd1, 0xde, 0xd1, 0x51, 0xfa, 0xe4, 0xf4, 0x72, 0xe8, 0xf0, 0xe8, 0x08, 0x7d, 0x09,
0x5b, 0x45, 0x1c, 0xfd, 0x39, 0xf2, 0xb9, 0x6e, 0x8f, 0x93, 0x19, 0x75, 0x79, 0x1a, 0xbb, 0x41,
0x7e, 0x66, 0x3f, 0x03, 0x7c, 0x4f, 0x5d, 0x8e, 0xee, 0xc1, 0x85, 0x9a, 0xe3, 0x01, 0x0b, 0xe5,
0x54, 0x5f, 0x79, 0xd3, 0x39, 0x3f, 0xef, 0xfc, 0x63, 0x05, 0xc0, 0x33, 0xe8, 0x0d, 0xa7, 0x2e,
0x7f, 0x93, 0xd5, 0xf4, 0x27, 0xb0, 0xec, 0x06, 0x2a, 0x43, 0x4e, 0x08, 0x5e, 0x8a, 0x40, 0x77,
0xa1, 0x5b, 0xb0, 0x9e, 0x3e, 0x88, 0x5b, 0xe5, 0x0a, 0x29, 0x05, 0xd1, 0x81, 0x9c, 0x09, 0xbe,
0x03, 0x7d, 0x63, 0x3a, 0xbf, 0x7a, 0xc9, 0xdd, 0x50, 0xb8, 0x9e, 0x76, 0x21, 0x2b, 0x96, 0x5e,
0x41, 0x3a, 0x26, 0xf8, 0x47, 0xe8, 0xe8, 0x0a, 0xd3, 0x6f, 0xbe, 0x79, 0x8d, 0xad, 0x53, 0x5f,
0x63, 0x95, 0x15, 0xaa, 0x33, 0xa4, 0x3c, 0xe7, 0x66, 0x85, 0xda, 0xc7, 0xbf, 0x2c, 0x42, 0xd7,
0x94, 0x70, 0x7c, 0x28, 0x55, 0xa1, 0x30, 0xb5, 0xcc, 0x09, 0xb5, 0xf4, 0x7a, 0x4c, 0xd0, 0x6d,
0xd8, 0x10, 0x53, 0x3f, 0x8a, 0x54, 0x6d, 0x17, 0x8b, 0x3c, 0xc9, 0x26, 0x64, 0xf6, 0x9e, 0x65,
0xc5, 0x8e, 0xee, 0x40, 0x2f, 0x3b, 0xa1, 0xd9, 0x2c, 0xd5, 0xb2, 0x59, 0x31, 0xc0, 0x21, 0x13,
0x12, 0xdd, 0x83, 0xb5, 0xec, 0xa0, 0xe9, 0x0d, 0x8d, 0x13, 0x3a, 0xd8, 0xaa, 0x41, 0x9b, 0x9e,
0x71, 0xd3, 0x74, 0xb2, 0xa6, 0xee, 0x64, 0xe7, 0x4a, 0xa7, 0xb2, 0x80, 0x9a, 0x56, 0x46, 0xe0,
0xc2, 0x01, 0x0d, 0x89, 0x96, 0x0f, 0x59, 0xf8, 0xda, 0xe7, 0x81, 0x4e, 0x9b, 0xc2, 0x73, 0x43,
0x03, 0xd7, 0x3f, 0x34, 0xcf, 0x8d, 0x5e, 0xa0, 0x5d, 0x68, 0xea, 0xd0, 0xa4, 0x31, 0x1e, 0x1c,
0xb7, 0x91, 0xc4, 0xd4, 0x49, 0x60, 0xf8, 0x6f, 0x0b, 0xd6, 0x9f, 0x1e, 0xba, 0x1e, 0x2d, 0xf5,
0xe8, 0xda, 0x49, 0x63, 0x07, 0x7a, 0x7a, 0xc3, 0xb4, 0x82, 0x34, 0xce, 0x2b, 0x4a, 0x68, 0xba,
0x41, 0xb1, 0xc3, 0x2f, 0x9d, 0xa5, 0xc3, 0x67, 0x9e, 0x34, 0x8b, 0x9e, 0x54, 0x72, 0x7b, 0xf9,
0xc3, 0x72, 0xfb, 0x01, 0xa0, 0xa2, 0x5b, 0xd9, 0x93, 0x9b, 0x46, 0xc7, 0x3a, 0x53, 0x74, 0xf6,
0xfe, 0xb2, 0xa0, 0xab, 0x72, 0xf8, 0x80, 0xf2, 0x23, 0xdf, 0xa3, 0xe8, 0xae, 0x7e, 0x27, 0x74,
0xda, 0x6f, 0x55, 0x7d, 0x2a, 0x8c, 0xae, 0x76, 0x39, 0x99, 0x92, 0xd9, 0x6e, 0x01, 0x7d, 0x01,
0xad, 0x74, 0xbe, 0xac, 0x9c, 0x2e, 0x4f, 0x9d, 0xf6, 0xfa, 0xb1, 0x1a, 0xc2, 0x0b, 0xe8, 0x6b,
0xe8, 0x64, 0x93, 0x2c, 0xba, 0x78, 0x5c, 0x7f, 0x51, 0xc1, 0x5c, 0xf3, 0x7b, 0xbf, 0x5a, 0xb0,
0x59, 0x9e, 0x00, 0x8d, 0x5b, 0x3f, 0xc1, 0xff, 0xe6, 0x8c, 0x87, 0xe8, 0xe3, 0x92, 0x9a, 0xfa,
0xc1, 0xd4, 0xbe, 0x76, 0x3a, 0x30, 0xb9, 0x00, 0xc5, 0x62, 0x11, 0x36, 0xd3, 0xd1, 0x66, 0xe8,
0x4a, 0xf7, 0x90, 0xbd, 0x31, 0x2c, 0x46, 0xb0, 0x52, 0x9c, 0xe3, 0xd0, 0x1c, 0x2f, 0xec, 0x8f,
0x8e, 0x59, 0xaa, 0x8e, 0x55, 0x78, 0x01, 0x3d, 0x00, 0xc8, 0xc7, 0x38, 0x74, 0xa9, 0x1a, 0xea,
0xf2, 0x7c, 0x67, 0xcf, 0x9d, 0xba, 0xf0, 0x02, 0x7a, 0x09, 0xfd, 0xf2, 0xe0, 0x86, 0x70, 0x09,
0x39, 0x77, 0x08, 0xb4, 0x77, 0x4e, 0xc4, 0x64, 0x51, 0xf8, 0xc3, 0x82, 0xd5, 0x83, 0xb4, 0x3d,
0x18, 0xff, 0xc7, 0xd0, 0x36, 0xf3, 0x16, 0xba, 0x50, 0x25, 0x5d, 0x1c, 0xfb, 0xec, 0x8b, 0x35,
0xbb, 0x59, 0x04, 0x1e, 0x41, 0x27, 0x1b, 0x83, 0x2a, 0xc9, 0x52, 0x9d, 0xc7, 0xec, 0x4b, 0x75,
0xdb, 0x19, 0xd9, 0x3f, 0x2d, 0x58, 0x35, 0xc5, 0x6d, 0xc8, 0xbe, 0x84, 0x73, 0xf3, 0xc7, 0x88,
0xb9, 0xd7, 0x76, 0xa3, 0x4a, 0xf8, 0x84, 0xf9, 0x03, 0x2f, 0xa0, 0x11, 0xb4, 0x92, 0x91, 0x42,
0xa2, 0xab, 0xe5, 0x5a, 0xa8, 0x1b, 0x38, 0xec, 0x39, 0xed, 0x1b, 0x2f, 0xec, 0x3d, 0x87, 0xfe,
0x53, 0x77, 0x16, 0xd0, 0x30, 0xab, 0xe0, 0x21, 0x2c, 0x27, 0x6f, 0x1e, 0xb2, 0xcb, 0x9a, 0x8b,
0x6f, 0xb0, 0xbd, 0x35, 0x77, 0x2f, 0x0b, 0xc8, 0x14, 0x56, 0xf6, 0x55, 0x8f, 0x32, 0x4a, 0x5f,
0xa8, 0x5f, 0x82, 0x39, 0xad, 0x1a, 0x5d, 0xaf, 0x64, 0x43, 0x7d, 0x3b, 0xaf, 0xa9, 0xd9, 0x57,
0xb0, 0x3a, 0x9c, 0x52, 0xef, 0x2d, 0x8b, 0x33, 0x0f, 0x9e, 0x00, 0xe4, 0x9d, 0xad, 0x92, 0xdd,
0xc7, 0x3a, 0xb9, 0x7d, 0xb9, 0x76, 0xdf, 0x78, 0xf3, 0x6a, 0x59, 0xff, 0xd4, 0x7f, 0xf6, 0x6f,
0x00, 0x00, 0x00, 0xff, 0xff, 0x59, 0xab, 0x01, 0x43, 0xe2, 0x0f, 0x00, 0x00,
// AdsServiceClient is the client API for AdsService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type AdsServiceClient interface {
GetAds(ctx context.Context, in *AdsRequest, opts ...grpc.CallOption) (*AdsResponse, error)
}
type adsServiceClient struct {
cc *grpc.ClientConn
}
func NewAdsServiceClient(cc *grpc.ClientConn) AdsServiceClient {
return &adsServiceClient{cc}
}
func (c *adsServiceClient) GetAds(ctx context.Context, in *AdsRequest, opts ...grpc.CallOption) (*AdsResponse, error) {
out := new(AdsResponse)
err := c.cc.Invoke(ctx, "/hipstershop.AdsService/GetAds", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// AdsServiceServer is the server API for AdsService service.
type AdsServiceServer interface {
GetAds(context.Context, *AdsRequest) (*AdsResponse, error)
}
func RegisterAdsServiceServer(s *grpc.Server, srv AdsServiceServer) {
s.RegisterService(&_AdsService_serviceDesc, srv)
}
func _AdsService_GetAds_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(AdsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(AdsServiceServer).GetAds(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/hipstershop.AdsService/GetAds",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(AdsServiceServer).GetAds(ctx, req.(*AdsRequest))
}
return interceptor(ctx, in, info, handler)
}
var _AdsService_serviceDesc = grpc.ServiceDesc{
ServiceName: "hipstershop.AdsService",
HandlerType: (*AdsServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "GetAds",
Handler: _AdsService_GetAds_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "demo.proto",
}
func init() { proto.RegisterFile("demo.proto", fileDescriptor_demo_c812a73334c7ff0d) }
var fileDescriptor_demo_c812a73334c7ff0d = []byte{
// 1484 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xdd, 0x72, 0x13, 0xb7,
0x17, 0xcf, 0x26, 0x71, 0x1c, 0x1f, 0xc7, 0x76, 0xa2, 0x7f, 0x02, 0x66, 0xc3, 0x47, 0x50, 0x06,
0xfe, 0x50, 0x20, 0x30, 0x69, 0x67, 0xb8, 0x00, 0x4a, 0x33, 0x26, 0x63, 0x3c, 0x40, 0xa1, 0x1b,
0xe8, 0xd0, 0xa1, 0x53, 0xcf, 0xb2, 0x12, 0x78, 0x4b, 0x76, 0xb5, 0x48, 0xda, 0x0c, 0xe6, 0xb2,
0x7d, 0x80, 0xde, 0xf7, 0x11, 0xfa, 0x02, 0x7d, 0x87, 0xde, 0xf7, 0x15, 0xfa, 0x1c, 0x1d, 0x69,
0x57, 0xfb, 0x65, 0x3b, 0x81, 0x9b, 0xde, 0xad, 0xa4, 0x9f, 0xce, 0xf9, 0x9d, 0xa3, 0xf3, 0x65,
0x03, 0x10, 0x1a, 0xb0, 0x9d, 0x88, 0x33, 0xc9, 0x50, 0x73, 0xe4, 0x47, 0x42, 0x52, 0x2e, 0x46,
0x2c, 0xc2, 0xfb, 0xb0, 0xdc, 0x73, 0xb9, 0x1c, 0x48, 0x1a, 0xa0, 0x73, 0x00, 0x11, 0x67, 0x24,
0xf6, 0xe4, 0xd0, 0x27, 0x5d, 0x6b, 0xcb, 0xba, 0xd2, 0x70, 0x1a, 0xe9, 0xce, 0x80, 0x20, 0x1b,
0x96, 0xdf, 0xc7, 0x6e, 0x28, 0x7d, 0x39, 0xee, 0xce, 0x6f, 0x59, 0x57, 0x6a, 0x4e, 0xb6, 0xc6,
0xcf, 0xa1, 0xbd, 0x47, 0x88, 0x92, 0xe2, 0xd0, 0xf7, 0x31, 0x15, 0x12, 0x9d, 0x86, 0x7a, 0x2c,
0x28, 0xcf, 0x25, 0x2d, 0xa9, 0xe5, 0x80, 0xa0, 0xab, 0xb0, 0xe8, 0x4b, 0x1a, 0x68, 0x11, 0xcd,
0xdd, 0x8d, 0x9d, 0x02, 0x9b, 0x1d, 0x43, 0xc5, 0xd1, 0x10, 0x7c, 0x0d, 0x56, 0xf7, 0x83, 0x48,
0x8e, 0xd5, 0xf6, 0x49, 0x72, 0xf1, 0x55, 0x68, 0xf7, 0xa9, 0xfc, 0x24, 0xe8, 0x63, 0x58, 0x54,
0xb8, 0xd9, 0x1c, 0xaf, 0x41, 0x4d, 0x11, 0x10, 0xdd, 0xf9, 0xad, 0x85, 0xd9, 0x24, 0x13, 0x0c,
0xae, 0x43, 0x4d, 0xb3, 0xc4, 0xdf, 0x83, 0xfd, 0xd8, 0x17, 0xd2, 0xa1, 0x1e, 0x0b, 0x02, 0x1a,
0x12, 0x57, 0xfa, 0x2c, 0x14, 0x27, 0x3a, 0xe4, 0x02, 0x34, 0x73, 0xb7, 0x27, 0x2a, 0x1b, 0x0e,
0x64, 0x7e, 0x17, 0xf8, 0x6b, 0xd8, 0x9c, 0x2a, 0x57, 0x44, 0x2c, 0x14, 0xb4, 0x7a, 0xdf, 0x9a,
0xb8, 0xff, 0xbb, 0x05, 0xf5, 0x67, 0xc9, 0x12, 0xb5, 0x61, 0x3e, 0x23, 0x30, 0xef, 0x13, 0x84,
0x60, 0x31, 0x74, 0x03, 0xaa, 0x5f, 0xa3, 0xe1, 0xe8, 0x6f, 0xb4, 0x05, 0x4d, 0x42, 0x85, 0xc7,
0xfd, 0x48, 0x29, 0xea, 0x2e, 0xe8, 0xa3, 0xe2, 0x16, 0xea, 0x42, 0x3d, 0xf2, 0x3d, 0x19, 0x73,
0xda, 0x5d, 0xd4, 0xa7, 0x66, 0x89, 0x6e, 0x42, 0x23, 0xe2, 0xbe, 0x47, 0x87, 0xb1, 0x20, 0xdd,
0x9a, 0x7e, 0x62, 0x54, 0xf2, 0xde, 0x13, 0x16, 0xd2, 0xb1, 0xb3, 0xac, 0x41, 0x2f, 0x04, 0xc1,
0x0f, 0x61, 0x5d, 0x19, 0x97, 0xf2, 0xcb, 0xad, 0xba, 0x05, 0xcb, 0xa9, 0x09, 0x89, 0x49, 0xcd,
0xdd, 0xf5, 0x92, 0x9c, 0xf4, 0x82, 0x93, 0xa1, 0xf0, 0x36, 0xac, 0xf5, 0xa9, 0x11, 0x64, 0xbc,
0x5e, 0xb1, 0x17, 0xdf, 0x80, 0x8d, 0x03, 0xea, 0x72, 0x6f, 0x94, 0x2b, 0x4c, 0x80, 0xeb, 0x50,
0x7b, 0x1f, 0x53, 0x3e, 0x4e, 0xb1, 0xc9, 0x02, 0x3f, 0x84, 0x53, 0x55, 0x78, 0xca, 0x6f, 0x07,
0xea, 0x9c, 0x8a, 0xf8, 0xf0, 0x04, 0x7a, 0x06, 0x84, 0x43, 0xe8, 0xf4, 0xa9, 0xfc, 0x2e, 0x66,
0x92, 0x1a, 0x95, 0x3b, 0x50, 0x77, 0x09, 0xe1, 0x54, 0x08, 0xad, 0xb4, 0x2a, 0x62, 0x2f, 0x39,
0x73, 0x0c, 0xe8, 0xf3, 0xa2, 0x72, 0x0f, 0x56, 0x73, 0x7d, 0x29, 0xe7, 0x1b, 0xb0, 0xec, 0x31,
0x21, 0xf5, 0xdb, 0x58, 0x33, 0xdf, 0xa6, 0xae, 0x30, 0xea, 0x69, 0x18, 0xac, 0x1e, 0x8c, 0xfc,
0xe8, 0x29, 0x27, 0x94, 0xff, 0x27, 0x9c, 0xbf, 0x82, 0xb5, 0x82, 0xc2, 0x3c, 0xbc, 0x25, 0x77,
0xbd, 0x77, 0x7e, 0xf8, 0x36, 0xcf, 0x1d, 0x30, 0x5b, 0x03, 0x82, 0x7f, 0xb3, 0xa0, 0x9e, 0xea,
0x45, 0x97, 0xa0, 0x2d, 0x24, 0xa7, 0x54, 0x0e, 0x8b, 0x2c, 0x1b, 0x4e, 0x2b, 0xd9, 0x35, 0x30,
0x04, 0x8b, 0x9e, 0x29, 0x63, 0x0d, 0x47, 0x7f, 0xab, 0x00, 0x10, 0xd2, 0x95, 0x34, 0x8d, 0xf7,
0x64, 0xa1, 0x22, 0xdd, 0x63, 0x71, 0x28, 0xf9, 0xd8, 0x44, 0x7a, 0xba, 0x44, 0x67, 0x60, 0xf9,
0xa3, 0x1f, 0x0d, 0x3d, 0x46, 0xa8, 0x0e, 0xf4, 0x9a, 0x53, 0xff, 0xe8, 0x47, 0x3d, 0x46, 0x28,
0x7e, 0x09, 0x35, 0xed, 0x4a, 0xb4, 0x0d, 0x2d, 0x2f, 0xe6, 0x9c, 0x86, 0xde, 0x38, 0x01, 0x26,
0x6c, 0x56, 0xcc, 0xa6, 0x42, 0x2b, 0xc5, 0x71, 0xe8, 0x4b, 0xa1, 0xd9, 0x2c, 0x38, 0xc9, 0x42,
0xed, 0x86, 0x6e, 0xc8, 0x84, 0xa6, 0x53, 0x73, 0x92, 0x05, 0xee, 0xc3, 0xf9, 0x3e, 0x95, 0x07,
0x71, 0x14, 0x31, 0x2e, 0x29, 0xe9, 0x25, 0x72, 0x7c, 0x9a, 0xc7, 0xe5, 0x25, 0x68, 0x97, 0x54,
0x9a, 0x82, 0xd0, 0x2a, 0xea, 0x14, 0xf8, 0x47, 0x38, 0xd3, 0xcb, 0x36, 0xc2, 0x23, 0xca, 0x85,
0xcf, 0x42, 0xf3, 0xc8, 0x97, 0x61, 0xf1, 0x0d, 0x67, 0xc1, 0x31, 0x31, 0xa2, 0xcf, 0x55, 0x49,
0x93, 0x2c, 0x31, 0x2c, 0xf1, 0xe4, 0x92, 0x64, 0xda, 0x01, 0xff, 0x58, 0xd0, 0xee, 0x71, 0x4a,
0x7c, 0x55, 0x8f, 0xc9, 0x20, 0x7c, 0xc3, 0xd0, 0x75, 0x40, 0x9e, 0xde, 0x19, 0x7a, 0x2e, 0x27,
0xc3, 0x30, 0x0e, 0x5e, 0x53, 0x9e, 0xfa, 0x63, 0xd5, 0xcb, 0xb0, 0xdf, 0xea, 0x7d, 0x74, 0x19,
0x3a, 0x45, 0xb4, 0x77, 0x74, 0x94, 0xb6, 0x9c, 0x56, 0x0e, 0xed, 0x1d, 0x1d, 0xa1, 0x7b, 0xb0,
0x59, 0xc4, 0xd1, 0x0f, 0x91, 0xcf, 0x75, 0x79, 0x1c, 0x8e, 0xa9, 0xcb, 0x53, 0xdf, 0x75, 0xf3,
0x3b, 0xfb, 0x19, 0xe0, 0x07, 0xea, 0x72, 0x74, 0x1f, 0xce, 0xce, 0xb8, 0x1e, 0xb0, 0x50, 0x8e,
0xf4, 0x93, 0xd7, 0x9c, 0x33, 0xd3, 0xee, 0x3f, 0x51, 0x00, 0x3c, 0x86, 0x56, 0x6f, 0xe4, 0xf2,
0xb7, 0x59, 0x4e, 0x7f, 0x01, 0x4b, 0x6e, 0xa0, 0x22, 0xe4, 0x18, 0xe7, 0xa5, 0x08, 0x74, 0x17,
0x9a, 0x05, 0xed, 0x69, 0x43, 0xdc, 0x2c, 0x67, 0x48, 0xc9, 0x89, 0x0e, 0xe4, 0x4c, 0xf0, 0x6d,
0x68, 0x1b, 0xd5, 0xf9, 0xd3, 0x4b, 0xee, 0x86, 0xc2, 0xf5, 0xb4, 0x09, 0x59, 0xb2, 0xb4, 0x0a,
0xbb, 0x03, 0x82, 0x7f, 0x82, 0x86, 0xce, 0x30, 0xdd, 0xf3, 0x4d, 0x37, 0xb6, 0x4e, 0xec, 0xc6,
0x2a, 0x2a, 0x54, 0x65, 0x48, 0x79, 0x4e, 0x8d, 0x0a, 0x75, 0x8e, 0x7f, 0x99, 0x87, 0xa6, 0x49,
0xe1, 0xf8, 0x50, 0xaa, 0x44, 0x61, 0x6a, 0x99, 0x13, 0xaa, 0xeb, 0xf5, 0x80, 0xa0, 0x5b, 0xb0,
0x2e, 0x46, 0x7e, 0x14, 0xa9, 0xdc, 0x2e, 0x26, 0x79, 0x12, 0x4d, 0xc8, 0x9c, 0x3d, 0xcf, 0x92,
0x1d, 0xdd, 0x86, 0x56, 0x76, 0x43, 0xb3, 0x59, 0x98, 0xc9, 0x66, 0xc5, 0x00, 0x7b, 0x4c, 0x48,
0x74, 0x1f, 0x56, 0xb3, 0x8b, 0xa6, 0x36, 0x2c, 0x1e, 0x53, 0xc1, 0x3a, 0x06, 0x6d, 0x6a, 0xc6,
0x75, 0x53, 0xc9, 0x6a, 0xba, 0x92, 0x9d, 0x2a, 0xdd, 0xca, 0x1c, 0x6a, 0x4a, 0x19, 0x81, 0xb3,
0x07, 0x34, 0x24, 0x7a, 0xbf, 0xc7, 0xc2, 0x37, 0x3e, 0x0f, 0x74, 0xd8, 0x14, 0xda, 0x0d, 0x0d,
0x5c, 0xff, 0xd0, 0xb4, 0x1b, 0xbd, 0x40, 0x3b, 0x50, 0xd3, 0xae, 0x49, 0x7d, 0xdc, 0x9d, 0xd4,
0x91, 0xf8, 0xd4, 0x49, 0x60, 0xf8, 0x6f, 0x0b, 0xd6, 0x9e, 0x1d, 0xba, 0x1e, 0x2d, 0xd5, 0xe8,
0x99, 0x93, 0xc6, 0x36, 0xb4, 0xf4, 0x81, 0x29, 0x05, 0xa9, 0x9f, 0x57, 0xd4, 0xa6, 0xa9, 0x06,
0xc5, 0x0a, 0xbf, 0xf0, 0x29, 0x15, 0x3e, 0xb3, 0xa4, 0x56, 0xb4, 0xa4, 0x12, 0xdb, 0x4b, 0x9f,
0x17, 0xdb, 0x0f, 0x00, 0x15, 0xcd, 0xca, 0x5a, 0x6e, 0xea, 0x1d, 0xeb, 0xd3, 0xbc, 0x73, 0x13,
0x60, 0x8f, 0x64, 0x0d, 0xfe, 0x22, 0xac, 0x78, 0x2c, 0x94, 0xf4, 0x83, 0x1c, 0xbe, 0xa3, 0x63,
0x53, 0x16, 0x9b, 0xe9, 0xde, 0x23, 0x3a, 0x16, 0xf8, 0x16, 0x34, 0xf5, 0x85, 0x54, 0xdf, 0x45,
0x58, 0x70, 0x89, 0x69, 0xef, 0x9d, 0x8a, 0x17, 0x1c, 0x75, 0x86, 0xef, 0xc0, 0xfc, 0x1e, 0x51,
0xa2, 0x15, 0x77, 0x4e, 0x3d, 0x39, 0x8c, 0xb9, 0x79, 0xd3, 0xa6, 0xd9, 0x7b, 0xc1, 0x0f, 0x55,
0xc7, 0x51, 0x6a, 0x4c, 0xc7, 0x51, 0xdf, 0xbb, 0x7f, 0x59, 0xd0, 0x54, 0x39, 0x76, 0x40, 0xf9,
0x91, 0xef, 0x51, 0x74, 0x57, 0xf7, 0x31, 0x9d, 0x96, 0x9b, 0x55, 0x9f, 0x17, 0x46, 0x6b, 0xbb,
0x1c, 0xec, 0xc9, 0xec, 0x39, 0x87, 0xee, 0x40, 0x3d, 0x9d, 0x7f, 0x2b, 0xb7, 0xcb, 0x53, 0xb1,
0xbd, 0x36, 0x91, 0xe3, 0x78, 0x0e, 0x7d, 0x03, 0x8d, 0x6c, 0xd2, 0x46, 0xe7, 0x26, 0xe5, 0x17,
0x05, 0x4c, 0x55, 0xbf, 0xfb, 0xab, 0x05, 0x1b, 0xe5, 0x09, 0xd5, 0x98, 0xf5, 0x33, 0xfc, 0x6f,
0xca, 0xf8, 0x8a, 0xfe, 0x5f, 0x12, 0x33, 0x7b, 0x70, 0xb6, 0xaf, 0x9c, 0x0c, 0x4c, 0x1e, 0x4c,
0xb1, 0x98, 0x87, 0x8d, 0x74, 0xf4, 0xea, 0xb9, 0xd2, 0x3d, 0x64, 0x6f, 0x0d, 0x8b, 0x3e, 0xac,
0x14, 0xe7, 0x4c, 0x34, 0xc5, 0x0a, 0xfb, 0xe2, 0x84, 0xa6, 0xea, 0xd8, 0x87, 0xe7, 0xd0, 0x03,
0x80, 0x7c, 0xcc, 0x44, 0xe7, 0xab, 0xae, 0x2e, 0xcf, 0x9f, 0xf6, 0xd4, 0xa9, 0x10, 0xcf, 0xa1,
0x57, 0xd0, 0x2e, 0x0f, 0x96, 0x08, 0x97, 0x90, 0x53, 0x87, 0x54, 0x7b, 0xfb, 0x58, 0x4c, 0xe6,
0x85, 0x3f, 0x2c, 0xe8, 0x1c, 0xa4, 0xe5, 0xcb, 0xd8, 0x3f, 0x80, 0x65, 0x33, 0x0f, 0xa2, 0xb3,
0x55, 0xd2, 0xc5, 0xb1, 0xd4, 0x3e, 0x37, 0xe3, 0x34, 0xf3, 0xc0, 0x63, 0x68, 0x64, 0x63, 0x5a,
0x25, 0x58, 0xaa, 0xf3, 0xa2, 0x7d, 0x7e, 0xd6, 0x71, 0x46, 0xf6, 0x4f, 0x0b, 0x3a, 0xa6, 0xf8,
0x18, 0xb2, 0xaf, 0xe0, 0xd4, 0xf4, 0x31, 0x67, 0xea, 0xb3, 0x5d, 0xab, 0x12, 0x3e, 0x66, 0x3e,
0xc2, 0x73, 0xa8, 0x0f, 0xf5, 0x64, 0xe4, 0x91, 0xe8, 0x72, 0x39, 0x17, 0x66, 0x0d, 0x44, 0xf6,
0x94, 0xf6, 0x82, 0xe7, 0x76, 0x5f, 0x40, 0xfb, 0x99, 0x3b, 0x0e, 0x68, 0x98, 0x65, 0x70, 0x0f,
0x96, 0x92, 0x9e, 0x8c, 0xec, 0xb2, 0xe4, 0xe2, 0x8c, 0x60, 0x6f, 0x4e, 0x3d, 0xcb, 0x1c, 0x32,
0x82, 0x95, 0x7d, 0x55, 0x43, 0x8d, 0xd0, 0x97, 0xea, 0x27, 0xcb, 0x94, 0x56, 0x82, 0xae, 0x56,
0xa2, 0x61, 0x76, 0xbb, 0x99, 0x91, 0xb3, 0xaf, 0xa1, 0xd3, 0x1b, 0x51, 0xef, 0x1d, 0x8b, 0x33,
0x0b, 0x9e, 0x02, 0xe4, 0x95, 0xb7, 0x12, 0xdd, 0x13, 0x9d, 0xc6, 0xbe, 0x30, 0xf3, 0x3c, 0xb3,
0xe6, 0x91, 0x2e, 0xc2, 0x46, 0xfc, 0x3d, 0x58, 0xea, 0xab, 0x31, 0x5c, 0xa0, 0xd3, 0x95, 0x0a,
0x97, 0xc5, 0x78, 0x77, 0xf2, 0xc0, 0x08, 0x7b, 0xbd, 0xa4, 0xff, 0xc1, 0xf8, 0xf2, 0xdf, 0x00,
0x00, 0x00, 0xff, 0xff, 0x0d, 0x93, 0x0f, 0x58, 0xcf, 0x10, 0x00, 0x00,
}

View file

@ -15,8 +15,10 @@
package main
import (
"context"
"fmt"
"html/template"
"math/rand"
"net/http"
"os"
"strconv"
@ -78,6 +80,7 @@ func (fe *frontendServer) homeHandler(w http.ResponseWriter, r *http.Request) {
"products": ps,
"cart_size": len(cart),
"banner_color": os.Getenv("BANNER_COLOR"), // illustrates canary deployments
"ad": fe.chooseAd(r.Context(), log),
}); err != nil {
log.Error(err)
}
@ -130,6 +133,7 @@ func (fe *frontendServer) productHandler(w http.ResponseWriter, r *http.Request)
if err := templates.ExecuteTemplate(w, "product", map[string]interface{}{
"session_id": sessionID(r),
"request_id": r.Context().Value(ctxKeyRequestID{}),
"ad": fe.chooseAd(r.Context(), log),
"user_currency": currentCurrency(r),
"currencies": currencies,
"product": product,
@ -340,6 +344,17 @@ func (fe *frontendServer) setCurrencyHandler(w http.ResponseWriter, r *http.Requ
w.WriteHeader(http.StatusFound)
}
// chooseAd queries for advertisements available and randomly chooses one, if
// available. It ignores the error retrieving the ad since it is not critical.
func (fe *frontendServer) chooseAd(ctx context.Context, log logrus.FieldLogger) *pb.Ad {
ads, err := fe.getAd(ctx)
if err != nil {
log.WithField("error", err).Warn("failed to retrieve ads")
return nil
}
return ads[rand.Intn(len(ads))]
}
func renderHTTPError(log logrus.FieldLogger, r *http.Request, w http.ResponseWriter, err error, code int) {
log.WithField("error", err).Error("request error")
errMsg := fmt.Sprintf("%+v", err)

View file

@ -73,6 +73,9 @@ type frontendServer struct {
shippingSvcAddr string
shippingSvcConn *grpc.ClientConn
adSvcAddr string
adSvcConn *grpc.ClientConn
}
func main() {
@ -96,6 +99,7 @@ func main() {
mustMapEnv(&svc.recommendationSvcAddr, "RECOMMENDATION_SERVICE_ADDR")
mustMapEnv(&svc.checkoutSvcAddr, "CHECKOUT_SERVICE_ADDR")
mustMapEnv(&svc.shippingSvcAddr, "SHIPPING_SERVICE_ADDR")
mustMapEnv(&svc.adSvcAddr, "AD_SERVICE_ADDR")
mustConnGRPC(ctx, &svc.currencySvcConn, svc.currencySvcAddr)
mustConnGRPC(ctx, &svc.productCatalogSvcConn, svc.productCatalogSvcAddr)
@ -103,6 +107,7 @@ func main() {
mustConnGRPC(ctx, &svc.recommendationSvcConn, svc.recommendationSvcAddr)
mustConnGRPC(ctx, &svc.shippingSvcConn, svc.shippingSvcAddr)
mustConnGRPC(ctx, &svc.checkoutSvcConn, svc.checkoutSvcAddr)
mustConnGRPC(ctx, &svc.adSvcConn, svc.adSvcAddr)
r := mux.NewRouter()
r.HandleFunc("/", svc.homeHandler).Methods(http.MethodGet, http.MethodHead)

View file

@ -114,3 +114,22 @@ func (fe *frontendServer) getRecommendations(ctx context.Context, userID string,
}
return out, err
}
func (fe *frontendServer) getAd(ctx context.Context) ([]*pb.Ad, error) {
return []*pb.Ad{
&pb.Ad{
Text: "Try this OG insta camera from 1960s!",
RedirectUrl: "https://en.wikipedia.org/wiki/Instant_camera#Polaroid_cameras",
},
&pb.Ad{
Text: "Check out the new instagrammy vacation destinations!",
RedirectUrl: "https://en.wikipedia.org/wiki/Italy",
},
}, nil
// TODO(rghetia): uncomment below and revove the code above
// resp, err := pb.NewAdsServiceClient(fe.adSvcConn).GetAds(ctx, &pb.AdsRequest{
// ContextKeys: nil,
// })
// return resp.GetAds(), errors.Wrap(err, "failed to get ads")
}

View file

@ -0,0 +1,10 @@
{{ define "text_ad" }}
<div class="container">
<div class="alert alert-dark" role="alert">
<strong>Advertisement:</strong>
<a href="{{.RedirectUrl}}" rel="nofollow" target="_blank" class="alert-link">
{{.Text}}
</a>
</div>
</div>
{{ end }}

View file

@ -51,6 +51,9 @@
</div>
{{ end }}
</div>
<div class="row">
{{ with $.ad }}{{ template "text_ad" . }}{{ end}}
</div>
</div>
</div>
</main>

View file

@ -47,9 +47,10 @@
{{ template "recommendations" $.recommendations }}
{{ end }}
{{ with $.ad }}{{ template "text_ad" . }}{{ end}}
</div>
</div>
</main>
{{ template "footer" . }}
{{ end }}