Files
stat_center/common/proxy/object.go
T
2026-05-20 16:13:58 +08:00

97 lines
1.6 KiB
Go

package proxy
import (
"bytes"
"context"
"encoding/base64"
"encoding/json"
"errors"
"fmt"
"io"
"stat/common/httpUtils"
"stat/common/utils"
"sync"
)
var (
buffer = bytes.Buffer{}
lock sync.Mutex
)
var (
header = map[string]string{"Content-Type": "application/json"}
)
const (
Success = 200
)
// PutObject put object to proxy
func PutObject(ctx context.Context, apiUrl, objpath string, body io.Reader) (path string, err error) {
lock.Lock()
defer lock.Unlock()
buffer.Reset()
_, err = buffer.ReadFrom(body)
if err != nil {
return
}
base64data := base64.StdEncoding.EncodeToString(buffer.Bytes())
r := objreq{
Name: utils.PathForInfo(objpath).FullFileName,
Data: base64data,
}
jsonBytes, err := json.Marshal(r)
if err != nil {
return
}
resp, err := httpUtils.Post(apiUrl, header, bytes.NewReader(jsonBytes))
if err != nil {
return
}
var or objresp
err = json.Unmarshal(resp.Data, &or)
if err != nil {
fmt.Println(apiUrl, string(resp.Data))
return
}
if or.Code != Success {
err = errors.New(or.Msg)
return
}
path = or.Object.Name
return
}
func PutBase64Object(ctx context.Context, apiUrl, objpath string, base64data string) (path string, err error) {
r := objreq{
Name: utils.PathForInfo(objpath).FullFileName,
Data: base64data,
}
jsonbytes, err := json.Marshal(r)
if err != nil {
return
}
resp, err := httpUtils.Post(apiUrl, header, bytes.NewReader(jsonbytes))
if err != nil {
return
}
var or objresp
err = json.Unmarshal(resp.Data, &or)
if err != nil {
return
}
if or.Code != Success {
err = errors.New(or.Msg)
return
}
path = or.Object.Name
return
}