From 33887f5859f49df485375624d41cfff0e5aa902a Mon Sep 17 00:00:00 2001 From: Tit Petric Date: Sun, 2 Sep 2018 22:39:15 +0200 Subject: [PATCH] upd(all): error handling reading json request body --- crm/rest/request/field.go | 26 +++++- crm/rest/request/module.go | 155 ++++++++++++++++++++++++------- sam/rest/request/auth.go | 32 ++++++- sam/rest/request/channel.go | 110 ++++++++++++++++++---- sam/rest/request/message.go | 141 +++++++++++++++++++++++----- sam/rest/request/organisation.go | 74 ++++++++++++--- sam/rest/request/team.go | 97 +++++++++++++++---- sam/rest/request/user.go | 28 +++++- 8 files changed, 548 insertions(+), 115 deletions(-) diff --git a/crm/rest/request/field.go b/crm/rest/request/field.go index 88611e069..a082e1e5f 100644 --- a/crm/rest/request/field.go +++ b/crm/rest/request/field.go @@ -18,10 +18,14 @@ package request import ( "encoding/json" "github.com/go-chi/chi" + "github.com/jmoiron/sqlx/types" + "github.com/pkg/errors" + "io" "net/http" ) var _ = chi.URLParam +var _ = types.JSONText{} // Field list request parameters type FieldList struct { @@ -32,7 +36,14 @@ func NewFieldList() *FieldList { } func (f *FieldList) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(f) + var err error + err = json.NewDecoder(r.Body).Decode(f) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -46,7 +57,7 @@ func (f *FieldList) Fill(r *http.Request) error { post[name] = string(param[0]) } - return nil + return err } var _ RequestFiller = NewFieldList() @@ -61,7 +72,14 @@ func NewFieldType() *FieldType { } func (f *FieldType) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(f) + var err error + err = json.NewDecoder(r.Body).Decode(f) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -77,7 +95,7 @@ func (f *FieldType) Fill(r *http.Request) error { f.ID = chi.URLParam(r, "id") - return nil + return err } var _ RequestFiller = NewFieldType() diff --git a/crm/rest/request/module.go b/crm/rest/request/module.go index bf1782724..489b448d6 100644 --- a/crm/rest/request/module.go +++ b/crm/rest/request/module.go @@ -18,10 +18,14 @@ package request import ( "encoding/json" "github.com/go-chi/chi" + "github.com/jmoiron/sqlx/types" + "github.com/pkg/errors" + "io" "net/http" ) var _ = chi.URLParam +var _ = types.JSONText{} // Module list request parameters type ModuleList struct { @@ -33,7 +37,14 @@ func NewModuleList() *ModuleList { } func (m *ModuleList) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(m) + var err error + err = json.NewDecoder(r.Body).Decode(m) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -48,10 +59,11 @@ func (m *ModuleList) Fill(r *http.Request) error { } if val, ok := get["query"]; ok { + m.Query = val } - return nil + return err } var _ RequestFiller = NewModuleList() @@ -59,7 +71,7 @@ var _ RequestFiller = NewModuleList() // Module create request parameters type ModuleCreate struct { Name string - Fields string + Fields types.JSONText } func NewModuleCreate() *ModuleCreate { @@ -67,7 +79,14 @@ func NewModuleCreate() *ModuleCreate { } func (m *ModuleCreate) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(m) + var err error + err = json.NewDecoder(r.Body).Decode(m) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -82,13 +101,17 @@ func (m *ModuleCreate) Fill(r *http.Request) error { } if val, ok := post["name"]; ok { + m.Name = val } if val, ok := post["fields"]; ok { - m.Fields = val + + if m.Fields, err = parseJSONText(val); err != nil { + return err + } } - return nil + return err } var _ RequestFiller = NewModuleCreate() @@ -103,7 +126,14 @@ func NewModuleRead() *ModuleRead { } func (m *ModuleRead) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(m) + var err error + err = json.NewDecoder(r.Body).Decode(m) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -119,7 +149,7 @@ func (m *ModuleRead) Fill(r *http.Request) error { m.ID = parseUInt64(chi.URLParam(r, "id")) - return nil + return err } var _ RequestFiller = NewModuleRead() @@ -128,7 +158,7 @@ var _ RequestFiller = NewModuleRead() type ModuleEdit struct { ID uint64 Name string - Fields string + Fields types.JSONText } func NewModuleEdit() *ModuleEdit { @@ -136,7 +166,14 @@ func NewModuleEdit() *ModuleEdit { } func (m *ModuleEdit) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(m) + var err error + err = json.NewDecoder(r.Body).Decode(m) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -152,13 +189,17 @@ func (m *ModuleEdit) Fill(r *http.Request) error { m.ID = parseUInt64(chi.URLParam(r, "id")) if val, ok := post["name"]; ok { + m.Name = val } if val, ok := post["fields"]; ok { - m.Fields = val + + if m.Fields, err = parseJSONText(val); err != nil { + return err + } } - return nil + return err } var _ RequestFiller = NewModuleEdit() @@ -173,7 +214,14 @@ func NewModuleDelete() *ModuleDelete { } func (m *ModuleDelete) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(m) + var err error + err = json.NewDecoder(r.Body).Decode(m) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -189,7 +237,7 @@ func (m *ModuleDelete) Fill(r *http.Request) error { m.ID = parseUInt64(chi.URLParam(r, "id")) - return nil + return err } var _ RequestFiller = NewModuleDelete() @@ -204,7 +252,14 @@ func NewModuleContentList() *ModuleContentList { } func (m *ModuleContentList) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(m) + var err error + err = json.NewDecoder(r.Body).Decode(m) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -220,15 +275,15 @@ func (m *ModuleContentList) Fill(r *http.Request) error { m.Module = parseUInt64(chi.URLParam(r, "module")) - return nil + return err } var _ RequestFiller = NewModuleContentList() // Module content/create request parameters type ModuleContentCreate struct { - Module uint64 - Payload string + Module uint64 + Fields types.JSONText } func NewModuleContentCreate() *ModuleContentCreate { @@ -236,7 +291,14 @@ func NewModuleContentCreate() *ModuleContentCreate { } func (m *ModuleContentCreate) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(m) + var err error + err = json.NewDecoder(r.Body).Decode(m) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -251,11 +313,14 @@ func (m *ModuleContentCreate) Fill(r *http.Request) error { } m.Module = parseUInt64(chi.URLParam(r, "module")) - if val, ok := post["payload"]; ok { - m.Payload = val + if val, ok := post["fields"]; ok { + + if m.Fields, err = parseJSONText(val); err != nil { + return err + } } - return nil + return err } var _ RequestFiller = NewModuleContentCreate() @@ -271,7 +336,14 @@ func NewModuleContentRead() *ModuleContentRead { } func (m *ModuleContentRead) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(m) + var err error + err = json.NewDecoder(r.Body).Decode(m) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -288,16 +360,16 @@ func (m *ModuleContentRead) Fill(r *http.Request) error { m.Module = parseUInt64(chi.URLParam(r, "module")) m.ID = parseUInt64(chi.URLParam(r, "id")) - return nil + return err } var _ RequestFiller = NewModuleContentRead() // Module content/edit request parameters type ModuleContentEdit struct { - Module uint64 - ID uint64 - Payload string + Module uint64 + ID uint64 + Fields types.JSONText } func NewModuleContentEdit() *ModuleContentEdit { @@ -305,7 +377,14 @@ func NewModuleContentEdit() *ModuleContentEdit { } func (m *ModuleContentEdit) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(m) + var err error + err = json.NewDecoder(r.Body).Decode(m) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -321,11 +400,14 @@ func (m *ModuleContentEdit) Fill(r *http.Request) error { m.Module = parseUInt64(chi.URLParam(r, "module")) m.ID = parseUInt64(chi.URLParam(r, "id")) - if val, ok := post["payload"]; ok { - m.Payload = val + if val, ok := post["fields"]; ok { + + if m.Fields, err = parseJSONText(val); err != nil { + return err + } } - return nil + return err } var _ RequestFiller = NewModuleContentEdit() @@ -341,7 +423,14 @@ func NewModuleContentDelete() *ModuleContentDelete { } func (m *ModuleContentDelete) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(m) + var err error + err = json.NewDecoder(r.Body).Decode(m) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -358,7 +447,7 @@ func (m *ModuleContentDelete) Fill(r *http.Request) error { m.Module = parseUInt64(chi.URLParam(r, "module")) m.ID = parseUInt64(chi.URLParam(r, "id")) - return nil + return err } var _ RequestFiller = NewModuleContentDelete() diff --git a/sam/rest/request/auth.go b/sam/rest/request/auth.go index 6f9db9914..232bbd314 100644 --- a/sam/rest/request/auth.go +++ b/sam/rest/request/auth.go @@ -18,10 +18,14 @@ package request import ( "encoding/json" "github.com/go-chi/chi" + "github.com/jmoiron/sqlx/types" + "github.com/pkg/errors" + "io" "net/http" ) var _ = chi.URLParam +var _ = types.JSONText{} // Auth login request parameters type AuthLogin struct { @@ -34,7 +38,14 @@ func NewAuthLogin() *AuthLogin { } func (a *AuthLogin) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(a) + var err error + err = json.NewDecoder(r.Body).Decode(a) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -49,13 +60,15 @@ func (a *AuthLogin) Fill(r *http.Request) error { } if val, ok := post["username"]; ok { + a.Username = val } if val, ok := post["password"]; ok { + a.Password = val } - return nil + return err } var _ RequestFiller = NewAuthLogin() @@ -73,7 +86,14 @@ func NewAuthCreate() *AuthCreate { } func (a *AuthCreate) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(a) + var err error + err = json.NewDecoder(r.Body).Decode(a) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -88,19 +108,23 @@ func (a *AuthCreate) Fill(r *http.Request) error { } if val, ok := post["name"]; ok { + a.Name = val } if val, ok := post["email"]; ok { + a.Email = val } if val, ok := post["username"]; ok { + a.Username = val } if val, ok := post["password"]; ok { + a.Password = val } - return nil + return err } var _ RequestFiller = NewAuthCreate() diff --git a/sam/rest/request/channel.go b/sam/rest/request/channel.go index 1c8f0b887..f0e18352f 100644 --- a/sam/rest/request/channel.go +++ b/sam/rest/request/channel.go @@ -18,10 +18,14 @@ package request import ( "encoding/json" "github.com/go-chi/chi" + "github.com/jmoiron/sqlx/types" + "github.com/pkg/errors" + "io" "net/http" ) var _ = chi.URLParam +var _ = types.JSONText{} // Channel list request parameters type ChannelList struct { @@ -33,7 +37,14 @@ func NewChannelList() *ChannelList { } func (c *ChannelList) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(c) + var err error + err = json.NewDecoder(r.Body).Decode(c) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -48,10 +59,11 @@ func (c *ChannelList) Fill(r *http.Request) error { } if val, ok := get["query"]; ok { + c.Query = val } - return nil + return err } var _ RequestFiller = NewChannelList() @@ -67,7 +79,14 @@ func NewChannelCreate() *ChannelCreate { } func (c *ChannelCreate) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(c) + var err error + err = json.NewDecoder(r.Body).Decode(c) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -82,13 +101,15 @@ func (c *ChannelCreate) Fill(r *http.Request) error { } if val, ok := post["name"]; ok { + c.Name = val } if val, ok := post["topic"]; ok { + c.Topic = val } - return nil + return err } var _ RequestFiller = NewChannelCreate() @@ -107,7 +128,14 @@ func NewChannelEdit() *ChannelEdit { } func (c *ChannelEdit) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(c) + var err error + err = json.NewDecoder(r.Body).Decode(c) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -123,19 +151,23 @@ func (c *ChannelEdit) Fill(r *http.Request) error { c.ChannelID = parseUInt64(chi.URLParam(r, "channelID")) if val, ok := post["name"]; ok { + c.Name = val } if val, ok := post["topic"]; ok { + c.Topic = val } if val, ok := post["archive"]; ok { + c.Archive = parseBool(val) } if val, ok := post["organisationID"]; ok { + c.OrganisationID = parseUInt64(val) } - return nil + return err } var _ RequestFiller = NewChannelEdit() @@ -150,7 +182,14 @@ func NewChannelRead() *ChannelRead { } func (c *ChannelRead) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(c) + var err error + err = json.NewDecoder(r.Body).Decode(c) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -166,7 +205,7 @@ func (c *ChannelRead) Fill(r *http.Request) error { c.ChannelID = parseUInt64(chi.URLParam(r, "channelID")) - return nil + return err } var _ RequestFiller = NewChannelRead() @@ -181,7 +220,14 @@ func NewChannelDelete() *ChannelDelete { } func (c *ChannelDelete) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(c) + var err error + err = json.NewDecoder(r.Body).Decode(c) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -197,7 +243,7 @@ func (c *ChannelDelete) Fill(r *http.Request) error { c.ChannelID = parseUInt64(chi.URLParam(r, "channelID")) - return nil + return err } var _ RequestFiller = NewChannelDelete() @@ -212,7 +258,14 @@ func NewChannelMembers() *ChannelMembers { } func (c *ChannelMembers) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(c) + var err error + err = json.NewDecoder(r.Body).Decode(c) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -228,7 +281,7 @@ func (c *ChannelMembers) Fill(r *http.Request) error { c.ChannelID = parseUInt64(chi.URLParam(r, "channelID")) - return nil + return err } var _ RequestFiller = NewChannelMembers() @@ -243,7 +296,14 @@ func NewChannelJoin() *ChannelJoin { } func (c *ChannelJoin) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(c) + var err error + err = json.NewDecoder(r.Body).Decode(c) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -259,7 +319,7 @@ func (c *ChannelJoin) Fill(r *http.Request) error { c.ChannelID = parseUInt64(chi.URLParam(r, "channelID")) - return nil + return err } var _ RequestFiller = NewChannelJoin() @@ -275,7 +335,14 @@ func NewChannelPart() *ChannelPart { } func (c *ChannelPart) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(c) + var err error + err = json.NewDecoder(r.Body).Decode(c) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -292,7 +359,7 @@ func (c *ChannelPart) Fill(r *http.Request) error { c.ChannelID = parseUInt64(chi.URLParam(r, "channelID")) c.UserID = parseUInt64(chi.URLParam(r, "userID")) - return nil + return err } var _ RequestFiller = NewChannelPart() @@ -308,7 +375,14 @@ func NewChannelInvite() *ChannelInvite { } func (c *ChannelInvite) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(c) + var err error + err = json.NewDecoder(r.Body).Decode(c) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -324,7 +398,7 @@ func (c *ChannelInvite) Fill(r *http.Request) error { c.ChannelID = parseUInt64(chi.URLParam(r, "channelID")) - return nil + return err } var _ RequestFiller = NewChannelInvite() diff --git a/sam/rest/request/message.go b/sam/rest/request/message.go index 8789a77af..065af0cb4 100644 --- a/sam/rest/request/message.go +++ b/sam/rest/request/message.go @@ -18,10 +18,14 @@ package request import ( "encoding/json" "github.com/go-chi/chi" + "github.com/jmoiron/sqlx/types" + "github.com/pkg/errors" + "io" "net/http" ) var _ = chi.URLParam +var _ = types.JSONText{} // Message create request parameters type MessageCreate struct { @@ -34,7 +38,14 @@ func NewMessageCreate() *MessageCreate { } func (m *MessageCreate) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(m) + var err error + err = json.NewDecoder(r.Body).Decode(m) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -49,11 +60,12 @@ func (m *MessageCreate) Fill(r *http.Request) error { } if val, ok := post["message"]; ok { + m.Message = val } m.ChannelID = parseUInt64(chi.URLParam(r, "channelID")) - return nil + return err } var _ RequestFiller = NewMessageCreate() @@ -69,7 +81,14 @@ func NewMessageHistory() *MessageHistory { } func (m *MessageHistory) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(m) + var err error + err = json.NewDecoder(r.Body).Decode(m) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -84,11 +103,12 @@ func (m *MessageHistory) Fill(r *http.Request) error { } if val, ok := get["lastMessageID"]; ok { + m.LastMessageID = parseUInt64(val) } m.ChannelID = parseUInt64(chi.URLParam(r, "channelID")) - return nil + return err } var _ RequestFiller = NewMessageHistory() @@ -105,7 +125,14 @@ func NewMessageEdit() *MessageEdit { } func (m *MessageEdit) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(m) + var err error + err = json.NewDecoder(r.Body).Decode(m) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -122,10 +149,11 @@ func (m *MessageEdit) Fill(r *http.Request) error { m.MessageID = parseUInt64(chi.URLParam(r, "messageID")) m.ChannelID = parseUInt64(chi.URLParam(r, "channelID")) if val, ok := post["message"]; ok { + m.Message = val } - return nil + return err } var _ RequestFiller = NewMessageEdit() @@ -141,7 +169,14 @@ func NewMessageDelete() *MessageDelete { } func (m *MessageDelete) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(m) + var err error + err = json.NewDecoder(r.Body).Decode(m) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -158,7 +193,7 @@ func (m *MessageDelete) Fill(r *http.Request) error { m.MessageID = parseUInt64(chi.URLParam(r, "messageID")) m.ChannelID = parseUInt64(chi.URLParam(r, "channelID")) - return nil + return err } var _ RequestFiller = NewMessageDelete() @@ -173,7 +208,14 @@ func NewMessageAttach() *MessageAttach { } func (m *MessageAttach) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(m) + var err error + err = json.NewDecoder(r.Body).Decode(m) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -189,7 +231,7 @@ func (m *MessageAttach) Fill(r *http.Request) error { m.ChannelID = parseUInt64(chi.URLParam(r, "channelID")) - return nil + return err } var _ RequestFiller = NewMessageAttach() @@ -206,7 +248,14 @@ func NewMessageSearch() *MessageSearch { } func (m *MessageSearch) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(m) + var err error + err = json.NewDecoder(r.Body).Decode(m) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -221,14 +270,16 @@ func (m *MessageSearch) Fill(r *http.Request) error { } if val, ok := get["query"]; ok { + m.Query = val } if val, ok := get["message_type"]; ok { + m.Message_type = val } m.ChannelID = parseUInt64(chi.URLParam(r, "channelID")) - return nil + return err } var _ RequestFiller = NewMessageSearch() @@ -244,7 +295,14 @@ func NewMessagePin() *MessagePin { } func (m *MessagePin) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(m) + var err error + err = json.NewDecoder(r.Body).Decode(m) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -261,7 +319,7 @@ func (m *MessagePin) Fill(r *http.Request) error { m.MessageID = parseUInt64(chi.URLParam(r, "messageID")) m.ChannelID = parseUInt64(chi.URLParam(r, "channelID")) - return nil + return err } var _ RequestFiller = NewMessagePin() @@ -277,7 +335,14 @@ func NewMessageUnpin() *MessageUnpin { } func (m *MessageUnpin) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(m) + var err error + err = json.NewDecoder(r.Body).Decode(m) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -294,7 +359,7 @@ func (m *MessageUnpin) Fill(r *http.Request) error { m.MessageID = parseUInt64(chi.URLParam(r, "messageID")) m.ChannelID = parseUInt64(chi.URLParam(r, "channelID")) - return nil + return err } var _ RequestFiller = NewMessageUnpin() @@ -310,7 +375,14 @@ func NewMessageFlag() *MessageFlag { } func (m *MessageFlag) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(m) + var err error + err = json.NewDecoder(r.Body).Decode(m) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -327,7 +399,7 @@ func (m *MessageFlag) Fill(r *http.Request) error { m.MessageID = parseUInt64(chi.URLParam(r, "messageID")) m.ChannelID = parseUInt64(chi.URLParam(r, "channelID")) - return nil + return err } var _ RequestFiller = NewMessageFlag() @@ -343,7 +415,14 @@ func NewMessageUnflag() *MessageUnflag { } func (m *MessageUnflag) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(m) + var err error + err = json.NewDecoder(r.Body).Decode(m) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -360,7 +439,7 @@ func (m *MessageUnflag) Fill(r *http.Request) error { m.MessageID = parseUInt64(chi.URLParam(r, "messageID")) m.ChannelID = parseUInt64(chi.URLParam(r, "channelID")) - return nil + return err } var _ RequestFiller = NewMessageUnflag() @@ -377,7 +456,14 @@ func NewMessageReact() *MessageReact { } func (m *MessageReact) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(m) + var err error + err = json.NewDecoder(r.Body).Decode(m) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -395,7 +481,7 @@ func (m *MessageReact) Fill(r *http.Request) error { m.Reaction = chi.URLParam(r, "reaction") m.ChannelID = parseUInt64(chi.URLParam(r, "channelID")) - return nil + return err } var _ RequestFiller = NewMessageReact() @@ -412,7 +498,14 @@ func NewMessageUnreact() *MessageUnreact { } func (m *MessageUnreact) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(m) + var err error + err = json.NewDecoder(r.Body).Decode(m) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -430,7 +523,7 @@ func (m *MessageUnreact) Fill(r *http.Request) error { m.Reaction = chi.URLParam(r, "reaction") m.ChannelID = parseUInt64(chi.URLParam(r, "channelID")) - return nil + return err } var _ RequestFiller = NewMessageUnreact() diff --git a/sam/rest/request/organisation.go b/sam/rest/request/organisation.go index ec0efb67c..e70637d4e 100644 --- a/sam/rest/request/organisation.go +++ b/sam/rest/request/organisation.go @@ -18,10 +18,14 @@ package request import ( "encoding/json" "github.com/go-chi/chi" + "github.com/jmoiron/sqlx/types" + "github.com/pkg/errors" + "io" "net/http" ) var _ = chi.URLParam +var _ = types.JSONText{} // Organisation list request parameters type OrganisationList struct { @@ -33,7 +37,14 @@ func NewOrganisationList() *OrganisationList { } func (o *OrganisationList) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(o) + var err error + err = json.NewDecoder(r.Body).Decode(o) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -48,10 +59,11 @@ func (o *OrganisationList) Fill(r *http.Request) error { } if val, ok := get["query"]; ok { + o.Query = val } - return nil + return err } var _ RequestFiller = NewOrganisationList() @@ -66,7 +78,14 @@ func NewOrganisationCreate() *OrganisationCreate { } func (o *OrganisationCreate) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(o) + var err error + err = json.NewDecoder(r.Body).Decode(o) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -81,10 +100,11 @@ func (o *OrganisationCreate) Fill(r *http.Request) error { } if val, ok := post["name"]; ok { + o.Name = val } - return nil + return err } var _ RequestFiller = NewOrganisationCreate() @@ -100,7 +120,14 @@ func NewOrganisationEdit() *OrganisationEdit { } func (o *OrganisationEdit) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(o) + var err error + err = json.NewDecoder(r.Body).Decode(o) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -116,10 +143,11 @@ func (o *OrganisationEdit) Fill(r *http.Request) error { o.ID = parseUInt64(chi.URLParam(r, "id")) if val, ok := post["name"]; ok { + o.Name = val } - return nil + return err } var _ RequestFiller = NewOrganisationEdit() @@ -134,7 +162,14 @@ func NewOrganisationRemove() *OrganisationRemove { } func (o *OrganisationRemove) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(o) + var err error + err = json.NewDecoder(r.Body).Decode(o) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -150,7 +185,7 @@ func (o *OrganisationRemove) Fill(r *http.Request) error { o.ID = parseUInt64(chi.URLParam(r, "id")) - return nil + return err } var _ RequestFiller = NewOrganisationRemove() @@ -165,7 +200,14 @@ func NewOrganisationRead() *OrganisationRead { } func (o *OrganisationRead) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(o) + var err error + err = json.NewDecoder(r.Body).Decode(o) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -180,10 +222,11 @@ func (o *OrganisationRead) Fill(r *http.Request) error { } if val, ok := get["id"]; ok { + o.ID = parseUInt64(val) } - return nil + return err } var _ RequestFiller = NewOrganisationRead() @@ -198,7 +241,14 @@ func NewOrganisationArchive() *OrganisationArchive { } func (o *OrganisationArchive) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(o) + var err error + err = json.NewDecoder(r.Body).Decode(o) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -214,7 +264,7 @@ func (o *OrganisationArchive) Fill(r *http.Request) error { o.ID = parseUInt64(chi.URLParam(r, "id")) - return nil + return err } var _ RequestFiller = NewOrganisationArchive() diff --git a/sam/rest/request/team.go b/sam/rest/request/team.go index 933b36658..7c9da14ad 100644 --- a/sam/rest/request/team.go +++ b/sam/rest/request/team.go @@ -18,10 +18,14 @@ package request import ( "encoding/json" "github.com/go-chi/chi" + "github.com/jmoiron/sqlx/types" + "github.com/pkg/errors" + "io" "net/http" ) var _ = chi.URLParam +var _ = types.JSONText{} // Team list request parameters type TeamList struct { @@ -33,7 +37,14 @@ func NewTeamList() *TeamList { } func (t *TeamList) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(t) + var err error + err = json.NewDecoder(r.Body).Decode(t) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -48,10 +59,11 @@ func (t *TeamList) Fill(r *http.Request) error { } if val, ok := get["query"]; ok { + t.Query = val } - return nil + return err } var _ RequestFiller = NewTeamList() @@ -67,7 +79,14 @@ func NewTeamCreate() *TeamCreate { } func (t *TeamCreate) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(t) + var err error + err = json.NewDecoder(r.Body).Decode(t) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -82,10 +101,11 @@ func (t *TeamCreate) Fill(r *http.Request) error { } if val, ok := post["name"]; ok { + t.Name = val } - return nil + return err } var _ RequestFiller = NewTeamCreate() @@ -102,7 +122,14 @@ func NewTeamEdit() *TeamEdit { } func (t *TeamEdit) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(t) + var err error + err = json.NewDecoder(r.Body).Decode(t) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -118,10 +145,11 @@ func (t *TeamEdit) Fill(r *http.Request) error { t.TeamID = parseUInt64(chi.URLParam(r, "teamID")) if val, ok := post["name"]; ok { + t.Name = val } - return nil + return err } var _ RequestFiller = NewTeamEdit() @@ -136,7 +164,14 @@ func NewTeamRead() *TeamRead { } func (t *TeamRead) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(t) + var err error + err = json.NewDecoder(r.Body).Decode(t) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -152,7 +187,7 @@ func (t *TeamRead) Fill(r *http.Request) error { t.TeamID = parseUInt64(chi.URLParam(r, "teamID")) - return nil + return err } var _ RequestFiller = NewTeamRead() @@ -167,7 +202,14 @@ func NewTeamRemove() *TeamRemove { } func (t *TeamRemove) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(t) + var err error + err = json.NewDecoder(r.Body).Decode(t) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -183,7 +225,7 @@ func (t *TeamRemove) Fill(r *http.Request) error { t.TeamID = parseUInt64(chi.URLParam(r, "teamID")) - return nil + return err } var _ RequestFiller = NewTeamRemove() @@ -198,7 +240,14 @@ func NewTeamArchive() *TeamArchive { } func (t *TeamArchive) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(t) + var err error + err = json.NewDecoder(r.Body).Decode(t) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -214,7 +263,7 @@ func (t *TeamArchive) Fill(r *http.Request) error { t.TeamID = parseUInt64(chi.URLParam(r, "teamID")) - return nil + return err } var _ RequestFiller = NewTeamArchive() @@ -230,7 +279,14 @@ func NewTeamMove() *TeamMove { } func (t *TeamMove) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(t) + var err error + err = json.NewDecoder(r.Body).Decode(t) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -246,10 +302,11 @@ func (t *TeamMove) Fill(r *http.Request) error { t.TeamID = parseUInt64(chi.URLParam(r, "teamID")) if val, ok := post["organisation_id"]; ok { + t.Organisation_id = parseUInt64(val) } - return nil + return err } var _ RequestFiller = NewTeamMove() @@ -265,7 +322,14 @@ func NewTeamMerge() *TeamMerge { } func (t *TeamMerge) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(t) + var err error + err = json.NewDecoder(r.Body).Decode(t) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -281,10 +345,11 @@ func (t *TeamMerge) Fill(r *http.Request) error { t.TeamID = parseUInt64(chi.URLParam(r, "teamID")) if val, ok := post["destination"]; ok { + t.Destination = parseUInt64(val) } - return nil + return err } var _ RequestFiller = NewTeamMerge() diff --git a/sam/rest/request/user.go b/sam/rest/request/user.go index ad315a518..166be4d3c 100644 --- a/sam/rest/request/user.go +++ b/sam/rest/request/user.go @@ -18,10 +18,14 @@ package request import ( "encoding/json" "github.com/go-chi/chi" + "github.com/jmoiron/sqlx/types" + "github.com/pkg/errors" + "io" "net/http" ) var _ = chi.URLParam +var _ = types.JSONText{} // User search request parameters type UserSearch struct { @@ -33,7 +37,14 @@ func NewUserSearch() *UserSearch { } func (u *UserSearch) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(u) + var err error + err = json.NewDecoder(r.Body).Decode(u) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -48,10 +59,11 @@ func (u *UserSearch) Fill(r *http.Request) error { } if val, ok := get["query"]; ok { + u.Query = val } - return nil + return err } var _ RequestFiller = NewUserSearch() @@ -67,7 +79,14 @@ func NewUserMessage() *UserMessage { } func (u *UserMessage) Fill(r *http.Request) error { - json.NewDecoder(r.Body).Decode(u) + var err error + err = json.NewDecoder(r.Body).Decode(u) + switch { + case err == io.EOF: + err = nil + case err != nil: + err = errors.Wrap(err, "error parsing http request body") + } r.ParseForm() get := map[string]string{} @@ -83,10 +102,11 @@ func (u *UserMessage) Fill(r *http.Request) error { u.UserID = parseUInt64(chi.URLParam(r, "userID")) if val, ok := post["message"]; ok { + u.Message = val } - return nil + return err } var _ RequestFiller = NewUserMessage()