in go-example-extension-sam-layer/go-example-extension/extension/client.go [74:109]
func (e *Client) Register(ctx context.Context, filename string) (*RegisterResponse, error) {
const action = "/register"
url := e.baseURL + action
reqBody, err := json.Marshal(map[string]interface{}{
"events": []EventType{Invoke, Shutdown},
})
if err != nil {
return nil, err
}
httpReq, err := http.NewRequestWithContext(ctx, "POST", url, bytes.NewBuffer(reqBody))
if err != nil {
return nil, err
}
httpReq.Header.Set(extensionNameHeader, filename)
httpRes, err := e.httpClient.Do(httpReq)
if err != nil {
return nil, err
}
if httpRes.StatusCode != 200 {
return nil, fmt.Errorf("request failed with status %s", httpRes.Status)
}
defer httpRes.Body.Close()
body, err := ioutil.ReadAll(httpRes.Body)
if err != nil {
return nil, err
}
res := RegisterResponse{}
err = json.Unmarshal(body, &res)
if err != nil {
return nil, err
}
e.extensionID = httpRes.Header.Get(extensionIdentiferHeader)
print(e.extensionID)
return &res, nil
}