Register will register the extension with the Extensions API
(ctx context.Context, filename string)
| 72 | |
| 73 | // Register will register the extension with the Extensions API |
| 74 | func (e *Client) Register(ctx context.Context, filename string) (*RegisterResponse, error) { |
| 75 | const action = "/register" |
| 76 | url := e.baseURL + action |
| 77 | |
| 78 | reqBody, err := json.Marshal(map[string]interface{}{ |
| 79 | "events": []EventType{Invoke, Shutdown}, |
| 80 | }) |
| 81 | if err != nil { |
| 82 | return nil, err |
| 83 | } |
| 84 | httpReq, err := http.NewRequestWithContext(ctx, "POST", url, bytes.NewBuffer(reqBody)) |
| 85 | if err != nil { |
| 86 | return nil, err |
| 87 | } |
| 88 | httpReq.Header.Set(extensionNameHeader, filename) |
| 89 | httpRes, err := e.httpClient.Do(httpReq) |
| 90 | if err != nil { |
| 91 | return nil, err |
| 92 | } |
| 93 | if httpRes.StatusCode != 200 { |
| 94 | return nil, fmt.Errorf("request failed with status %s", httpRes.Status) |
| 95 | } |
| 96 | defer httpRes.Body.Close() |
| 97 | body, err := ioutil.ReadAll(httpRes.Body) |
| 98 | if err != nil { |
| 99 | return nil, err |
| 100 | } |
| 101 | res := RegisterResponse{} |
| 102 | err = json.Unmarshal(body, &res) |
| 103 | if err != nil { |
| 104 | return nil, err |
| 105 | } |
| 106 | e.extensionID = httpRes.Header.Get(extensionIdentiferHeader) |
| 107 | print(e.extensionID) |
| 108 | return &res, nil |
| 109 | } |
| 110 | |
| 111 | // NextEvent blocks while long polling for the next lambda invoke or shutdown |
| 112 | func (e *Client) NextEvent(ctx context.Context) (*NextEventResponse, error) { |