(name string, tunnelSecret []byte)
| 90 | } |
| 91 | |
| 92 | func (r *RESTClient) CreateTunnel(name string, tunnelSecret []byte) (*TunnelWithToken, error) { |
| 93 | if name == "" { |
| 94 | return nil, errors.New("tunnel name required") |
| 95 | } |
| 96 | if _, err := uuid.Parse(name); err == nil { |
| 97 | return nil, errors.New("you cannot use UUIDs as tunnel names") |
| 98 | } |
| 99 | body := &newTunnel{ |
| 100 | Name: name, |
| 101 | TunnelSecret: tunnelSecret, |
| 102 | } |
| 103 | |
| 104 | resp, err := r.sendRequest("POST", r.baseEndpoints.accountLevel, body) |
| 105 | if err != nil { |
| 106 | return nil, errors.Wrap(err, "REST request failed") |
| 107 | } |
| 108 | defer resp.Body.Close() |
| 109 | |
| 110 | switch resp.StatusCode { |
| 111 | case http.StatusOK: |
| 112 | var tunnel TunnelWithToken |
| 113 | if serdeErr := parseResponse(resp.Body, &tunnel); serdeErr != nil { |
| 114 | return nil, serdeErr |
| 115 | } |
| 116 | return &tunnel, nil |
| 117 | case http.StatusConflict: |
| 118 | return nil, ErrTunnelNameConflict |
| 119 | } |
| 120 | |
| 121 | return nil, r.statusCodeToError("create tunnel", resp) |
| 122 | } |
| 123 | |
| 124 | func (r *RESTClient) GetTunnel(tunnelID uuid.UUID) (*Tunnel, error) { |
| 125 | endpoint := r.baseEndpoints.accountLevel |
nothing calls this directly
no test coverage detected