mirror of
https://github.com/songquanpeng/one-api.git
synced 2025-09-18 09:36:37 +08:00
117 lines
2.9 KiB
Go
117 lines
2.9 KiB
Go
package sdk
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"fmt"
|
|
"net/http"
|
|
"strconv"
|
|
)
|
|
|
|
type Config struct {
|
|
Host string `json:"host"`
|
|
Port int `json:"port"`
|
|
Key string `json:"key"`
|
|
}
|
|
|
|
type OneClient struct {
|
|
Client *http.Client
|
|
Config *Config
|
|
Url string
|
|
}
|
|
|
|
type RespMessage struct {
|
|
Message string `json:"message"`
|
|
Success bool `json:"success"`
|
|
}
|
|
|
|
// get
|
|
func (OneClient *OneClient) get() (*http.Response, error) {
|
|
OneClient.Client = &http.Client{}
|
|
port := strconv.Itoa(OneClient.Config.Port)
|
|
url := OneClient.Config.Host + ":" + port + OneClient.Url
|
|
req, err := http.NewRequest("GET", url, nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
req.Header.Set("Content-Type", "application/json")
|
|
req.Header.Set("Authorization", "Bearer "+OneClient.Config.Key)
|
|
resp, err := OneClient.Client.Do(req)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return resp, nil
|
|
}
|
|
|
|
// post
|
|
func (OneClient *OneClient) post(data []byte) error {
|
|
OneClient.Client = &http.Client{}
|
|
port := strconv.Itoa(OneClient.Config.Port)
|
|
url := OneClient.Config.Host + ":" + port + OneClient.Url
|
|
payload := bytes.NewBuffer(data)
|
|
req, err := http.NewRequest("POST", url, payload)
|
|
req.Header.Set("Content-Type", "application/json")
|
|
req.Header.Set("Authorization", "Bearer "+OneClient.Config.Key)
|
|
resp, err := OneClient.Client.Do(req)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer resp.Body.Close()
|
|
message := RespMessage{}
|
|
if err := json.NewDecoder(resp.Body).Decode(&message); err != nil {
|
|
return err
|
|
}
|
|
if message.Success {
|
|
return nil
|
|
}
|
|
return fmt.Errorf("create user failed: %s", message.Message)
|
|
}
|
|
|
|
// put
|
|
func (OneClient *OneClient) put(data []byte) error {
|
|
OneClient.Client = &http.Client{}
|
|
port := strconv.Itoa(OneClient.Config.Port)
|
|
url := OneClient.Config.Host + ":" + port + OneClient.Url
|
|
payload := bytes.NewBuffer(data)
|
|
req, err := http.NewRequest("PUT", url, payload)
|
|
req.Header.Set("Content-Type", "application/json")
|
|
req.Header.Set("Authorization", "Bearer "+OneClient.Config.Key)
|
|
resp, err := OneClient.Client.Do(req)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer resp.Body.Close()
|
|
message := RespMessage{}
|
|
if err := json.NewDecoder(resp.Body).Decode(&message); err != nil {
|
|
return err
|
|
}
|
|
if message.Success {
|
|
return nil
|
|
}
|
|
return fmt.Errorf("update user failed: %s", message.Message)
|
|
}
|
|
|
|
// delete
|
|
func (OneClient *OneClient) delete(data []byte) error {
|
|
OneClient.Client = &http.Client{}
|
|
port := strconv.Itoa(OneClient.Config.Port)
|
|
url := OneClient.Config.Host + ":" + port + OneClient.Url
|
|
payload := bytes.NewBuffer(data)
|
|
req, err := http.NewRequest("DELETE", url, payload)
|
|
req.Header.Set("Content-Type", "application/json")
|
|
req.Header.Set("Authorization", "Bearer "+OneClient.Config.Key)
|
|
resp, err := OneClient.Client.Do(req)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer resp.Body.Close()
|
|
message := RespMessage{}
|
|
if err := json.NewDecoder(resp.Body).Decode(&message); err != nil {
|
|
return err
|
|
}
|
|
if message.Success {
|
|
return nil
|
|
}
|
|
return fmt.Errorf("delete user failed: %s", message.Message)
|
|
}
|