From 36567f02b8ba9cb40f2df369b62a4fe5f046b69c Mon Sep 17 00:00:00 2001 From: Reiley Yang Date: Fri, 28 Sep 2018 12:31:56 -0700 Subject: [PATCH] add golang example --- golang/main.go | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 golang/main.go diff --git a/golang/main.go b/golang/main.go new file mode 100644 index 0000000..79925f0 --- /dev/null +++ b/golang/main.go @@ -0,0 +1,44 @@ +package main + +import ( + "bytes" + "encoding/json" + "io/ioutil" + "log" + "net/http" + + "go.opencensus.io/plugin/ochttp" + "go.opencensus.io/plugin/ochttp/propagation/tracecontext" + "go.opencensus.io/trace" +) + +func main() { + trace.ApplyConfig(trace.Config{DefaultSampler: trace.AlwaysSample()}) + + client := &http.Client{Transport: &ochttp.Transport{Propagation: &tracecontext.HTTPFormat{}}} + + http.HandleFunc("/", func(writer http.ResponseWriter, incomingRequest *http.Request) { + span := trace.FromContext(incomingRequest.Context()) + defer span.End() + + body, err := ioutil.ReadAll(incomingRequest.Body) + if err != nil { + panic(err) + } + + var data []map[string]interface{} + if err := json.Unmarshal(body, &data); err != nil { + panic(err) + } + for _, item := range data { + url, _ := item["url"].(string) + data, _ := json.Marshal(item["arguments"]) + outgoingRequest, _ := http.NewRequest("POST", url, bytes.NewBuffer(data)) + resp, err := client.Do(outgoingRequest.WithContext(incomingRequest.Context())) + if err == nil { + resp.Body.Close() + } + } + }) + log.Fatal(http.ListenAndServe("127.0.0.1:5000", &ochttp.Handler{Propagation: &tracecontext.HTTPFormat{}})) +}