diff --git a/event/event.go b/event/event.go index ebcc8e5..829c7fe 100755 --- a/event/event.go +++ b/event/event.go @@ -16,7 +16,13 @@ type EventService struct { client *client.Client } -// Publish a message to the event stream. +// Consume events from a given topic. +func (t *EventService) Consume(request *ConsumeRequest) (*ConsumeResponse, error) { + rsp := &ConsumeResponse{} + return rsp, t.client.Call("event", "Consume", request, rsp) +} + +// Publish a event to the event stream. func (t *EventService) Publish(request *PublishRequest) (*PublishResponse, error) { rsp := &PublishResponse{} return rsp, t.client.Call("event", "Publish", request, rsp) @@ -28,10 +34,24 @@ func (t *EventService) Read(request *ReadRequest) (*ReadResponse, error) { return rsp, t.client.Call("event", "Read", request, rsp) } -// Subscribe to messages for a given topic. -func (t *EventService) Subscribe(request *SubscribeRequest) (*SubscribeResponse, error) { - rsp := &SubscribeResponse{} - return rsp, t.client.Call("event", "Subscribe", request, rsp) +type ConsumeRequest struct { + // Optional group for the subscription + Group string `json:"group"` + // Optional offset to read from e.g "2006-01-02T15:04:05.999Z07:00" + Offset string `json:"offset"` + // The topic to subscribe to + Topic string `json:"topic"` +} + +type ConsumeResponse struct { + // Unique message id + Id string `json:"id"` + // The next json message on the topic + Message map[string]interface{} `json:"message"` + // Timestamp of publishing + Timestamp string `json:"timestamp"` + // The topic subscribed to + Topic string `json:"topic"` } type Ev struct { @@ -66,23 +86,3 @@ type ReadResponse struct { // the events Events []Ev `json:"events"` } - -type SubscribeRequest struct { - // Optional group for the subscription - Group string `json:"group"` - // Optional offset to read from e.g "2006-01-02T15:04:05.999Z07:00" - Offset string `json:"offset"` - // The topic to subscribe to - Topic string `json:"topic"` -} - -type SubscribeResponse struct { - // Unique message id - Id string `json:"id"` - // The next json message on the topic - Message map[string]interface{} `json:"message"` - // Timestamp of publishing - Timestamp string `json:"timestamp"` - // The topic subscribed to - Topic string `json:"topic"` -} diff --git a/examples/event/README.md b/examples/event/README.md index d74a1a3..38d6199 100755 --- a/examples/event/README.md +++ b/examples/event/README.md @@ -6,7 +6,7 @@ Endpoints: ## Publish -Publish a message to the event stream. +Publish a event to the event stream. [https://m3o.com/event/api#Publish](https://m3o.com/event/api#Publish) @@ -21,8 +21,8 @@ import( "go.m3o.com/event" ) -// Publish a message to the event stream. -func PublishAmessage() { +// Publish a event to the event stream. +func PublishAnEvent() { eventService := event.NewEventService(os.Getenv("M3O_API_TOKEN")) rsp, err := eventService.Publish(&event.PublishRequest{ Message: map[string]interface{}{ @@ -36,12 +36,12 @@ Topic: "user", fmt.Println(rsp, err) } ``` -## Subscribe +## Consume -Subscribe to messages for a given topic. +Consume events from a given topic. -[https://m3o.com/event/api#Subscribe](https://m3o.com/event/api#Subscribe) +[https://m3o.com/event/api#Consume](https://m3o.com/event/api#Consume) ```go package example @@ -53,10 +53,10 @@ import( "go.m3o.com/event" ) -// Subscribe to messages for a given topic. -func SubscribeToAtopic() { +// Consume events from a given topic. +func ConsumeFromAtopic() { eventService := event.NewEventService(os.Getenv("M3O_API_TOKEN")) - rsp, err := eventService.Subscribe(&event.SubscribeRequest{ + rsp, err := eventService.Consume(&event.ConsumeRequest{ Topic: "user", }) diff --git a/examples/event/consume/consumeFromATopic.go b/examples/event/consume/consumeFromATopic.go new file mode 100755 index 0000000..7b01046 --- /dev/null +++ b/examples/event/consume/consumeFromATopic.go @@ -0,0 +1,17 @@ +package example + +import ( + "fmt" + "os" + + "go.m3o.com/event" +) + +// Consume events from a given topic. +func ConsumeFromAtopic() { + eventService := event.NewEventService(os.Getenv("M3O_API_TOKEN")) + rsp, err := eventService.Consume(&event.ConsumeRequest{ + Topic: "user", + }) + fmt.Println(rsp, err) +} diff --git a/examples/event/publish/publishAnEvent.go b/examples/event/publish/publishAnEvent.go new file mode 100755 index 0000000..d202086 --- /dev/null +++ b/examples/event/publish/publishAnEvent.go @@ -0,0 +1,22 @@ +package example + +import ( + "fmt" + "os" + + "go.m3o.com/event" +) + +// Publish a event to the event stream. +func PublishAnEvent() { + eventService := event.NewEventService(os.Getenv("M3O_API_TOKEN")) + rsp, err := eventService.Publish(&event.PublishRequest{ + Message: map[string]interface{}{ + "id": "1", + "type": "signup", + "user": "john", + }, + Topic: "user", + }) + fmt.Println(rsp, err) +}