From df72079e6f11fb6cc8a268c0445b51a7116ba8db Mon Sep 17 00:00:00 2001 From: liangzy Date: Mon, 3 Aug 2020 20:48:58 +0800 Subject: [PATCH] init project --- .gitignore | 9 ++++ sdk/auth/crediantial.go | 6 +++ sdk/client.go | 101 +++++++++++++++++++++++++++++++++++++ sdk/config.go | 16 ++++++ sdk/request/request.go | 15 ++++++ sdk/request/rpc_request.go | 5 ++ sdk/response/response.go | 4 ++ services/jedi/client.go | 11 ++++ services/jedi/send_sms.go | 1 + 9 files changed, 168 insertions(+) create mode 100644 .gitignore create mode 100644 sdk/auth/crediantial.go create mode 100644 sdk/client.go create mode 100644 sdk/config.go create mode 100644 sdk/request/request.go create mode 100644 sdk/request/rpc_request.go create mode 100644 sdk/response/response.go create mode 100644 services/jedi/client.go create mode 100644 services/jedi/send_sms.go diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..173454b --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +# Created by .ignore support plugin (hsz.mobi) +### Example user template template +### Example user template + +# IntelliJ project files +.idea +*.iml +out +gen diff --git a/sdk/auth/crediantial.go b/sdk/auth/crediantial.go new file mode 100644 index 0000000..d07f45f --- /dev/null +++ b/sdk/auth/crediantial.go @@ -0,0 +1,6 @@ +package auth + +type Creditial struct { + AccessKeyId string + AccessKeySecret string +} diff --git a/sdk/client.go b/sdk/client.go new file mode 100644 index 0000000..6372ca7 --- /dev/null +++ b/sdk/client.go @@ -0,0 +1,101 @@ +package sdk + +import ( + "context" + "fmt" + "golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/auth" + "golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/request" + "golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/response" + "net" + "net/http" + "runtime" + "strings" + "time" +) + +var Version = "0.0.1" +var defaultConnectTimeout = 5 * time.Second +var defaultReadTimeout = 10 * time.Second +var DefaultUserAgent = fmt.Sprintf("GaoreGoSdk (%s;%s) Golang/%s Core/%s", runtime.GOOS, runtime.GOARCH, strings.Trim(runtime.Version(), "go"), Version) + +type Client struct { + Host string + httpClient *http.Client + isInsecure bool + signer *auth.Creditial + readTimeout time.Duration + connectTimeout time.Duration + config *Config +} + +func (client *Client) InitWithOptions(host string, config *Config, creditial auth.Creditial) (err error) { + client.httpClient = &http.Client{} + + if config.Transport != nil { + client.httpClient.Transport = config.Transport + } else if config.HttpTransport != nil { + client.httpClient.Transport = config.HttpTransport + } + + if config.Timeout > 0 { + client.httpClient.Timeout = config.Timeout + } + + return nil +} + +func (client *Client) InitWithConfig() (config *Config) { + if client.config != nil { + return client.config + } else { + return NewConfig() + } +} + +func Timeout(connectTimeout time.Duration) func(ctx context.Context, net, addr string) (c net.Conn, err error) { + return func(ctx context.Context, network, address string) (c net.Conn, err error) { + return (&net.Dialer{ + Timeout: connectTimeout, + DualStack: true, + }).DialContext(ctx, network, address) + } +} + +func (client *Client) setTimeOut(request request.AcsRequest) { + readTimeout, connectTimeout := client.getTimeOut(request) + client.httpClient.Timeout = readTimeout + if trans, ok := client.httpClient.Transport.(*http.Transport); ok && trans != nil { + trans.DialContext = Timeout(connectTimeout) + client.httpClient.Transport = trans + } else if client.httpClient.Transport == nil { + client.httpClient.Transport = &http.Transport{ + DialContext: Timeout(connectTimeout), + } + } +} + +func (client *Client) getTimeOut(request request.AcsRequest) (time.Duration, time.Duration) { + readTimeOut := defaultReadTimeout + connectTimeOut := defaultConnectTimeout + + reqReadTimeout := request.GetReadTimeout() + reqConnectTimeout := request.GetConnectTimeout() + if reqReadTimeout != 0*time.Millisecond { + readTimeOut = reqReadTimeout + } else if client.readTimeout != 0*time.Microsecond { + readTimeOut = client.readTimeout + } else if client.httpClient.Timeout != 0 { + readTimeOut = client.httpClient.Timeout + } + + if reqConnectTimeout != 0*time.Microsecond { + connectTimeOut = reqConnectTimeout + } else if client.connectTimeout != 0*time.Millisecond { + connectTimeOut = client.connectTimeout + } + return readTimeOut, connectTimeOut +} + +func (client *Client) DoAction(request request.AcsRequest, response response.AcsResponse) (err error) { + return nil +} diff --git a/sdk/config.go b/sdk/config.go new file mode 100644 index 0000000..11db32a --- /dev/null +++ b/sdk/config.go @@ -0,0 +1,16 @@ +package sdk + +import ( + "net/http" + "time" +) + +type Config struct { + Timeout time.Duration + HttpTransport *http.Transport `default:""` + Transport http.RoundTripper `default:""` +} + +func NewConfig() *Config { + return &Config{} +} diff --git a/sdk/request/request.go b/sdk/request/request.go new file mode 100644 index 0000000..716025b --- /dev/null +++ b/sdk/request/request.go @@ -0,0 +1,15 @@ +package request + +import "time" + +type AcsRequest interface { + GetReadTimeout() time.Duration + GetConnectTimeout() time.Duration + SetReadTimeout(readTimeOut time.Duration) + SetConnectTimeout(connectTimeOut time.Duration) +} + +type baseRequest struct { + Scheme string + Method string +} diff --git a/sdk/request/rpc_request.go b/sdk/request/rpc_request.go new file mode 100644 index 0000000..c1464d5 --- /dev/null +++ b/sdk/request/rpc_request.go @@ -0,0 +1,5 @@ +package request + +type RpcRequest struct { + *baseRequest +} diff --git a/sdk/response/response.go b/sdk/response/response.go new file mode 100644 index 0000000..25c14ba --- /dev/null +++ b/sdk/response/response.go @@ -0,0 +1,4 @@ +package response + +type AcsResponse interface { +} diff --git a/services/jedi/client.go b/services/jedi/client.go new file mode 100644 index 0000000..70705df --- /dev/null +++ b/services/jedi/client.go @@ -0,0 +1,11 @@ +package jedi + +import "golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk" + +type Client struct { + sdk.Client +} + +func NewClientWithAccessKey(accesskey, secrect string) *Client { + return nil +} diff --git a/services/jedi/send_sms.go b/services/jedi/send_sms.go new file mode 100644 index 0000000..7148051 --- /dev/null +++ b/services/jedi/send_sms.go @@ -0,0 +1 @@ +package jedi