diff options
Diffstat (limited to 'go/internal/gitlabnet/twofactorrecover/client.go')
-rw-r--r-- | go/internal/gitlabnet/twofactorrecover/client.go | 31 |
1 files changed, 8 insertions, 23 deletions
diff --git a/go/internal/gitlabnet/twofactorrecover/client.go b/go/internal/gitlabnet/twofactorrecover/client.go index d26b141..f90a85c 100644 --- a/go/internal/gitlabnet/twofactorrecover/client.go +++ b/go/internal/gitlabnet/twofactorrecover/client.go @@ -1,10 +1,8 @@ package twofactorrecover import ( - "encoding/json" "errors" "fmt" - "io/ioutil" "net/http" "gitlab.com/gitlab-org/gitlab-shell/go/internal/command/commandargs" @@ -46,38 +44,25 @@ func (c *Client) GetRecoveryCodes(args *commandargs.CommandArgs) ([]string, erro } response, err := c.client.Post("/two_factor_recovery_codes", requestBody) - if err != nil { return nil, err } - defer response.Body.Close() - parsedResponse, err := c.parseResponse(response) - - if err != nil { - return nil, fmt.Errorf("Parsing failed") - } - if parsedResponse.Success { - return parsedResponse.RecoveryCodes, nil - } else { - return nil, errors.New(parsedResponse.Message) - } + return parse(response) } -func (c *Client) parseResponse(resp *http.Response) (*Response, error) { - parsedResponse := &Response{} - body, err := ioutil.ReadAll(resp.Body) - - if err != nil { +func parse(hr *http.Response) ([]string, error) { + response := &Response{} + if err := gitlabnet.ParseJSON(hr, response); err != nil { return nil, err } - if err := json.Unmarshal(body, parsedResponse); err != nil { - return nil, err - } else { - return parsedResponse, nil + if !response.Success { + return nil, errors.New(response.Message) } + + return response.RecoveryCodes, nil } func (c *Client) getRequestBody(args *commandargs.CommandArgs) (*RequestBody, error) { |