/
helper.go
44 lines (35 loc) · 1020 Bytes
/
helper.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package metathings_device_cloud_service
import (
"errors"
"net/http"
"strconv"
"strings"
"github.com/golang/protobuf/proto"
grpc_helper "github.com/nayotta/metathings/pkg/common/grpc"
)
var (
ErrUnexpectedContentType = errors.New("unexpected content type")
)
func ParseHttpRequestBody(r *http.Request, v proto.Message) error {
if !strings.HasPrefix(strings.ToLower(r.Header.Get("Content-Type")), "application/json") {
return ErrUnexpectedContentType
}
if err := grpc_helper.JSONPBUnmarshaler.Unmarshal(r.Body, v); err != nil {
return err
}
return nil
}
func ParseHttpResponseBody(v proto.Message) ([]byte, error) {
s, err := grpc_helper.JSONPBMarshaler.MarshalToString(v)
if err != nil {
return nil, err
}
return []byte(s), nil
}
func GetTokenFromHeader(r *http.Request) string {
return strings.TrimPrefix(r.Header.Get("Authorization"), "Bearer ")
}
func GetSessionFromHeader(r *http.Request) int64 {
sess, _ := strconv.ParseInt(r.Header.Get("MT-Module-Session"), 10, 64)
return sess
}