mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	Added all required dependencies
This commit is contained in:
		
							
								
								
									
										90
									
								
								vendor/github.com/gogits/go-gogs-client/gogs.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								vendor/github.com/gogits/go-gogs-client/gogs.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,90 @@ | ||||
| // Copyright 2014 The Gogs 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 gogs | ||||
|  | ||||
| import ( | ||||
| 	"encoding/json" | ||||
| 	"errors" | ||||
| 	"io" | ||||
| 	"io/ioutil" | ||||
| 	"net/http" | ||||
| 	"strings" | ||||
| ) | ||||
|  | ||||
| func Version() string { | ||||
| 	return "0.12.3" | ||||
| } | ||||
|  | ||||
| // Client represents a Gogs API client. | ||||
| type Client struct { | ||||
| 	url         string | ||||
| 	accessToken string | ||||
| 	client      *http.Client | ||||
| } | ||||
|  | ||||
| // NewClient initializes and returns a API client. | ||||
| func NewClient(url, token string) *Client { | ||||
| 	return &Client{ | ||||
| 		url:         strings.TrimSuffix(url, "/"), | ||||
| 		accessToken: token, | ||||
| 		client:      &http.Client{}, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // SetHTTPClient replaces default http.Client with user given one. | ||||
| func (c *Client) SetHTTPClient(client *http.Client) { | ||||
| 	c.client = client | ||||
| } | ||||
|  | ||||
| func (c *Client) doRequest(method, path string, header http.Header, body io.Reader) (*http.Response, error) { | ||||
| 	req, err := http.NewRequest(method, c.url+"/api/v1"+path, body) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	req.Header.Set("Authorization", "token "+c.accessToken) | ||||
| 	for k, v := range header { | ||||
| 		req.Header[k] = v | ||||
| 	} | ||||
|  | ||||
| 	return c.client.Do(req) | ||||
| } | ||||
|  | ||||
| func (c *Client) getResponse(method, path string, header http.Header, body io.Reader) ([]byte, error) { | ||||
| 	resp, err := c.doRequest(method, path, header, body) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	defer resp.Body.Close() | ||||
|  | ||||
| 	data, err := ioutil.ReadAll(resp.Body) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	switch resp.StatusCode { | ||||
| 	case 403: | ||||
| 		return nil, errors.New("403 Forbidden") | ||||
| 	case 404: | ||||
| 		return nil, errors.New("404 Not Found") | ||||
| 	} | ||||
|  | ||||
| 	if resp.StatusCode/100 != 2 { | ||||
| 		errMap := make(map[string]interface{}) | ||||
| 		if err = json.Unmarshal(data, &errMap); err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 		return nil, errors.New(errMap["message"].(string)) | ||||
| 	} | ||||
|  | ||||
| 	return data, nil | ||||
| } | ||||
|  | ||||
| func (c *Client) getParsedResponse(method, path string, header http.Header, body io.Reader, obj interface{}) error { | ||||
| 	data, err := c.getResponse(method, path, header, body) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	return json.Unmarshal(data, obj) | ||||
| } | ||||
		Reference in New Issue
	
	Block a user