Skip to content

Commit ff5daac

Browse files
author
Jon Bernard
committed
align whole flow to use map[string][]string for headers
1 parent eb2f808 commit ff5daac

File tree

5 files changed

+194
-88
lines changed

5 files changed

+194
-88
lines changed

ldk/go/examples/network/loop/loop.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@ func (c *Loop) LoopStart(sidekick ldk.Sidekick) error {
7373
URL: "https://api.fda.gov/food/enforcement.json?search=report_date:[" + now.AddDate(0, -3, 0).Format("20060102") + "+TO+" + now.Format("20060102") + "]&limit=1",
7474
Method: "GET",
7575
Body: nil,
76-
Headers: map[string]string{
77-
"A-Header-Name": "a header value",
76+
Headers: map[string][]string{
77+
"A-Header-Name": []string{"a header value", "another header value"},
7878
},
7979
})
8080
if err != nil {

ldk/go/networkClient.go

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"context"
55

66
"github.com/open-olive/loop-development-kit/ldk/go/proto"
7-
structpb "google.golang.org/protobuf/types/known/structpb"
87
)
98

109
// NetworkClient is the client used by the NetworkService
@@ -17,33 +16,55 @@ type NetworkClient struct {
1716
type HTTPResponse struct {
1817
ResponseCode int
1918
Data []byte
20-
Headers map[string]*structpb.ListValue
19+
Headers map[string][]string
2120
}
2221

2322
// HTTPRequest is the structure received from HttpRequest
2423
type HTTPRequest struct {
2524
URL string
2625
Method string
2726
Body []byte
28-
Headers map[string]string
27+
Headers map[string][]string
2928
}
3029

3130
func (n *NetworkClient) HTTPRequest(ctx context.Context, req *HTTPRequest) (*HTTPResponse, error) {
31+
reqHeaders := make(map[string]*proto.HTTPHeader)
32+
33+
for name, values := range req.Headers {
34+
header := make([]string, len(values))
35+
for index, value := range values {
36+
header[index] = value
37+
}
38+
reqHeaders[name] = &proto.HTTPHeader{
39+
Values: header,
40+
}
41+
}
42+
3243
resp, err := n.client.HTTPRequest(ctx, &proto.HTTPRequestMsg{
3344
Session: n.session.ToProto(),
3445
Url: req.URL,
3546
Method: req.Method,
3647
Body: req.Body,
37-
Headers: req.Headers,
48+
Headers: reqHeaders,
3849
})
3950

4051
if err != nil {
4152
return nil, err
4253
}
4354

55+
respHeaders := make(map[string][]string)
56+
57+
for name, values := range resp.Headers {
58+
header := make([]string, len(values.Values))
59+
for index, value := range values.Values {
60+
header[index] = value
61+
}
62+
respHeaders[name] = header
63+
}
64+
4465
return &HTTPResponse{
4566
ResponseCode: int(resp.ResponseCode),
4667
Data: resp.Data,
47-
Headers: resp.Headers,
68+
Headers: respHeaders,
4869
}, err
4970
}

ldk/go/networkServer.go

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,45 @@ func (ns *NetworkServer) HTTPRequest(ctx context.Context, req *proto.HTTPRequest
1616
return nil, err
1717
}
1818

19+
reqHeaders := make(map[string][]string)
20+
21+
for name, values := range req.Headers {
22+
header := make([]string, len(values.Values))
23+
for index, value := range values.Values {
24+
header[index] = value
25+
}
26+
reqHeaders[name] = header
27+
}
28+
1929
resp, err := ns.Impl.HTTPRequest(
2030
context.WithValue(ctx, Session{}, session),
2131
&HTTPRequest{
2232
URL: req.Url,
2333
Method: req.Method,
2434
Body: req.Body,
25-
Headers: req.Headers,
35+
Headers: reqHeaders,
2636
},
2737
)
2838
if err != nil {
2939
return nil, err
3040
}
3141

42+
respHeaders := make(map[string]*proto.HTTPHeader)
43+
44+
for name, values := range resp.Headers {
45+
header := make([]string, len(values))
46+
for index, value := range values {
47+
header[index] = value
48+
}
49+
respHeaders[name] = &proto.HTTPHeader{
50+
Values: header,
51+
}
52+
}
53+
3254
return &proto.HTTPResponseMsg{
3355
ResponseCode: uint32(resp.ResponseCode),
3456
Data: resp.Data,
35-
Headers: resp.Headers,
57+
Headers: respHeaders,
3658
}, nil
3759

3860
}

0 commit comments

Comments
 (0)