summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/mrexodia/wray/http_transport.go
diff options
context:
space:
mode:
authorWim <wim@42.be>2016-09-04 20:03:07 +0200
committerWim <wim@42.be>2016-09-04 20:04:43 +0200
commit12389d602eecf4adab0e394da19b2b808cb489b1 (patch)
tree80d6d8c00ed31fdcd60540d7c65afa6e7d2d83d6 /vendor/github.com/mrexodia/wray/http_transport.go
parent44144587a0314b7e2c719d279116ac86b657657e (diff)
downloadmatterbridge-msglm-12389d602eecf4adab0e394da19b2b808cb489b1.tar.gz
matterbridge-msglm-12389d602eecf4adab0e394da19b2b808cb489b1.tar.bz2
matterbridge-msglm-12389d602eecf4adab0e394da19b2b808cb489b1.zip
Add Gitter support
Diffstat (limited to 'vendor/github.com/mrexodia/wray/http_transport.go')
-rw-r--r--vendor/github.com/mrexodia/wray/http_transport.go55
1 files changed, 55 insertions, 0 deletions
diff --git a/vendor/github.com/mrexodia/wray/http_transport.go b/vendor/github.com/mrexodia/wray/http_transport.go
new file mode 100644
index 00000000..f9465832
--- /dev/null
+++ b/vendor/github.com/mrexodia/wray/http_transport.go
@@ -0,0 +1,55 @@
+package wray
+
+import (
+ "bytes"
+ "encoding/json"
+ "errors"
+ "io/ioutil"
+ "net/http"
+ "net/url"
+)
+
+type HttpTransport struct {
+ url string
+ SendHook func(data map[string]interface{})
+}
+
+func (self HttpTransport) isUsable(clientUrl string) bool {
+ parsedUrl, err := url.Parse(clientUrl)
+ if err != nil {
+ return false
+ }
+ if parsedUrl.Scheme == "http" || parsedUrl.Scheme == "https" {
+ return true
+ }
+ return false
+}
+
+func (self HttpTransport) connectionType() string {
+ return "long-polling"
+}
+
+func (self HttpTransport) send(data map[string]interface{}) (Response, error) {
+ if self.SendHook != nil {
+ self.SendHook(data)
+ }
+ dataBytes, _ := json.Marshal(data)
+ buffer := bytes.NewBuffer(dataBytes)
+ responseData, err := http.Post(self.url, "application/json", buffer)
+ if err != nil {
+ return Response{}, err
+ }
+ if responseData.StatusCode != 200 {
+ return Response{}, errors.New(responseData.Status)
+ }
+ readData, _ := ioutil.ReadAll(responseData.Body)
+ responseData.Body.Close()
+ var jsonData []interface{}
+ json.Unmarshal(readData, &jsonData)
+ response := newResponse(jsonData)
+ return response, nil
+}
+
+func (self *HttpTransport) setUrl(url string) {
+ self.url = url
+}