mirror of
https://github.com/fumiama/tienyik.git
synced 2026-06-23 12:00:42 +08:00
feat: add more apis
This commit is contained in:
18
hcli/api.go
Normal file
18
hcli/api.go
Normal file
@@ -0,0 +1,18 @@
|
||||
package hcli
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
base14 "github.com/fumiama/go-base16384"
|
||||
"github.com/fumiama/tienyik/internal/log"
|
||||
)
|
||||
|
||||
var eps = base14.DecodeString("栝啇俌蠯姙呗宬籣欞敖蚹煮岎冃勀紀㴆")
|
||||
|
||||
func ep(p string) string {
|
||||
sb := &strings.Builder{}
|
||||
sb.WriteString(eps)
|
||||
sb.WriteString(p)
|
||||
log.Debugln("ep wraps:", sb)
|
||||
return sb.String()
|
||||
}
|
||||
80
hcli/cli.go
Normal file
80
hcli/cli.go
Normal file
@@ -0,0 +1,80 @@
|
||||
package hcli
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"reflect"
|
||||
"strconv"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
base14 "github.com/fumiama/go-base16384"
|
||||
"github.com/fumiama/tienyik"
|
||||
"golang.org/x/net/http2"
|
||||
)
|
||||
|
||||
var NoClient = (*Client)(nil)
|
||||
|
||||
// DefaultClient is the default HTTP2 client.
|
||||
var DefaultClient = http.Client{
|
||||
Transport: &http2.Transport{},
|
||||
}
|
||||
|
||||
type Client struct {
|
||||
rcnt uintptr
|
||||
Appmodel string
|
||||
Devicecode string
|
||||
Devicetype string
|
||||
Servernode string
|
||||
Tenantid string
|
||||
Usereid string
|
||||
Version string
|
||||
}
|
||||
|
||||
func NewClient() *Client {
|
||||
return &Client{
|
||||
Appmodel: tienyik.AppModelTOB,
|
||||
Devicecode: tienyik.NewDeviceCode(),
|
||||
Devicetype: tienyik.DeviceTypeWEB,
|
||||
Version: tienyik.Version,
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Client) setHeaders(req *http.Request) {
|
||||
if c == nil {
|
||||
return
|
||||
}
|
||||
|
||||
v := reflect.ValueOf(c).Elem()
|
||||
t := v.Type()
|
||||
|
||||
for i := 0; i < v.NumField(); i++ {
|
||||
field := t.Field(i)
|
||||
if !field.IsExported() {
|
||||
continue
|
||||
}
|
||||
|
||||
fieldValue := v.Field(i)
|
||||
|
||||
if fieldValue.Kind() == reflect.String {
|
||||
req.Header.Set(
|
||||
base14.DecodeString("廝呲舀㴄")+field.Name,
|
||||
fieldValue.String(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
if c.Appmodel != "" {
|
||||
ts := time.Now().UnixMilli()
|
||||
timestamp := strconv.FormatInt(ts, 10)
|
||||
requestid := strconv.FormatUint(
|
||||
uint64(atomic.AddUintptr(&c.rcnt, 1))+uint64(ts), 10,
|
||||
)
|
||||
|
||||
req.Header.Set(base14.DecodeString("廝呲草獱歙攷徥爀㴆"), requestid)
|
||||
req.Header.Set(base14.DecodeString("廝呲荑睭杜蕆厵縀㴆"), timestamp)
|
||||
}
|
||||
|
||||
if c.Servernode != "" {
|
||||
//TODO: gensign
|
||||
}
|
||||
}
|
||||
72
hcli/http.go
Normal file
72
hcli/http.go
Normal file
@@ -0,0 +1,72 @@
|
||||
package hcli
|
||||
|
||||
import (
|
||||
"io"
|
||||
"net/http"
|
||||
|
||||
base14 "github.com/fumiama/go-base16384"
|
||||
)
|
||||
|
||||
func setCommonHeaders(req *http.Request, contentType string) {
|
||||
req.Header.Set("Accept", "application/json")
|
||||
req.Header.Set("Pragma", "no-cache")
|
||||
if contentType != "" {
|
||||
req.Header.Set("Content-Type", contentType)
|
||||
}
|
||||
req.Header.Set("Origin", base14.DecodeString("栝啇俌蠯姜吲融艹歛烦宸㴅"))
|
||||
req.Header.Set("Referer", base14.DecodeString("栝啇俌蠯姜吲融艹歛烦宸紀㴆"))
|
||||
req.Header.Set(
|
||||
"User-Agent",
|
||||
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0",
|
||||
)
|
||||
}
|
||||
|
||||
func (cli *Client) Get(path string) (resp *http.Response, err error) {
|
||||
req, err := http.NewRequest(http.MethodGet, ep(path), nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
setCommonHeaders(req, "")
|
||||
cli.setHeaders(req)
|
||||
return DefaultClient.Do(req)
|
||||
}
|
||||
|
||||
func (cli *Client) Post(path string, contentType string, body io.Reader) (resp *http.Response, err error) {
|
||||
req, err := http.NewRequest(http.MethodPost, ep(path), body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
setCommonHeaders(req, contentType)
|
||||
cli.setHeaders(req)
|
||||
return DefaultClient.Do(req)
|
||||
}
|
||||
|
||||
func (cli *Client) Put(path string, contentType string, body io.Reader) (resp *http.Response, err error) {
|
||||
req, err := http.NewRequest(http.MethodPut, ep(path), body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
setCommonHeaders(req, contentType)
|
||||
cli.setHeaders(req)
|
||||
return DefaultClient.Do(req)
|
||||
}
|
||||
|
||||
func (cli *Client) Delete(path string) (resp *http.Response, err error) {
|
||||
req, err := http.NewRequest(http.MethodDelete, ep(path), nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
setCommonHeaders(req, "")
|
||||
cli.setHeaders(req)
|
||||
return DefaultClient.Do(req)
|
||||
}
|
||||
|
||||
func (cli *Client) Patch(path string, contentType string, body io.Reader) (resp *http.Response, err error) {
|
||||
req, err := http.NewRequest(http.MethodPatch, ep(path), body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
setCommonHeaders(req, contentType)
|
||||
cli.setHeaders(req)
|
||||
return DefaultClient.Do(req)
|
||||
}
|
||||
Reference in New Issue
Block a user