diff options
author | Wim <wim@42.be> | 2016-09-04 20:03:07 +0200 |
---|---|---|
committer | Wim <wim@42.be> | 2016-09-04 20:04:43 +0200 |
commit | 12389d602eecf4adab0e394da19b2b808cb489b1 (patch) | |
tree | 80d6d8c00ed31fdcd60540d7c65afa6e7d2d83d6 /vendor/github.com/mrexodia/wray/http_transport.go | |
parent | 44144587a0314b7e2c719d279116ac86b657657e (diff) | |
download | matterbridge-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.go | 55 |
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 +} |