@@ -25,7 +25,13 @@ func signRpcRequest(request requests.AcsRequest, signer Signer) (err error) { | |||||
stringToSign := buildRpcStringToSign(request) | stringToSign := buildRpcStringToSign(request) | ||||
request.SetStringToSign(stringToSign) | request.SetStringToSign(stringToSign) | ||||
signature := signer.Sign(stringToSign, "&") | signature := signer.Sign(stringToSign, "&") | ||||
request.GetQueryParams()["sign"] = signature | |||||
accessKeyForm, err := signer.GetAccessKeyFrom() | |||||
if err != nil { | |||||
return | |||||
} | |||||
if accessKeyForm != "" { | |||||
request.GetQueryParams()["sign"] = signature | |||||
} | |||||
debug("GrSdk sign: %s", signature) | debug("GrSdk sign: %s", signature) | ||||
debug("GrSdk sign string: %s", stringToSign) | debug("GrSdk sign string: %s", stringToSign) | ||||
debug("GrSdk sign: \r\n") | debug("GrSdk sign: \r\n") | ||||
@@ -38,18 +44,19 @@ func completeRpcSignParams(request requests.AcsRequest, signer Signer) (err erro | |||||
if accessKeyFrom, err = signer.GetAccessKeyFrom(); err != nil { | if accessKeyFrom, err = signer.GetAccessKeyFrom(); err != nil { | ||||
return | return | ||||
} | } | ||||
queryParams := request.GetQueryParams() | |||||
queryParams["access_time"] = fmt.Sprintf("%d", time.Now().Unix()) | |||||
queryParams["access_key"], err = signer.GetAccessKeyId() | |||||
queryParams["access_from"] = accessKeyFrom | |||||
if err != nil { | |||||
return | |||||
if accessKeyFrom != "" { | |||||
queryParams := request.GetQueryParams() | |||||
queryParams["access_time"] = fmt.Sprintf("%d", time.Now().Unix()) | |||||
queryParams["access_key"], err = signer.GetAccessKeyId() | |||||
queryParams["access_from"] = accessKeyFrom | |||||
if err != nil { | |||||
return | |||||
} | |||||
request.GetHeaders()["Gr-Sdk-From"] = accessKeyFrom | |||||
} | } | ||||
request.GetHeaders()["Content-type"] = requests.Form | request.GetHeaders()["Content-type"] = requests.Form | ||||
request.GetHeaders()["Gr-Sdk-From"] = accessKeyFrom | |||||
formString := utils.GetUrlFormedMap(request.GetFormParams()) | formString := utils.GetUrlFormedMap(request.GetFormParams()) | ||||
request.SetContent(bytes.NewBufferString(formString).Bytes()) | request.SetContent(bytes.NewBufferString(formString).Bytes()) | ||||
return | return | ||||
@@ -83,6 +83,15 @@ func (client *Client) InitClientConfig() (config *Config) { | |||||
} | } | ||||
func (client *Client) InitWithArea(area string, env ...string) error { | |||||
config := client.InitClientConfig() | |||||
if len(env) >= 1 { | |||||
config.Env = env[0] | |||||
} | |||||
config.Area = area | |||||
return client.InitWithOptions(config, new(credentials.BaseCredential)) | |||||
} | |||||
func (client *Client) InitWithAccessKey(accessKeyId, accessKeySecret, accessKeyFrom string) (err error) { | func (client *Client) InitWithAccessKey(accessKeyId, accessKeySecret, accessKeyFrom string) (err error) { | ||||
config := client.InitWithConfig() | config := client.InitWithConfig() | ||||
credential := &credentials.BaseCredential{ | credential := &credentials.BaseCredential{ | ||||
@@ -279,6 +288,10 @@ func (client *Client) buildRequestWithSigner(request requests.AcsRequest, signer | |||||
request.SetEnv(client.config.Env) | request.SetEnv(client.config.Env) | ||||
} | } | ||||
if request.GetArea() == "" && client.config.Area != "" { | |||||
request.SetArea(client.config.Area) | |||||
} | |||||
err = requests.InitParam(request) | err = requests.InitParam(request) | ||||
if err != nil { | if err != nil { | ||||
return | return | ||||
@@ -15,6 +15,7 @@ type Config struct { | |||||
Scheme string `default:"HTTP"` | Scheme string `default:"HTTP"` | ||||
Timeout time.Duration `default:"5"` | Timeout time.Duration `default:"5"` | ||||
Env string `default:""` | Env string `default:""` | ||||
Area string `default:""` | |||||
} | } | ||||
func NewConfig() *Config { | func NewConfig() *Config { | ||||
@@ -50,7 +50,7 @@ const ( | |||||
type Host struct { | type Host struct { | ||||
Default string | Default string | ||||
Func func(string) string | |||||
Func func(string, string) string | |||||
} | } | ||||
var debug utils.Debug | var debug utils.Debug | ||||
@@ -80,6 +80,8 @@ type AcsRequest interface { | |||||
InitWithApiInfo(domain Host, version, urlPath string) | InitWithApiInfo(domain Host, version, urlPath string) | ||||
GetEnv() string | GetEnv() string | ||||
SetEnv(string) | SetEnv(string) | ||||
GetArea() string | |||||
SetArea(string) | |||||
BuildUrl() string | BuildUrl() string | ||||
BuildQueries() string | BuildQueries() string | ||||
@@ -121,6 +123,7 @@ type baseRequest struct { | |||||
queries string | queries string | ||||
stringToSign string | stringToSign string | ||||
area string | |||||
} | } | ||||
func (request *baseRequest) GetEnv() string { | func (request *baseRequest) GetEnv() string { | ||||
@@ -131,6 +134,14 @@ func (request *baseRequest) SetEnv(e string) { | |||||
request.Env = e | request.Env = e | ||||
} | } | ||||
func (request *baseRequest) GetArea() string { | |||||
return request.area | |||||
} | |||||
func (request *baseRequest) SetArea(area string) { | |||||
request.area = area | |||||
} | |||||
func (request *baseRequest) GetStringToSign() string { | func (request *baseRequest) GetStringToSign() string { | ||||
return request.stringToSign | return request.stringToSign | ||||
} | } | ||||
@@ -21,7 +21,7 @@ func (request *RpcRequest) BuildUrl() string { | |||||
var hostname string | var hostname string | ||||
if request.Domain.Func == nil { | if request.Domain.Func == nil { | ||||
hostname = request.Domain.Default | hostname = request.Domain.Default | ||||
} else if hostname = request.Domain.Func(request.GetEnv()); hostname == "" { | |||||
} else if hostname = request.Domain.Func(request.GetEnv(), request.GetArea()); hostname == "" { | |||||
hostname = request.Domain.Default | hostname = request.Domain.Default | ||||
} | } | ||||
@@ -12,7 +12,7 @@ const ( | |||||
var HOST requests.Host = requests.Host{ | var HOST requests.Host = requests.Host{ | ||||
Default: "c.api.gaore.com", | Default: "c.api.gaore.com", | ||||
Func: func(s string) string { | |||||
Func: func(s string, area string) string { | |||||
var a = map[string]string{ | var a = map[string]string{ | ||||
requests.RELEASE: "c.api.gaore.com", | requests.RELEASE: "c.api.gaore.com", | ||||
requests.PRE: "c.api.gaore.com", | requests.PRE: "c.api.gaore.com", | ||||
@@ -11,7 +11,7 @@ const ( | |||||
var HOST requests.Host = requests.Host{ | var HOST requests.Host = requests.Host{ | ||||
Default: "callback.api.gaore.com", | Default: "callback.api.gaore.com", | ||||
Func: func(s string) string { | |||||
Func: func(s string, area string) string { | |||||
var a = map[string]string{ | var a = map[string]string{ | ||||
requests.RELEASE: "callback.api.gaore.com", | requests.RELEASE: "callback.api.gaore.com", | ||||
requests.PRE: "callback.api.gaore.com", | requests.PRE: "callback.api.gaore.com", | ||||
@@ -12,7 +12,7 @@ const ( | |||||
var HOST requests.Host = requests.Host{ | var HOST requests.Host = requests.Host{ | ||||
Default: "jedi.api.gaore.com", | Default: "jedi.api.gaore.com", | ||||
Func: func(s string) string { | |||||
Func: func(s string, area string) string { | |||||
var a = map[string]string{ | var a = map[string]string{ | ||||
requests.RELEASE: "jedi.api.gaore.com", | requests.RELEASE: "jedi.api.gaore.com", | ||||
requests.PRE: "jedi.api.gaore.com", | requests.PRE: "jedi.api.gaore.com", | ||||
@@ -14,7 +14,7 @@ const ( | |||||
var HOST requests.Host = requests.Host{ | var HOST requests.Host = requests.Host{ | ||||
Default: "mail.gaore.com", | Default: "mail.gaore.com", | ||||
Func: func(s string) string { | |||||
Func: func(s string, area string) string { | |||||
var a = map[string]string{ | var a = map[string]string{ | ||||
requests.RELEASE: "mail.gaore.com", | requests.RELEASE: "mail.gaore.com", | ||||
requests.PRE: "mail.gaore.com", | requests.PRE: "mail.gaore.com", | ||||
@@ -0,0 +1,40 @@ | |||||
package msdk | |||||
import ( | |||||
"fmt" | |||||
"golib.gaore.com/GaoreGo/haiwai-common-sdk-go/sdk" | |||||
"golib.gaore.com/GaoreGo/haiwai-common-sdk-go/sdk/requests" | |||||
) | |||||
const ( | |||||
VERSION = "2023-03-16" | |||||
KEY = "gaore!@#msdk" | |||||
) | |||||
var Host = requests.Host{ | |||||
Default: "msdk.api.gaore.com.hk", | |||||
Func: func(s string, area string) string { | |||||
if area != "" { | |||||
fmt.Println("msdk.api.gaore.com." + area) | |||||
return "msdk.api.gaore.com." + area | |||||
} | |||||
return "msdk.api.gaore.com.hk" | |||||
}, | |||||
} | |||||
type Client struct { | |||||
sdk.Client | |||||
ident string | |||||
} | |||||
func (c *Client) UpdateAdjustId(req *UpdateAdjustIdRequest) (resp *UpdateAdjustIdResponse, err error) { | |||||
resp = CreateUpdateAdjustIdResponse() | |||||
err = c.DoAction(req, resp) | |||||
return | |||||
} | |||||
func NewClient(area string, env ...string) (client *Client, err error) { | |||||
client = new(Client) | |||||
err = client.InitWithArea(area, env...) | |||||
return | |||||
} |
@@ -0,0 +1,25 @@ | |||||
package msdk | |||||
import ( | |||||
"fmt" | |||||
"testing" | |||||
) | |||||
func TestClient_UpdateAdjustId(t *testing.T) { | |||||
req := CreateUpdateAdjustIdRequest() | |||||
req.AdjustId = "8834ca659b22316354e9e9d6dd6b1904" | |||||
req.Username = "xn94941370" | |||||
req.GameSign = "testcw" | |||||
req.LongId = "ba19fc578664f7c73c424b4c2919f9d1" | |||||
req.GameId = 10002 | |||||
req.RegTime = 1678949413 | |||||
req.Os = "ios" | |||||
req.MakeSign() | |||||
client, _ := NewClient("hk") | |||||
resp, err := client.UpdateAdjustId(req) | |||||
if err != nil { | |||||
return | |||||
} | |||||
fmt.Println(resp.Msg) | |||||
} |
@@ -0,0 +1,52 @@ | |||||
package msdk | |||||
import ( | |||||
"crypto/md5" | |||||
"fmt" | |||||
"golib.gaore.com/GaoreGo/haiwai-common-sdk-go/sdk/requests" | |||||
"golib.gaore.com/GaoreGo/haiwai-common-sdk-go/sdk/responses" | |||||
"time" | |||||
) | |||||
type UpdateAdjustIdRequest struct { | |||||
*requests.RpcRequest | |||||
LongId string `position:"Body" field:"long_id" default:""` | |||||
GameId int `position:"Body" field:"game_id" default:"0"` | |||||
Username string `position:"Body" field:"username" default:""` | |||||
GameSign string `position:"Body" field:"game_sign" default:""` | |||||
RegTime int64 `position:"Body" field:"reg_time" default:"0"` | |||||
Os string `position:"Body" field:"os" default:""` | |||||
AdjustId string `position:"Body" field:"adjust_id" default:""` | |||||
ts int64 `position:"Body" field:"ts" default:"0"` | |||||
sign string `position:"Body" field:"sign" default:""` | |||||
} | |||||
func (u *UpdateAdjustIdRequest) MakeSign() { | |||||
u.ts = time.Now().Unix() | |||||
rawStr := fmt.Sprintf("%d%s%s%d%s", u.GameId, u.LongId, u.Username, u.ts, KEY) | |||||
sign := md5.Sum([]byte(rawStr)) | |||||
u.sign = fmt.Sprintf("%x", sign) | |||||
} | |||||
type UpdateAdjustIdResponse struct { | |||||
*responses.BaseResponse | |||||
Ret int `json:"ret"` | |||||
Msg string `json:"msg"` | |||||
} | |||||
func CreateUpdateAdjustIdRequest() (req *UpdateAdjustIdRequest) { | |||||
req = &UpdateAdjustIdRequest{ | |||||
RpcRequest: &requests.RpcRequest{}, | |||||
} | |||||
req.ts = time.Now().Unix() | |||||
req.InitWithApiInfo(Host, VERSION, "/updateAdjustId.php") | |||||
req.Method = requests.POST | |||||
return | |||||
} | |||||
func CreateUpdateAdjustIdResponse() (resp *UpdateAdjustIdResponse) { | |||||
resp = &UpdateAdjustIdResponse{ | |||||
BaseResponse: &responses.BaseResponse{}, | |||||
} | |||||
return | |||||
} |
@@ -14,7 +14,7 @@ const ( | |||||
var HOST = requests.Host{ | var HOST = requests.Host{ | ||||
Default: "sso", | Default: "sso", | ||||
Func: func(s string) string { | |||||
Func: func(s string, area string) string { | |||||
host := map[string]string{ | host := map[string]string{ | ||||
requests.RELEASE: "sso.gaore.com.hk", | requests.RELEASE: "sso.gaore.com.hk", | ||||
requests.PRE: "sso.gaore.com", | requests.PRE: "sso.gaore.com", | ||||
@@ -74,7 +74,7 @@ func (c Client) getSchemeAndHost(env ...string) (scheme, host string) { | |||||
if len(env) >= 1 { | if len(env) >= 1 { | ||||
rEnv = env[0] | rEnv = env[0] | ||||
} | } | ||||
host = HOST.Func(rEnv) | |||||
host = HOST.Func(rEnv, "") | |||||
if rEnv == requests.RELEASE { | if rEnv == requests.RELEASE { | ||||
scheme = requests.HTTPS | scheme = requests.HTTPS | ||||
@@ -9,3 +9,6 @@ func TestLoginUrl(t *testing.T) { | |||||
c, _ := NewClientWithAccessKey("stat.gaore.com.hk", "", "stat_gaore_com_hk") | c, _ := NewClientWithAccessKey("stat.gaore.com.hk", "", "stat_gaore_com_hk") | ||||
t.Log(c.GetLoginUrl("http://stat.gaore.com.hk/web/user/login", requests.TEST)) | t.Log(c.GetLoginUrl("http://stat.gaore.com.hk/web/user/login", requests.TEST)) | ||||
} | } | ||||
func TestClient_CodeAuth(t *testing.T) { | |||||
} |
@@ -6,18 +6,18 @@ import ( | |||||
) | ) | ||||
const ( | const ( | ||||
VERSION = "2020-09-24" | |||||
VERSION = "2023-03-16" | |||||
KEY = "gaore!@#apisdk" | |||||
) | ) | ||||
var HOST requests.Host = requests.Host{ | var HOST requests.Host = requests.Host{ | ||||
Default: "apisdk.9ooo.cn", | |||||
Func: func(s string) string { | |||||
var a = map[string]string{ | |||||
requests.RELEASE: "apisdk.9ooo.cn", | |||||
requests.PRE: "apisdk.9ooo.cn", | |||||
requests.TEST: "apisdk.9ooo.cn", | |||||
Default: "apisdk.gaore.com.hk", | |||||
Func: func(s string, area string) string { | |||||
defHost := "apisdk.gaore.com" | |||||
if area != "" { | |||||
return defHost + "." + area | |||||
} | } | ||||
return a[s] | |||||
return "" | |||||
}, | }, | ||||
} | } | ||||
@@ -42,3 +42,15 @@ func (c *Client) GetUserInfo(req *GetPwdRequest) (response *GetPwdResponse, err | |||||
err = c.DoAction(req, response) | err = c.DoAction(req, response) | ||||
return | return | ||||
} | } | ||||
func (c *Client) UpdateAdjustId(req *UpdateAdjustIdRequest) (resp *UpdateAdjustIdResponse, err error) { | |||||
resp = CreateUpdateAdjustIdResponse() | |||||
err = c.DoAction(req, resp) | |||||
return | |||||
} | |||||
func NewClient(area string, env ...string) (client *Client, err error) { | |||||
client = new(Client) | |||||
err = client.InitWithArea(area, env...) | |||||
return | |||||
} |
@@ -23,3 +23,23 @@ func TestClient_GetUserInfo(t *testing.T) { | |||||
fmt.Println(resp.GetHttpContentString()) | fmt.Println(resp.GetHttpContentString()) | ||||
fmt.Println(resp.GetHttpHeaders()) | fmt.Println(resp.GetHttpHeaders()) | ||||
} | } | ||||
func TestClient_UpdateAdjustId(t *testing.T) { | |||||
req := CreateUpdateAdjustIdRequest() | |||||
req.AdjustId = "8834ca659b22316354e9e9d6dd6b1904" | |||||
req.Username = "xn94941370" | |||||
req.GameId = 10002 | |||||
req.RegTime = 1678949413 | |||||
req.MakeSign() | |||||
c, err := NewClient("hk", "") | |||||
if err != nil { | |||||
t.Error(err) | |||||
return | |||||
} | |||||
resp, err := c.UpdateAdjustId(req) | |||||
if err != nil { | |||||
t.Error(err) | |||||
return | |||||
} | |||||
t.Log(resp) | |||||
} |
@@ -1 +0,0 @@ | |||||
package www |
@@ -0,0 +1,52 @@ | |||||
package www | |||||
import ( | |||||
"crypto/md5" | |||||
"fmt" | |||||
"golib.gaore.com/GaoreGo/haiwai-common-sdk-go/sdk/requests" | |||||
"golib.gaore.com/GaoreGo/haiwai-common-sdk-go/sdk/responses" | |||||
"time" | |||||
) | |||||
type UpdateAdjustIdRequest struct { | |||||
*requests.RpcRequest | |||||
LongId string `position:"Body" field:"long_id" default:""` | |||||
GameId int `position:"Body" field:"game_id" default:"0"` | |||||
Username string `position:"Body" field:"username" default:""` | |||||
GameSign string `position:"Body" field:"game_sign" default:""` | |||||
RegTime int64 `position:"Body" field:"reg_time" default:"0"` | |||||
Os string `position:"Body" field:"os" default:""` | |||||
AdjustId string `position:"Body" field:"adjust_id" default:""` | |||||
ts int64 `position:"Body" field:"ts" default:"0"` | |||||
sign string `position:"Body" field:"sign" default:""` | |||||
} | |||||
func (u *UpdateAdjustIdRequest) MakeSign() { | |||||
u.ts = time.Now().Unix() | |||||
rawStr := fmt.Sprintf("%s%d%d%s", u.Username, u.GameId, u.ts, KEY) | |||||
sign := md5.Sum([]byte(rawStr)) | |||||
u.sign = fmt.Sprintf("%x", sign) | |||||
} | |||||
type UpdateAdjustIdResponse struct { | |||||
*responses.BaseResponse | |||||
Ret int `json:"ret"` | |||||
Msg string `json:"msg"` | |||||
} | |||||
func CreateUpdateAdjustIdRequest() (req *UpdateAdjustIdRequest) { | |||||
req = &UpdateAdjustIdRequest{ | |||||
RpcRequest: &requests.RpcRequest{}, | |||||
} | |||||
req.ts = time.Now().Unix() | |||||
req.InitWithApiInfo(HOST, VERSION, "/user/updateAdjustId.php") | |||||
req.Method = requests.POST | |||||
return | |||||
} | |||||
func CreateUpdateAdjustIdResponse() (resp *UpdateAdjustIdResponse) { | |||||
resp = &UpdateAdjustIdResponse{ | |||||
BaseResponse: &responses.BaseResponse{}, | |||||
} | |||||
return | |||||
} |