Skip to content

Commit

Permalink
Merge pull request #322 from ArtisanCloud/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
Matrix-X committed Jun 7, 2023
2 parents 1e27bf3 + d0eb5f6 commit dab9c8a
Show file tree
Hide file tree
Showing 10 changed files with 157 additions and 2 deletions.
90 changes: 90 additions & 0 deletions src/kernel/baseClient.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
contract2 "github.com/ArtisanCloud/PowerLibs/v3/logger/contract"
"github.com/ArtisanCloud/PowerLibs/v3/object"
"github.com/ArtisanCloud/PowerLibs/v3/os"
"github.com/ArtisanCloud/PowerWeChat/v3/src/kernel/power"
"github.com/ArtisanCloud/PowerWeChat/v3/src/kernel/support"
"io"
"io/ioutil"
Expand Down Expand Up @@ -125,6 +126,20 @@ func (client *BaseClient) HttpPostJson(ctx context.Context, url string, data int
outBody,
)
}
func (client *BaseClient) HttpPostJsonByEncode(ctx context.Context, url string, data interface{}, query *object.StringMap, outHeader interface{}, outBody interface{}) (interface{}, error) {
return client.RequestByEncodedData(
ctx,
url,
http.MethodPost,
&object.HashMap{
"query": query,
"form_params": data,
},
false,
outHeader,
outBody,
)
}

func (client *BaseClient) HttpUpload(ctx context.Context, url string, files *object.HashMap, form *UploadForm, query interface{}, outHeader interface{}, outBody interface{}) (interface{}, error) {

Expand Down Expand Up @@ -265,6 +280,81 @@ func (client *BaseClient) Request(ctx context.Context, url string, method string

}

func (client *BaseClient) RequestByEncodedData(ctx context.Context, url string, method string, options *object.HashMap,
returnRaw bool, outHeader interface{}, outBody interface{},
) (*http.Response, error) {

// http client request
client.QueryRaw = returnRaw
df := client.HttpHelper.Df().WithContext(ctx).Uri(url).Method(method)

// 检查是否需要有请求参数配置
if options != nil {
// set query key values
if (*options)["query"] != nil {
queries := (*options)["query"].(*object.StringMap)
if queries != nil {
for k, v := range *queries {
df.Query(k, v)
}
}
}

config := (*client.App).GetConfig()
// 微信如果需要传debug模式
debug := config.GetBool("debug", false)
if debug {
df.Query("debug", "1")
}

// set body json
if (*options)["form_params"] != nil {
body := &power.JsonEncoder{
Data: (*options)["form_params"],
}
df.Any(body)
}
}

ctxQuery := ctx.Value("query")
if ctxQuery != nil {
queries := ctxQuery.(*object.StringMap)
if queries != nil {
for k, v := range *queries {
df.Query(k, v)
}
}
}

response, err := df.Request()
if err != nil {
return response, err
}

// decode response body to outBody
if outBody != nil {
err = client.HttpHelper.ParseResponseBodyContent(response, outBody)
if err != nil {
return nil, err
}
}

// decode response header to outHeader
if outHeader != nil {
strHeader, err := object.JsonEncode(response.Header)
if err != nil {
return nil, err
}
err = object.JsonDecode([]byte(strHeader), outHeader)
if err != nil {
return nil, err
}
}

return response, err

}

func (client *BaseClient) RequestRaw(ctx context.Context, url string, method string, options *object.HashMap, outHeader interface{}, outBody interface{}) (*http.Response, error) {
return client.Request(ctx, url, method, options, true, outHeader, outBody)
}
Expand Down
25 changes: 25 additions & 0 deletions src/kernel/power/encoder.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package power

import (
"bytes"
"encoding/json"
"io"
)

type JsonEncoder struct {
json.Encoder
Data interface{}
}

func (e *JsonEncoder) Encode() (io.Reader, error) {
var buf bytes.Buffer
encoder := json.NewEncoder(&buf)
encoder.SetEscapeHTML(false)

if err := encoder.Encode(e.Data); err != nil {
return nil, err
}

reader := bytes.NewReader(buf.Bytes())
return reader, nil
}
12 changes: 12 additions & 0 deletions src/miniProgram/application.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
"github.com/ArtisanCloud/PowerWeChat/v3/src/miniProgram/express"
"github.com/ArtisanCloud/PowerWeChat/v3/src/miniProgram/image"
"github.com/ArtisanCloud/PowerWeChat/v3/src/miniProgram/immediateDelivery"
"github.com/ArtisanCloud/PowerWeChat/v3/src/miniProgram/industry/miniDrama/vod"
"github.com/ArtisanCloud/PowerWeChat/v3/src/miniProgram/internet"
"github.com/ArtisanCloud/PowerWeChat/v3/src/miniProgram/liveBroadcast"
"github.com/ArtisanCloud/PowerWeChat/v3/src/miniProgram/nearbyPoi"
Expand Down Expand Up @@ -88,6 +89,8 @@ type MiniProgram struct {

RiskControl *riskControl.Client

MiniDramaVOD *vod.Client

Config *kernel.Config

Logger *logger.Logger
Expand Down Expand Up @@ -339,6 +342,12 @@ func NewMiniProgram(config *UserConfig, extraInfos ...*kernel.ExtraInfo) (*MiniP
return nil, err
}

//-------------- miniDrama Vod --------------
app.MiniDramaVOD, err = vod.RegisterProvider(app)
if err != nil {
return nil, err
}

return app, err
}

Expand Down Expand Up @@ -433,6 +442,9 @@ func (app *MiniProgram) GetComponent(name string) interface{} {
case "RiskControl":
return app.RiskControl

case "MiniDramaVDO":
return app.MiniDramaVOD

case "Logger":
return app.Logger

Expand Down
1 change: 1 addition & 0 deletions src/miniProgram/industry/miniDrama/request/request.go
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
package request
1 change: 1 addition & 0 deletions src/miniProgram/industry/miniDrama/response/response.go
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
package response
7 changes: 7 additions & 0 deletions src/miniProgram/industry/miniDrama/vod/client.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package vod

import "github.com/ArtisanCloud/PowerWeChat/v3/src/kernel"

type Client struct {
BaseClient *kernel.BaseClient
}
14 changes: 14 additions & 0 deletions src/miniProgram/industry/miniDrama/vod/provider.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package vod

import "github.com/ArtisanCloud/PowerWeChat/v3/src/kernel"

func RegisterProvider(app kernel.ApplicationInterface) (*Client, error) {
baseClient, err := kernel.NewBaseClient(&app, nil)
if err != nil {
return nil, err
}
return &Client{
baseClient,
}, nil

}
2 changes: 1 addition & 1 deletion src/officialAccount/menu/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ func (comp *Client) Create(ctx context.Context, buttons []*request.Button) (*res

result := &response.ResponseMenuCreate{}

_, err := comp.BaseClient.HttpPostJson(ctx, "cgi-bin/menu/create", &object.HashMap{
_, err := comp.BaseClient.HttpPostJsonByEncode(ctx, "cgi-bin/menu/create", &object.HashMap{
"button": buttons,
}, nil, nil, result)

Expand Down
6 changes: 5 additions & 1 deletion src/openPlatform/component/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,11 @@ func (comp *Client) RegisterMiniProgram(ctx context.Context, params *request.Req

result := &response2.ResponseOpenPlatform{}

_, err := comp.BaseClient.HttpPostJson(ctx, "cgi-bin/component/fastregisterweapp", params, nil, nil, result)
query := &object.StringMap{
"action": "create",
}

_, err := comp.BaseClient.HttpPostJson(ctx, "cgi-bin/component/fastregisterweapp", params, query, nil, result)

return result, err

Expand Down
1 change: 1 addition & 0 deletions src/openWork/auth/accessToken.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"github.com/ArtisanCloud/PowerLibs/v3/object"
"github.com/ArtisanCloud/PowerLibs/v3/security"
"github.com/ArtisanCloud/PowerWeChat/v3/src/kernel"
"net/http"
)

type AccessToken struct {
Expand Down

0 comments on commit dab9c8a

Please sign in to comment.