70 lines
1.3 KiB
Go
70 lines
1.3 KiB
Go
package wechat
|
|
|
|
import (
|
|
"net/url"
|
|
|
|
"github.com/imroc/req/v3"
|
|
)
|
|
|
|
type Options func(*Client)
|
|
|
|
func WithAppID(appID string) Options {
|
|
return func(we *Client) {
|
|
we.appID = appID
|
|
}
|
|
}
|
|
|
|
// WithAppSecret sets the app secret
|
|
func WithAppSecret(appSecret string) Options {
|
|
return func(we *Client) {
|
|
we.appSecret = appSecret
|
|
}
|
|
}
|
|
|
|
// WithToken sets the token
|
|
func WithToken(token string) Options {
|
|
return func(we *Client) {
|
|
we.token = token
|
|
}
|
|
}
|
|
|
|
// WithAESKey sets the AES key
|
|
func WithAESKey(aesKey string) Options {
|
|
return func(we *Client) {
|
|
we.aesKey = aesKey
|
|
}
|
|
}
|
|
|
|
// WithClient sets the http client
|
|
func WithClient(client *req.Client) Options {
|
|
return func(we *Client) {
|
|
we.client = client
|
|
}
|
|
}
|
|
|
|
type ScopeAuthorizeURLOptions func(url.Values)
|
|
|
|
func ScopeAuthorizeURLWithScope(scope AuthScope) ScopeAuthorizeURLOptions {
|
|
return func(v url.Values) {
|
|
v.Set("scope", scope.String())
|
|
}
|
|
}
|
|
|
|
func ScopeAuthorizeURLWithRedirectURI(uri string) ScopeAuthorizeURLOptions {
|
|
return func(v url.Values) {
|
|
v.Set("redirect_uri", uri)
|
|
}
|
|
}
|
|
|
|
func ScopeAuthorizeURLWithState(state string) ScopeAuthorizeURLOptions {
|
|
return func(v url.Values) {
|
|
v.Set("state", state)
|
|
}
|
|
}
|
|
|
|
func ScopeAuthorizeURLWithForcePopup() ScopeAuthorizeURLOptions {
|
|
return func(v url.Values) {
|
|
v.Set("forcePopup", "true")
|
|
}
|
|
}
|