initial import
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
parent
519686a177
commit
43478edf95
7
go.mod
Normal file
7
go.mod
Normal file
@ -0,0 +1,7 @@
|
||||
module github.com/unistack-org/drpc-transport-http
|
||||
|
||||
go 1.17
|
||||
|
||||
require storj.io/drpc v0.0.30
|
||||
|
||||
require github.com/zeebo/errs v1.2.2 // indirect
|
10
go.sum
Normal file
10
go.sum
Normal file
@ -0,0 +1,10 @@
|
||||
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0=
|
||||
github.com/zeebo/errs v1.2.2 h1:5NFypMTuSdoySVTqlNs1dEoU21QVamMQJxW/Fii5O7g=
|
||||
github.com/zeebo/errs v1.2.2/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
storj.io/drpc v0.0.30 h1:jqPe4T9KEu3CDBI05A2hCMgMSHLtd/E0N0yTF9QreIE=
|
||||
storj.io/drpc v0.0.30/go.mod h1:6rcOyR/QQkSTX/9L5ZGtlZaE2PtXTTZl8d+ulSeeYEg=
|
58
http.go
Normal file
58
http.go
Normal file
@ -0,0 +1,58 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
|
||||
"storj.io/drpc"
|
||||
)
|
||||
|
||||
var _ drpc.Transport = &httpTransport{}
|
||||
|
||||
type httpTransport struct {
|
||||
c *http.Client
|
||||
method string
|
||||
endpoint string
|
||||
ct string
|
||||
closed bool
|
||||
}
|
||||
|
||||
func NewTransport(c *http.Client, endpoint, method, ct string) *httpTransport {
|
||||
if ct == "" {
|
||||
ct = "application/drpc"
|
||||
}
|
||||
return &httpTransport{c: c, method: method, endpoint: endpoint, ct: ct}
|
||||
}
|
||||
|
||||
func (t *httpTransport) Read(buf []byte) (int, error) {
|
||||
req, err := http.NewRequest(t.method, t.endpoint, nil)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
req.Header.Add("Content-Type", t.ct)
|
||||
rsp, err := t.c.Do(req)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
buf, err = ioutil.ReadAll(rsp.Body)
|
||||
return len(buf), err
|
||||
}
|
||||
|
||||
func (t *httpTransport) Write(buf []byte) (int, error) {
|
||||
req, err := http.NewRequest(t.method, t.endpoint, bytes.NewReader(buf))
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
req.Header.Add("Content-Type", t.ct)
|
||||
_, err = t.c.Do(req)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return len(buf), err
|
||||
}
|
||||
|
||||
func (t *httpTransport) Close() error {
|
||||
t.closed = true
|
||||
return nil
|
||||
}
|
Loading…
Reference in New Issue
Block a user