blob: 26806667fc0dea4f6cc5802e42007e8a9a844e07 [file] [log] [blame] [edit]
/**
Example Action feed for Google Order Redirect. Create "generated" directory for generated proto classes.
Download lastest version of protoc from https://github.com/protocolbuffers/protobuf/releases.
Generate proto classes with:
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
protoc --proto_path=../proto/ --go_out=generated ../proto/action.proto
See https://protobuf.dev/reference/go/go-generated/ for more details.
**/
package main
import (
pb "feed/app/generated/google/madden/ingestion"
"fmt"
"google.golang.org/protobuf/encoding/protojson"
)
func main() {
feedJSON := createFeed()
fmt.Println(feedJSON)
}
func createFeed() string {
// Create ActionDetail
// Example using one link for both delivery and takeout
merchantNameCombined := "merchant-1"
linkIDCombined := "merchant-1-takeout-delivery-action"
urlCombined := "http://provider.com/merchant-1"
actionCombined := &pb.ActionDetail{
EntityId: &merchantNameCombined,
LinkId: &linkIDCombined,
Url: &urlCombined,
Actions: []*pb.Action{{
ActionInfo: &pb.Action_FoodOrderingInfo{
FoodOrderingInfo: &pb.FoodOrderingInfo{
ServiceType: pb.FoodOrderingInfo_DELIVERY,
},
}}, {
ActionInfo: &pb.Action_FoodOrderingInfo{
FoodOrderingInfo: &pb.FoodOrderingInfo{
ServiceType: pb.FoodOrderingInfo_TAKEOUT,
},
}},
},
}
// Example using a separate link for delivery
merchantNameDelivery := "merchant-2"
linkIDDelivery := "merchant-2-delivery-action"
urlDelivery := "http://provider.com/merchant-2/delivery"
actionDelivery := &pb.ActionDetail{
EntityId: &merchantNameDelivery,
LinkId: &linkIDDelivery,
Url: &urlDelivery,
Actions: []*pb.Action{{
ActionInfo: &pb.Action_FoodOrderingInfo{
FoodOrderingInfo: &pb.FoodOrderingInfo{
ServiceType: pb.FoodOrderingInfo_DELIVERY,
},
}},
},
}
// Create ActionFeed
feed := &pb.ActionFeed{
Data: []*pb.ActionDetail{
actionCombined,
actionDelivery,
},
}
// Serialize to JSON string
marshalOptions := protojson.MarshalOptions{
UseProtoNames: true,
}
jsonBytes, _ := marshalOptions.Marshal(feed)
return string(jsonBytes)
}
// [END create_feed]