forked from gitea/go-sdk
688ee1978e
Add Docs on how to deal with this breaking change doResponse should return responce in all cases, to prosses things manualy if wanted helper func return http response Co-authored-by: 6543 <6543@obermui.de> Reviewed-on: gitea/go-sdk#416 Reviewed-by: Andrew Thornton <art27@cantab.net> Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
81 lines
2.5 KiB
Go
81 lines
2.5 KiB
Go
// Copyright 2014 The Gogs Authors. All rights reserved.
|
|
// Copyright 2019 The Gitea Authors. All rights reserved.
|
|
// Use of this source code is governed by a MIT-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package gitea
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"fmt"
|
|
"reflect"
|
|
)
|
|
|
|
// AccessToken represents an API access token.
|
|
type AccessToken struct {
|
|
ID int64 `json:"id"`
|
|
Name string `json:"name"`
|
|
Token string `json:"sha1"`
|
|
TokenLastEight string `json:"token_last_eight"`
|
|
}
|
|
|
|
// ListAccessTokensOptions options for listing a users's access tokens
|
|
type ListAccessTokensOptions struct {
|
|
ListOptions
|
|
}
|
|
|
|
// ListAccessTokens lists all the access tokens of user
|
|
func (c *Client) ListAccessTokens(opts ListAccessTokensOptions) ([]*AccessToken, *Response, error) {
|
|
if len(c.username) == 0 {
|
|
return nil, nil, fmt.Errorf("\"username\" not set: only BasicAuth allowed")
|
|
}
|
|
opts.setDefaults()
|
|
tokens := make([]*AccessToken, 0, opts.PageSize)
|
|
resp, err := c.getParsedResponse("GET", fmt.Sprintf("/users/%s/tokens?%s", c.username, opts.getURLQuery().Encode()), jsonHeader, nil, &tokens)
|
|
return tokens, resp, err
|
|
}
|
|
|
|
// CreateAccessTokenOption options when create access token
|
|
type CreateAccessTokenOption struct {
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
// CreateAccessToken create one access token with options
|
|
func (c *Client) CreateAccessToken(opt CreateAccessTokenOption) (*AccessToken, *Response, error) {
|
|
if len(c.username) == 0 {
|
|
return nil, nil, fmt.Errorf("\"username\" not set: only BasicAuth allowed")
|
|
}
|
|
body, err := json.Marshal(&opt)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
t := new(AccessToken)
|
|
resp, err := c.getParsedResponse("POST", fmt.Sprintf("/users/%s/tokens", c.username), jsonHeader, bytes.NewReader(body), t)
|
|
return t, resp, err
|
|
}
|
|
|
|
// DeleteAccessToken delete token, identified by ID and if not available by name
|
|
func (c *Client) DeleteAccessToken(value interface{}) (*Response, error) {
|
|
if len(c.username) == 0 {
|
|
return nil, fmt.Errorf("\"username\" not set: only BasicAuth allowed")
|
|
}
|
|
|
|
var token = ""
|
|
|
|
switch reflect.ValueOf(value).Kind() {
|
|
case reflect.Int64:
|
|
token = fmt.Sprintf("%d", value.(int64))
|
|
case reflect.String:
|
|
if err := c.CheckServerVersionConstraint(">= 1.13.0"); err != nil {
|
|
return nil, err
|
|
}
|
|
token = value.(string)
|
|
default:
|
|
return nil, fmt.Errorf("only string and int64 supported")
|
|
}
|
|
|
|
_, resp, err := c.getResponse("DELETE", fmt.Sprintf("/users/%s/tokens/%s", c.username, token), jsonHeader, nil)
|
|
return resp, err
|
|
}
|