zephinzer/dev

View on GitHub
pkg/gitlab/account.go

Summary

Maintainability
A
3 hrs
Test Coverage
C
76%
package gitlab

import (
    "encoding/json"
    "fmt"
    "io/ioutil"

    "github.com/zephinzer/dev/pkg/utils/request"
)

func GetAccount(client request.Doer, hostname, accessToken string) (*APIv4UserResponse, error) {
    requestObject, createRequestError := request.Create(request.CreateOptions{
        URL: fmt.Sprintf("https://%s/api/v4/user", hostname),
        Headers: map[string][]string{
            "Content-Type":  {"application/json"},
            "PRIVATE-TOKEN": {accessToken},
        },
    })
    if createRequestError != nil {
        return nil, fmt.Errorf("failed to create request: %s", createRequestError)
    }
    responseObject, doError := client.Do(requestObject)
    if doError != nil {
        return nil, fmt.Errorf("failed to execute request: %s", doError)
    }
    defer responseObject.Body.Close()
    responseBody, bodyReadError := ioutil.ReadAll(responseObject.Body)
    if bodyReadError != nil {
        return nil, fmt.Errorf("failed to process response body: %s", bodyReadError)
    }
    var response APIv4UserResponse
    unmarshalError := json.Unmarshal(responseBody, &response)
    if unmarshalError != nil {
        return nil, fmt.Errorf("failed to unmarshal response: %s (raw object: '%s')", unmarshalError, string(responseBody))
    }
    return &response, nil
}