diff options
author | Ivanik <ivan170102@gmail.com> | 2021-01-29 04:25:14 +0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-29 00:25:14 +0100 |
commit | 8764be74616bde87bbbf6c32901cd9f43264d1e0 (patch) | |
tree | 88902ba17d6a6d245cadb7e0b277bee7ef424f99 /vendor/github.com/SevereCloud/vksdk/v2/internal/transport.go | |
parent | 5dd15ef8e716c65accb6cd021095c0e19913d55f (diff) | |
download | matterbridge-msglm-8764be74616bde87bbbf6c32901cd9f43264d1e0.tar.gz matterbridge-msglm-8764be74616bde87bbbf6c32901cd9f43264d1e0.tar.bz2 matterbridge-msglm-8764be74616bde87bbbf6c32901cd9f43264d1e0.zip |
Add vk bridge (#1372)
* Add vk bridge
* Vk bridge attachments
* Vk bridge forwarded messages
* Vk bridge sample config and code cleanup
* Vk bridge add vendor
* Vk bridge message edit
* Vk bridge: fix fetching names of other bots
* Vk bridge: code cleanup
* Vk bridge: fix shadows declaration
* Vk bridge: remove UseFileURL
Diffstat (limited to 'vendor/github.com/SevereCloud/vksdk/v2/internal/transport.go')
-rw-r--r-- | vendor/github.com/SevereCloud/vksdk/v2/internal/transport.go | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/internal/transport.go b/vendor/github.com/SevereCloud/vksdk/v2/internal/transport.go new file mode 100644 index 00000000..2ff8fbb3 --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/internal/transport.go @@ -0,0 +1,74 @@ +/* +Package internal unimportable +*/ +package internal // import "github.com/SevereCloud/vksdk/v2/internal" + +import ( + "context" + "net/http" + + "github.com/SevereCloud/vksdk/v2" +) + +// UserAgent module. +const UserAgent = "vksdk/" + vksdk.Version + " (+https://github.com/SevereCloud/vksdk)" + +// ContextKey is just an empty struct. It exists so HTTPClient can be +// an immutable public variable with a unique type. It's immutable +// because nobody else can create a ContextKey, being unexported. +type ContextKey int + +// ContextKey list. +const ( + HTTPClientKey ContextKey = iota + UserAgentKey + GroupIDKey + EventIDKey + LongPollTsKey + CallbackRetryCounterKey + CallbackRetryAfterKey +) + +// ContextClient return *http.Client. +func ContextClient(ctx context.Context) *http.Client { + if ctx != nil { + if hc, ok := ctx.Value(HTTPClientKey).(*http.Client); ok { + return hc + } + } + + return http.DefaultClient +} + +// ContextUserAgent return User-Agent from context. +func ContextUserAgent(ctx context.Context) string { + if ctx != nil { + if hc, ok := ctx.Value(UserAgentKey).(string); ok { + return hc + } + } + + return UserAgent +} + +// DoRequest sends an HTTP request and returns an HTTP response. +// +// The provided ctx must be non-nil. If it is canceled or times out, +// ctx.Err() will be returned. +func DoRequest(ctx context.Context, req *http.Request) (*http.Response, error) { + client := ContextClient(ctx) + + if req.UserAgent() == "" { + req.Header.Set("User-Agent", ContextUserAgent(ctx)) + } + + resp, err := client.Do(req.WithContext(ctx)) + // If we got an error, and the context has been canceled, + // the context's error is probably more useful. + if err != nil { + <-ctx.Done() + err = ctx.Err() + } + + return resp, err +} |