summaryrefslogtreecommitdiff
path: root/go/internal/gitlabnet/twofactorrecover/client.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/internal/gitlabnet/twofactorrecover/client.go')
-rw-r--r--go/internal/gitlabnet/twofactorrecover/client.go31
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) {