diff --git a/bite.pb.go b/bite.pb.go index cdc67b5..a477f45 100644 --- a/bite.pb.go +++ b/bite.pb.go @@ -21,7 +21,7 @@ var _ = math.Inf const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package type Bite struct { - Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Start uint64 `protobuf:"varint,2,opt,name=start,proto3" json:"start,omitempty"` Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -54,11 +54,11 @@ func (m *Bite) XXX_DiscardUnknown() { var xxx_messageInfo_Bite proto.InternalMessageInfo -func (m *Bite) GetKey() []byte { +func (m *Bite) GetKey() string { if m != nil { return m.Key } - return nil + return "" } func (m *Bite) GetStart() uint64 { @@ -82,12 +82,12 @@ func init() { func init() { proto.RegisterFile("bite.proto", fileDescriptor_e1ec993646b17549) } var fileDescriptor_e1ec993646b17549 = []byte{ - // 102 bytes of a gzipped FileDescriptorProto + // 105 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x4a, 0xca, 0x2c, 0x49, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0xc9, 0x4d, 0xcc, 0xcc, 0x53, 0x72, 0xe2, 0x62, 0x71, 0xca, 0x2c, 0x49, 0x15, 0x12, 0xe0, 0x62, 0xce, 0x4e, 0xad, 0x94, 0x60, 0x54, 0x60, 0xd4, - 0xe0, 0x09, 0x02, 0x31, 0x85, 0x44, 0xb8, 0x58, 0x8b, 0x4b, 0x12, 0x8b, 0x4a, 0x24, 0x98, 0x14, + 0xe0, 0x0c, 0x02, 0x31, 0x85, 0x44, 0xb8, 0x58, 0x8b, 0x4b, 0x12, 0x8b, 0x4a, 0x24, 0x98, 0x14, 0x18, 0x35, 0x58, 0x82, 0x20, 0x1c, 0x21, 0x21, 0x2e, 0x96, 0x94, 0xc4, 0x92, 0x44, 0x09, 0x66, - 0xb0, 0x42, 0x30, 0x3b, 0x89, 0x0d, 0x6c, 0xa0, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0xa3, 0xe1, - 0xe5, 0xfe, 0x5e, 0x00, 0x00, 0x00, + 0x05, 0x46, 0x0d, 0x9e, 0x20, 0x30, 0x3b, 0x89, 0x0d, 0x6c, 0xa0, 0x31, 0x20, 0x00, 0x00, 0xff, + 0xff, 0x28, 0xbd, 0x24, 0x95, 0x5e, 0x00, 0x00, 0x00, } diff --git a/main.go b/main.go index e60e8f0..9860514 100644 --- a/main.go +++ b/main.go @@ -1,8 +1,6 @@ package main; import ( - "encoding/binary" - "errors" "flag" "io/ioutil" "net/http" @@ -47,11 +45,6 @@ func main() { log.Fatal(http.ListenAndServe(listen, router)) } -// Marshalling keys and assorted helper functions -func validObj(obj string) bool { - return obj == "bite" || obj == "user" -} - // TODO: ensure security of regexp var validConversationRegexp = regexp.MustCompile(`^[a-zA-Z0-9-]+$`) @@ -59,28 +52,6 @@ func validConversation(conversation string) bool { return validConversationRegexp.MatchString(conversation) } -const conversationSeprator = '@' -const objSeprator = '+' - -func MarshalKey(obj, conversation string, start uint64) ([]byte, error) { - prefixBytes, err := MarshalKeyPrefix(obj, conversation) - if err != nil { - return nil, err - } - - startBytes := make([]byte, 8) - binary.BigEndian.PutUint64(startBytes, start) - - return append(prefixBytes, startBytes...), nil -} - -func MarshalKeyPrefix(obj, conversation string) ([]byte, error) { - if !validObj(obj) || !validConversation(conversation) { - return nil, errors.New("main: FormatKey: bad obj or conversation") - } - return []byte(obj + string(objSeprator) + conversation + string(conversationSeprator)), nil -} - func ParseStartString(start string) (uint64, error) { return strconv.ParseUint(start, 10, 64) } @@ -92,8 +63,9 @@ func PutBite(w http.ResponseWriter, r *http.Request, p httprouter.Params) { http.Error(w, http.StatusText(http.StatusBadRequest), http.StatusBadRequest) return } - key, err := MarshalKey("bite", p.ByName("key"), start) - if err != nil { + + key := p.ByName("key") + if !validConversation(key) { http.Error(w, http.StatusText(http.StatusBadRequest), http.StatusBadRequest) return } @@ -128,8 +100,8 @@ func PutBiteUser(w http.ResponseWriter, r *http.Request, p httprouter.Params) { return } - key, err := MarshalKey("user", p.ByName("key"), start) - if err != nil { + key := p.ByName("key") + if !validConversation(key) { http.Error(w, http.StatusText(http.StatusBadRequest), http.StatusBadRequest) return }