diff --git a/codegen/templates/http_handlers.tpl b/codegen/templates/http_handlers.tpl index 34e0ed627..871b7013a 100644 --- a/codegen/templates/http_handlers.tpl +++ b/codegen/templates/http_handlers.tpl @@ -11,6 +11,6 @@ import ( {foreach $calls as $call} func ({self}h *{name}Handlers) {call.name|capitalize}(w http.ResponseWriter, r *http.Request) { params := {name|capitalize}{call.name|capitalize}Request{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return {self}h.{name}.{call.name|capitalize}(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return {self}h.{name}.{call.name|capitalize}(r.Context(), params) }) } {/foreach} diff --git a/codegen/templates/http_interfaces.tpl b/codegen/templates/http_interfaces.tpl index 5c24138cd..5df3a171c 100644 --- a/codegen/templates/http_interfaces.tpl +++ b/codegen/templates/http_interfaces.tpl @@ -3,6 +3,7 @@ package {package} {load warning.tpl} import ( + "context" "net/http" ) @@ -14,7 +15,7 @@ type {name}Handlers struct { // Internal API interface type {name}API interface { {foreach $calls as $call} - {call.name|capitalize}(*{name|expose}{call.name|capitalize}Request) (interface{}, error) + {call.name|capitalize}(context.Context, *{name|expose}{call.name|capitalize}Request) (interface{}, error) {/foreach} // Authenticate API requests diff --git a/crm/rest/field.go b/crm/rest/field.go index 8a36b48b6..ce9546651 100644 --- a/crm/rest/field.go +++ b/crm/rest/field.go @@ -26,10 +26,10 @@ func (Field) New() *Field { return &Field{service: service.Field()} } -func (self *Field) List(_ *server.FieldListRequest) (interface{}, error) { - return self.service.Find(context.TODO()) +func (self *Field) List(ctx context.Context,_ *server.FieldListRequest) (interface{}, error) { + return self.service.Find(ctx) } -func (self *Field) Type(r *server.FieldTypeRequest) (interface{}, error) { - return self.service.FindByName(context.TODO(), r.ID) +func (self *Field) Type(ctx context.Context, r *server.FieldTypeRequest) (interface{}, error) { + return self.service.FindByName(ctx, r.ID) } diff --git a/crm/rest/module.go b/crm/rest/module.go index ed09b6651..e17333a49 100644 --- a/crm/rest/module.go +++ b/crm/rest/module.go @@ -32,29 +32,29 @@ func (Module) New() *Module { } } -func (c *Module) List(r *server.ModuleListRequest) (interface{}, error) { - return c.service.Find(context.TODO()) +func (c *Module) List(ctx context.Context, r *server.ModuleListRequest) (interface{}, error) { + return c.service.Find(ctx) } -func (c *Module) Edit(r *server.ModuleEditRequest) (interface{}, error) { +func (c *Module) Edit(ctx context.Context, r *server.ModuleEditRequest) (interface{}, error) { m := types.Module{}.New() m.SetID(r.ID).SetName(r.Name) if m.GetID() > 0 { - return c.service.Update(context.TODO(), m) + return c.service.Update(ctx, m) } - return c.service.Create(context.TODO(), m) + return c.service.Create(ctx, m) } -func (*Module) ContentList(r *server.ModuleContentListRequest) (interface{}, error) { +func (*Module) ContentList(ctx context.Context, r *server.ModuleContentListRequest) (interface{}, error) { return nil, errors.New("Not implemented: Module.content/edit") } -func (*Module) ContentEdit(r *server.ModuleContentEditRequest) (interface{}, error) { +func (*Module) ContentEdit(ctx context.Context, r *server.ModuleContentEditRequest) (interface{}, error) { return nil, errors.New("Not implemented: Module.content/edit") } -func (*Module) ContentDelete(r *server.ModuleContentDeleteRequest) (interface{}, error) { +func (*Module) ContentDelete(ctx context.Context, r *server.ModuleContentDeleteRequest) (interface{}, error) { return nil, errors.New("Not implemented: Module.content/delete") } diff --git a/crm/rest/server/field.go b/crm/rest/server/field.go index 8f0960f90..2869f4238 100644 --- a/crm/rest/server/field.go +++ b/crm/rest/server/field.go @@ -16,6 +16,7 @@ package server */ import ( + "context" "net/http" ) @@ -26,8 +27,8 @@ type FieldHandlers struct { // Internal API interface type FieldAPI interface { - List(*FieldListRequest) (interface{}, error) - Type(*FieldTypeRequest) (interface{}, error) + List(context.Context, *FieldListRequest) (interface{}, error) + Type(context.Context, *FieldTypeRequest) (interface{}, error) // Authenticate API requests Authenticator() func(http.Handler) http.Handler diff --git a/crm/rest/server/field_handlers.go b/crm/rest/server/field_handlers.go index 5f5da038c..78f7852e9 100644 --- a/crm/rest/server/field_handlers.go +++ b/crm/rest/server/field_handlers.go @@ -23,9 +23,9 @@ import ( func (fh *FieldHandlers) List(w http.ResponseWriter, r *http.Request) { params := FieldListRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return fh.Field.List(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return fh.Field.List(r.Context(), params) }) } func (fh *FieldHandlers) Type(w http.ResponseWriter, r *http.Request) { params := FieldTypeRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return fh.Field.Type(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return fh.Field.Type(r.Context(), params) }) } diff --git a/crm/rest/server/module.go b/crm/rest/server/module.go index dd652a265..0f8ab60c0 100644 --- a/crm/rest/server/module.go +++ b/crm/rest/server/module.go @@ -16,6 +16,7 @@ package server */ import ( + "context" "net/http" ) @@ -26,11 +27,11 @@ type ModuleHandlers struct { // Internal API interface type ModuleAPI interface { - List(*ModuleListRequest) (interface{}, error) - Edit(*ModuleEditRequest) (interface{}, error) - ContentList(*ModuleContentListRequest) (interface{}, error) - ContentEdit(*ModuleContentEditRequest) (interface{}, error) - ContentDelete(*ModuleContentDeleteRequest) (interface{}, error) + List(context.Context, *ModuleListRequest) (interface{}, error) + Edit(context.Context, *ModuleEditRequest) (interface{}, error) + ContentList(context.Context, *ModuleContentListRequest) (interface{}, error) + ContentEdit(context.Context, *ModuleContentEditRequest) (interface{}, error) + ContentDelete(context.Context, *ModuleContentDeleteRequest) (interface{}, error) // Authenticate API requests Authenticator() func(http.Handler) http.Handler diff --git a/crm/rest/server/module_handlers.go b/crm/rest/server/module_handlers.go index c28286055..bda17f945 100644 --- a/crm/rest/server/module_handlers.go +++ b/crm/rest/server/module_handlers.go @@ -23,21 +23,21 @@ import ( func (mh *ModuleHandlers) List(w http.ResponseWriter, r *http.Request) { params := ModuleListRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return mh.Module.List(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return mh.Module.List(r.Context(), params) }) } func (mh *ModuleHandlers) Edit(w http.ResponseWriter, r *http.Request) { params := ModuleEditRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return mh.Module.Edit(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return mh.Module.Edit(r.Context(), params) }) } func (mh *ModuleHandlers) ContentList(w http.ResponseWriter, r *http.Request) { params := ModuleContentListRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return mh.Module.ContentList(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return mh.Module.ContentList(r.Context(), params) }) } func (mh *ModuleHandlers) ContentEdit(w http.ResponseWriter, r *http.Request) { params := ModuleContentEditRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return mh.Module.ContentEdit(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return mh.Module.ContentEdit(r.Context(), params) }) } func (mh *ModuleHandlers) ContentDelete(w http.ResponseWriter, r *http.Request) { params := ModuleContentDeleteRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return mh.Module.ContentDelete(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return mh.Module.ContentDelete(r.Context(), params) }) } diff --git a/sam/rest/channel.go b/sam/rest/channel.go index cbe7822f2..d603dd6f5 100644 --- a/sam/rest/channel.go +++ b/sam/rest/channel.go @@ -1,6 +1,8 @@ package rest import ( + "context" + "github.com/davecgh/go-spew/spew" "github.com/pkg/errors" "github.com/titpetric/factory" @@ -22,7 +24,7 @@ func (Channel) New() *Channel { return &Channel{} } -func (*Channel) Create(r *server.ChannelCreateRequest) (interface{}, error) { +func (*Channel) Create(ctx context.Context, r *server.ChannelCreateRequest) (interface{}, error) { db, err := factory.Database.Get() if err != nil { return nil, err @@ -42,7 +44,7 @@ func (*Channel) Create(r *server.ChannelCreateRequest) (interface{}, error) { return c, db.Insert("channels", c) } -func (*Channel) Edit(r *server.ChannelEditRequest) (interface{}, error) { +func (*Channel) Edit(ctx context.Context, r *server.ChannelEditRequest) (interface{}, error) { db, err := factory.Database.Get() if err != nil { return nil, err @@ -69,7 +71,7 @@ func (*Channel) Edit(r *server.ChannelEditRequest) (interface{}, error) { } -func (*Channel) Delete(r *server.ChannelDeleteRequest) (interface{}, error) { +func (*Channel) Delete(ctx context.Context, r *server.ChannelDeleteRequest) (interface{}, error) { db, err := factory.Database.Get() if err != nil { return nil, err @@ -92,11 +94,11 @@ func (*Channel) Delete(r *server.ChannelDeleteRequest) (interface{}, error) { }() } -func (s *Channel) Read(r *server.ChannelReadRequest) (interface{}, error) { +func (s *Channel) Read(ctx context.Context, r *server.ChannelReadRequest) (interface{}, error) { return s.load(r.ID) } -func (*Channel) List(r *server.ChannelListRequest) (interface{}, error) { +func (*Channel) List(ctx context.Context, r *server.ChannelListRequest) (interface{}, error) { db, err := factory.Database.Get() if err != nil { return nil, err diff --git a/sam/rest/message.go b/sam/rest/message.go index 74d572e43..c99ea7795 100644 --- a/sam/rest/message.go +++ b/sam/rest/message.go @@ -1,6 +1,7 @@ package rest import ( + "context" "github.com/pkg/errors" "github.com/crusttech/crust/sam/rest/server" @@ -15,30 +16,30 @@ func (Message) New() *Message { var _ = errors.Wrap -func (*Message) Edit(r *server.MessageEditRequest) (interface{}, error) { +func (*Message) Edit(ctx context.Context, r *server.MessageEditRequest) (interface{}, error) { return nil, errors.New("Not implemented: Message.edit") } -func (*Message) Attach(r *server.MessageAttachRequest) (interface{}, error) { +func (*Message) Attach(ctx context.Context, r *server.MessageAttachRequest) (interface{}, error) { return nil, errors.New("Not implemented: Message.attach") } -func (*Message) Remove(r *server.MessageRemoveRequest) (interface{}, error) { +func (*Message) Remove(ctx context.Context, r *server.MessageRemoveRequest) (interface{}, error) { return nil, errors.New("Not implemented: Message.remove") } -func (*Message) Read(r *server.MessageReadRequest) (interface{}, error) { +func (*Message) Read(ctx context.Context, r *server.MessageReadRequest) (interface{}, error) { return nil, errors.New("Not implemented: Message.read") } -func (*Message) Search(r *server.MessageSearchRequest) (interface{}, error) { +func (*Message) Search(ctx context.Context, r *server.MessageSearchRequest) (interface{}, error) { return nil, errors.New("Not implemented: Message.search") } -func (*Message) Pin(r *server.MessagePinRequest) (interface{}, error) { +func (*Message) Pin(ctx context.Context, r *server.MessagePinRequest) (interface{}, error) { return nil, errors.New("Not implemented: Message.pin") } -func (*Message) Flag(r *server.MessageFlagRequest) (interface{}, error) { +func (*Message) Flag(ctx context.Context, r *server.MessageFlagRequest) (interface{}, error) { return nil, errors.New("Not implemented: Message.flag") } diff --git a/sam/rest/organisation.go b/sam/rest/organisation.go index 53750e2d3..7559f4bff 100644 --- a/sam/rest/organisation.go +++ b/sam/rest/organisation.go @@ -2,6 +2,8 @@ package rest import ( "fmt" + "context" + "github.com/pkg/errors" "github.com/titpetric/factory" @@ -22,7 +24,7 @@ func (Organisation) New() *Organisation { return &Organisation{} } -func (*Organisation) Create(r *server.OrganisationCreateRequest) (interface{}, error) { +func (*Organisation) Create(ctx context.Context, r *server.OrganisationCreateRequest) (interface{}, error) { db, err := factory.Database.Get() if err != nil { return nil, err @@ -35,7 +37,7 @@ func (*Organisation) Create(r *server.OrganisationCreateRequest) (interface{}, e return o, db.Insert("organisation", o) } -func (*Organisation) Edit(r *server.OrganisationEditRequest) (interface{}, error) { +func (*Organisation) Edit(ctx context.Context, r *server.OrganisationEditRequest) (interface{}, error) { db, err := factory.Database.Get() if err != nil { return nil, err @@ -48,7 +50,7 @@ func (*Organisation) Edit(r *server.OrganisationEditRequest) (interface{}, error return o, db.Replace("organisation", o) } -func (*Organisation) Remove(r *server.OrganisationRemoveRequest) (interface{}, error) { +func (*Organisation) Remove(ctx context.Context, r *server.OrganisationRemoveRequest) (interface{}, error) { db, err := factory.Database.Get() if err != nil { return nil, err @@ -65,7 +67,7 @@ func (*Organisation) Remove(r *server.OrganisationRemoveRequest) (interface{}, e }() } -func (*Organisation) Read(r *server.OrganisationReadRequest) (interface{}, error) { +func (*Organisation) Read(ctx context.Context, r *server.OrganisationReadRequest) (interface{}, error) { db, err := factory.Database.Get() if err != nil { return nil, err @@ -77,7 +79,7 @@ func (*Organisation) Read(r *server.OrganisationReadRequest) (interface{}, error return o, db.Get(o, sqlOrganisationSelect+" AND id = ?", r.ID) } -func (*Organisation) List(r *server.OrganisationListRequest) (interface{}, error) { +func (*Organisation) List(ctx context.Context, r *server.OrganisationListRequest) (interface{}, error) { db, err := factory.Database.Get() if err != nil { return nil, err @@ -91,7 +93,7 @@ func (*Organisation) List(r *server.OrganisationListRequest) (interface{}, error return res, err } -func (*Organisation) Archive(r *server.OrganisationArchiveRequest) (interface{}, error) { +func (*Organisation) Archive(ctx context.Context, r *server.OrganisationArchiveRequest) (interface{}, error) { db, err := factory.Database.Get() if err != nil { return nil, err diff --git a/sam/rest/server/channel.go b/sam/rest/server/channel.go index 51eeb969c..ed98d00d3 100644 --- a/sam/rest/server/channel.go +++ b/sam/rest/server/channel.go @@ -16,6 +16,7 @@ package server */ import ( + "context" "net/http" ) @@ -26,11 +27,11 @@ type ChannelHandlers struct { // Internal API interface type ChannelAPI interface { - List(*ChannelListRequest) (interface{}, error) - Create(*ChannelCreateRequest) (interface{}, error) - Edit(*ChannelEditRequest) (interface{}, error) - Read(*ChannelReadRequest) (interface{}, error) - Delete(*ChannelDeleteRequest) (interface{}, error) + List(context.Context, *ChannelListRequest) (interface{}, error) + Create(context.Context, *ChannelCreateRequest) (interface{}, error) + Edit(context.Context, *ChannelEditRequest) (interface{}, error) + Read(context.Context, *ChannelReadRequest) (interface{}, error) + Delete(context.Context, *ChannelDeleteRequest) (interface{}, error) // Authenticate API requests Authenticator() func(http.Handler) http.Handler diff --git a/sam/rest/server/channel_handlers.go b/sam/rest/server/channel_handlers.go index 7be5a4e4a..ef33c44b0 100644 --- a/sam/rest/server/channel_handlers.go +++ b/sam/rest/server/channel_handlers.go @@ -23,21 +23,21 @@ import ( func (ch *ChannelHandlers) List(w http.ResponseWriter, r *http.Request) { params := ChannelListRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return ch.Channel.List(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return ch.Channel.List(r.Context(), params) }) } func (ch *ChannelHandlers) Create(w http.ResponseWriter, r *http.Request) { params := ChannelCreateRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return ch.Channel.Create(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return ch.Channel.Create(r.Context(), params) }) } func (ch *ChannelHandlers) Edit(w http.ResponseWriter, r *http.Request) { params := ChannelEditRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return ch.Channel.Edit(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return ch.Channel.Edit(r.Context(), params) }) } func (ch *ChannelHandlers) Read(w http.ResponseWriter, r *http.Request) { params := ChannelReadRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return ch.Channel.Read(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return ch.Channel.Read(r.Context(), params) }) } func (ch *ChannelHandlers) Delete(w http.ResponseWriter, r *http.Request) { params := ChannelDeleteRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return ch.Channel.Delete(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return ch.Channel.Delete(r.Context(), params) }) } diff --git a/sam/rest/server/message.go b/sam/rest/server/message.go index f13f01c3e..771ab158b 100644 --- a/sam/rest/server/message.go +++ b/sam/rest/server/message.go @@ -16,6 +16,7 @@ package server */ import ( + "context" "net/http" ) @@ -26,13 +27,13 @@ type MessageHandlers struct { // Internal API interface type MessageAPI interface { - Edit(*MessageEditRequest) (interface{}, error) - Attach(*MessageAttachRequest) (interface{}, error) - Remove(*MessageRemoveRequest) (interface{}, error) - Read(*MessageReadRequest) (interface{}, error) - Search(*MessageSearchRequest) (interface{}, error) - Pin(*MessagePinRequest) (interface{}, error) - Flag(*MessageFlagRequest) (interface{}, error) + Edit(context.Context, *MessageEditRequest) (interface{}, error) + Attach(context.Context, *MessageAttachRequest) (interface{}, error) + Remove(context.Context, *MessageRemoveRequest) (interface{}, error) + Read(context.Context, *MessageReadRequest) (interface{}, error) + Search(context.Context, *MessageSearchRequest) (interface{}, error) + Pin(context.Context, *MessagePinRequest) (interface{}, error) + Flag(context.Context, *MessageFlagRequest) (interface{}, error) // Authenticate API requests Authenticator() func(http.Handler) http.Handler diff --git a/sam/rest/server/message_handlers.go b/sam/rest/server/message_handlers.go index ad33ce025..74baf63da 100644 --- a/sam/rest/server/message_handlers.go +++ b/sam/rest/server/message_handlers.go @@ -23,29 +23,29 @@ import ( func (mh *MessageHandlers) Edit(w http.ResponseWriter, r *http.Request) { params := MessageEditRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return mh.Message.Edit(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return mh.Message.Edit(r.Context(), params) }) } func (mh *MessageHandlers) Attach(w http.ResponseWriter, r *http.Request) { params := MessageAttachRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return mh.Message.Attach(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return mh.Message.Attach(r.Context(), params) }) } func (mh *MessageHandlers) Remove(w http.ResponseWriter, r *http.Request) { params := MessageRemoveRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return mh.Message.Remove(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return mh.Message.Remove(r.Context(), params) }) } func (mh *MessageHandlers) Read(w http.ResponseWriter, r *http.Request) { params := MessageReadRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return mh.Message.Read(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return mh.Message.Read(r.Context(), params) }) } func (mh *MessageHandlers) Search(w http.ResponseWriter, r *http.Request) { params := MessageSearchRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return mh.Message.Search(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return mh.Message.Search(r.Context(), params) }) } func (mh *MessageHandlers) Pin(w http.ResponseWriter, r *http.Request) { params := MessagePinRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return mh.Message.Pin(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return mh.Message.Pin(r.Context(), params) }) } func (mh *MessageHandlers) Flag(w http.ResponseWriter, r *http.Request) { params := MessageFlagRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return mh.Message.Flag(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return mh.Message.Flag(r.Context(), params) }) } diff --git a/sam/rest/server/organisation.go b/sam/rest/server/organisation.go index 3212c0a0f..7ac1bf4f6 100644 --- a/sam/rest/server/organisation.go +++ b/sam/rest/server/organisation.go @@ -16,6 +16,7 @@ package server */ import ( + "context" "net/http" ) @@ -26,12 +27,12 @@ type OrganisationHandlers struct { // Internal API interface type OrganisationAPI interface { - List(*OrganisationListRequest) (interface{}, error) - Create(*OrganisationCreateRequest) (interface{}, error) - Edit(*OrganisationEditRequest) (interface{}, error) - Remove(*OrganisationRemoveRequest) (interface{}, error) - Read(*OrganisationReadRequest) (interface{}, error) - Archive(*OrganisationArchiveRequest) (interface{}, error) + List(context.Context, *OrganisationListRequest) (interface{}, error) + Create(context.Context, *OrganisationCreateRequest) (interface{}, error) + Edit(context.Context, *OrganisationEditRequest) (interface{}, error) + Remove(context.Context, *OrganisationRemoveRequest) (interface{}, error) + Read(context.Context, *OrganisationReadRequest) (interface{}, error) + Archive(context.Context, *OrganisationArchiveRequest) (interface{}, error) // Authenticate API requests Authenticator() func(http.Handler) http.Handler diff --git a/sam/rest/server/organisation_handlers.go b/sam/rest/server/organisation_handlers.go index 5843f48ea..6ee2a0cca 100644 --- a/sam/rest/server/organisation_handlers.go +++ b/sam/rest/server/organisation_handlers.go @@ -23,25 +23,25 @@ import ( func (oh *OrganisationHandlers) List(w http.ResponseWriter, r *http.Request) { params := OrganisationListRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return oh.Organisation.List(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return oh.Organisation.List(r.Context(), params) }) } func (oh *OrganisationHandlers) Create(w http.ResponseWriter, r *http.Request) { params := OrganisationCreateRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return oh.Organisation.Create(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return oh.Organisation.Create(r.Context(), params) }) } func (oh *OrganisationHandlers) Edit(w http.ResponseWriter, r *http.Request) { params := OrganisationEditRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return oh.Organisation.Edit(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return oh.Organisation.Edit(r.Context(), params) }) } func (oh *OrganisationHandlers) Remove(w http.ResponseWriter, r *http.Request) { params := OrganisationRemoveRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return oh.Organisation.Remove(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return oh.Organisation.Remove(r.Context(), params) }) } func (oh *OrganisationHandlers) Read(w http.ResponseWriter, r *http.Request) { params := OrganisationReadRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return oh.Organisation.Read(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return oh.Organisation.Read(r.Context(), params) }) } func (oh *OrganisationHandlers) Archive(w http.ResponseWriter, r *http.Request) { params := OrganisationArchiveRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return oh.Organisation.Archive(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return oh.Organisation.Archive(r.Context(), params) }) } diff --git a/sam/rest/server/team.go b/sam/rest/server/team.go index 13fbdf60d..2badac273 100644 --- a/sam/rest/server/team.go +++ b/sam/rest/server/team.go @@ -16,6 +16,7 @@ package server */ import ( + "context" "net/http" ) @@ -26,14 +27,14 @@ type TeamHandlers struct { // Internal API interface type TeamAPI interface { - List(*TeamListRequest) (interface{}, error) - Create(*TeamCreateRequest) (interface{}, error) - Edit(*TeamEditRequest) (interface{}, error) - Read(*TeamReadRequest) (interface{}, error) - Remove(*TeamRemoveRequest) (interface{}, error) - Archive(*TeamArchiveRequest) (interface{}, error) - Move(*TeamMoveRequest) (interface{}, error) - Merge(*TeamMergeRequest) (interface{}, error) + List(context.Context, *TeamListRequest) (interface{}, error) + Create(context.Context, *TeamCreateRequest) (interface{}, error) + Edit(context.Context, *TeamEditRequest) (interface{}, error) + Read(context.Context, *TeamReadRequest) (interface{}, error) + Remove(context.Context, *TeamRemoveRequest) (interface{}, error) + Archive(context.Context, *TeamArchiveRequest) (interface{}, error) + Move(context.Context, *TeamMoveRequest) (interface{}, error) + Merge(context.Context, *TeamMergeRequest) (interface{}, error) // Authenticate API requests Authenticator() func(http.Handler) http.Handler diff --git a/sam/rest/server/team_handlers.go b/sam/rest/server/team_handlers.go index e4aa7950d..474b810d3 100644 --- a/sam/rest/server/team_handlers.go +++ b/sam/rest/server/team_handlers.go @@ -23,33 +23,33 @@ import ( func (th *TeamHandlers) List(w http.ResponseWriter, r *http.Request) { params := TeamListRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return th.Team.List(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return th.Team.List(r.Context(), params) }) } func (th *TeamHandlers) Create(w http.ResponseWriter, r *http.Request) { params := TeamCreateRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return th.Team.Create(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return th.Team.Create(r.Context(), params) }) } func (th *TeamHandlers) Edit(w http.ResponseWriter, r *http.Request) { params := TeamEditRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return th.Team.Edit(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return th.Team.Edit(r.Context(), params) }) } func (th *TeamHandlers) Read(w http.ResponseWriter, r *http.Request) { params := TeamReadRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return th.Team.Read(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return th.Team.Read(r.Context(), params) }) } func (th *TeamHandlers) Remove(w http.ResponseWriter, r *http.Request) { params := TeamRemoveRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return th.Team.Remove(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return th.Team.Remove(r.Context(), params) }) } func (th *TeamHandlers) Archive(w http.ResponseWriter, r *http.Request) { params := TeamArchiveRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return th.Team.Archive(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return th.Team.Archive(r.Context(), params) }) } func (th *TeamHandlers) Move(w http.ResponseWriter, r *http.Request) { params := TeamMoveRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return th.Team.Move(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return th.Team.Move(r.Context(), params) }) } func (th *TeamHandlers) Merge(w http.ResponseWriter, r *http.Request) { params := TeamMergeRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return th.Team.Merge(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return th.Team.Merge(r.Context(), params) }) } diff --git a/sam/rest/server/user.go b/sam/rest/server/user.go index ff6469a18..ffe9d0b64 100644 --- a/sam/rest/server/user.go +++ b/sam/rest/server/user.go @@ -16,6 +16,7 @@ package server */ import ( + "context" "net/http" ) @@ -26,8 +27,8 @@ type UserHandlers struct { // Internal API interface type UserAPI interface { - Login(*UserLoginRequest) (interface{}, error) - Search(*UserSearchRequest) (interface{}, error) + Login(context.Context, *UserLoginRequest) (interface{}, error) + Search(context.Context, *UserSearchRequest) (interface{}, error) // Authenticate API requests Authenticator() func(http.Handler) http.Handler diff --git a/sam/rest/server/user_handlers.go b/sam/rest/server/user_handlers.go index fa99776bc..fd6aaf44e 100644 --- a/sam/rest/server/user_handlers.go +++ b/sam/rest/server/user_handlers.go @@ -23,9 +23,9 @@ import ( func (uh *UserHandlers) Login(w http.ResponseWriter, r *http.Request) { params := UserLoginRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return uh.User.Login(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return uh.User.Login(r.Context(), params) }) } func (uh *UserHandlers) Search(w http.ResponseWriter, r *http.Request) { params := UserSearchRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return uh.User.Search(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return uh.User.Search(r.Context(), params) }) } diff --git a/sam/rest/server/websocket.go b/sam/rest/server/websocket.go index d4f20f46a..8c47aaacb 100644 --- a/sam/rest/server/websocket.go +++ b/sam/rest/server/websocket.go @@ -16,6 +16,7 @@ package server */ import ( + "context" "net/http" ) @@ -26,7 +27,7 @@ type WebsocketHandlers struct { // Internal API interface type WebsocketAPI interface { - Client(*WebsocketClientRequest) (interface{}, error) + Client(context.Context, *WebsocketClientRequest) (interface{}, error) // Authenticate API requests Authenticator() func(http.Handler) http.Handler diff --git a/sam/rest/server/websocket_handlers.go b/sam/rest/server/websocket_handlers.go index d223ba0bf..f61457504 100644 --- a/sam/rest/server/websocket_handlers.go +++ b/sam/rest/server/websocket_handlers.go @@ -23,5 +23,5 @@ import ( func (wh *WebsocketHandlers) Client(w http.ResponseWriter, r *http.Request) { params := WebsocketClientRequest{}.new() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return wh.Websocket.Client(params) }) + resputil.JSON(w, params.Fill(r), func() (interface{}, error) { return wh.Websocket.Client(r.Context(), params) }) } diff --git a/sam/rest/team.go b/sam/rest/team.go index fb2ab0a02..e9b154428 100644 --- a/sam/rest/team.go +++ b/sam/rest/team.go @@ -2,6 +2,8 @@ package rest import ( "fmt" + "context" + "github.com/pkg/errors" "github.com/titpetric/factory" @@ -22,7 +24,7 @@ func (Team) New() *Team { return &Team{} } -func (*Team) Create(r *server.TeamCreateRequest) (interface{}, error) { +func (*Team) Create(ctx context.Context, r *server.TeamCreateRequest) (interface{}, error) { db, err := factory.Database.Get() if err != nil { return nil, err @@ -36,7 +38,7 @@ func (*Team) Create(r *server.TeamCreateRequest) (interface{}, error) { return t, db.Insert("team", t) } -func (*Team) Edit(r *server.TeamEditRequest) (interface{}, error) { +func (*Team) Edit(ctx context.Context, r *server.TeamEditRequest) (interface{}, error) { db, err := factory.Database.Get() if err != nil { return nil, err @@ -50,7 +52,7 @@ func (*Team) Edit(r *server.TeamEditRequest) (interface{}, error) { return t, db.Replace("team", t) } -func (*Team) Remove(r *server.TeamRemoveRequest) (interface{}, error) { +func (*Team) Remove(ctx context.Context, r *server.TeamRemoveRequest) (interface{}, error) { db, err := factory.Database.Get() if err != nil { return nil, err @@ -64,7 +66,7 @@ func (*Team) Remove(r *server.TeamRemoveRequest) (interface{}, error) { }() } -func (*Team) Read(r *server.TeamReadRequest) (interface{}, error) { +func (*Team) Read(ctx context.Context, r *server.TeamReadRequest) (interface{}, error) { db, err := factory.Database.Get() if err != nil { return nil, err @@ -74,7 +76,7 @@ func (*Team) Read(r *server.TeamReadRequest) (interface{}, error) { return t, db.Get(t, sqlTeamSelect+" AND id = ?", r.ID) } -func (*Team) List(r *server.TeamListRequest) (interface{}, error) { +func (*Team) List(ctx context.Context, r *server.TeamListRequest) (interface{}, error) { db, err := factory.Database.Get() if err != nil { return nil, err @@ -85,7 +87,7 @@ func (*Team) List(r *server.TeamListRequest) (interface{}, error) { return res, err } -func (*Team) Archive(r *server.TeamArchiveRequest) (interface{}, error) { +func (*Team) Archive(ctx context.Context, r *server.TeamArchiveRequest) (interface{}, error) { db, err := factory.Database.Get() if err != nil { return nil, err @@ -101,10 +103,10 @@ func (*Team) Archive(r *server.TeamArchiveRequest) (interface{}, error) { }() } -func (*Team) Move(r *server.TeamMoveRequest) (interface{}, error) { +func (*Team) Move(ctx context.Context, r *server.TeamMoveRequest) (interface{}, error) { return nil, errors.New("Not implemented: Team.move") } -func (*Team) Merge(r *server.TeamMergeRequest) (interface{}, error) { +func (*Team) Merge(ctx context.Context, r *server.TeamMergeRequest) (interface{}, error) { return nil, errors.New("Not implemented: Team.merge") } diff --git a/sam/rest/user.go b/sam/rest/user.go index a462a2d63..4d24d18e9 100644 --- a/sam/rest/user.go +++ b/sam/rest/user.go @@ -1,6 +1,8 @@ package rest import ( + "context" + "github.com/pkg/errors" "github.com/titpetric/factory" @@ -35,7 +37,7 @@ func (User) New() *User { } /* -func (self *User) Read(r *teamReadRequest) (interface{}, error) { +func (self *User) Read(ctx context.Context, r *teamReadRequest) (interface{}, error) { db, err := factory.Database.Get() if err != nil { return nil, err @@ -47,7 +49,7 @@ func (self *User) Read(r *teamReadRequest) (interface{}, error) { */ // User lookup & login -func (self *User) Login(r *server.UserLoginRequest) (interface{}, error) { +func (self *User) Login(ctx context.Context, r *server.UserLoginRequest) (interface{}, error) { db, err := factory.Database.Get() if err != nil { return nil, err @@ -71,7 +73,7 @@ func (self *User) Login(r *server.UserLoginRequest) (interface{}, error) { } // Searches the users table in the database to find users by matching (by-prefix) their.Username -func (*User) Search(r *server.UserSearchRequest) (interface{}, error) { +func (*User) Search(ctx context.Context, r *server.UserSearchRequest) (interface{}, error) { db, err := factory.Database.Get() if err != nil { return nil, err @@ -86,7 +88,7 @@ func (*User) Search(r *server.UserSearchRequest) (interface{}, error) { } /* -func (self *User) Remove(r *teamRemoveRequest) (interface{}, error) { +func (self *User) Remove(ctx context.Context, r *teamRemoveRequest) (interface{}, error) { db, err := factory.Database.Get() if err != nil { return nil, err @@ -100,7 +102,7 @@ func (self *User) Remove(r *teamRemoveRequest) (interface{}, error) { }() } -func (self *User) Archive(r *teamArchiveRequest) (interface{}, error) { +func (self *User) Archive(ctx context.Context, r *teamArchiveRequest) (interface{}, error) { db, err := factory.Database.Get() if err != nil { return nil, err diff --git a/sam/rest/websocket.go b/sam/rest/websocket.go index b138b8e8e..343adb3d4 100644 --- a/sam/rest/websocket.go +++ b/sam/rest/websocket.go @@ -1,6 +1,7 @@ package rest import ( + "context" "github.com/pkg/errors" "github.com/crusttech/crust/sam/rest/server" @@ -15,6 +16,6 @@ func (Websocket) New() *Websocket { return &Websocket{} } -func (*Websocket) Client(r *server.WebsocketClientRequest) (interface{}, error) { +func (*Websocket) Client(ctx context.Context, r *server.WebsocketClientRequest) (interface{}, error) { return nil, errors.New("Not implemented: Websocket.client") }