diff --git a/clients/go/event/event.go b/clients/go/event/event.go new file mode 100755 index 0000000..ade15dd --- /dev/null +++ b/clients/go/event/event.go @@ -0,0 +1,53 @@ +package event + +import ( + "github.com/m3o/m3o-go/client" +) + +func NewEventService(token string) *EventService { + return &EventService{ + client: client.NewClient(&client.Options{ + Token: token, + }), + } +} + +type EventService struct { + client *client.Client +} + +// Publish a message to the event. Specify a topic to group messages for a specific topic. +func (t *EventService) Publish(request *PublishRequest) (*PublishResponse, error) { + rsp := &PublishResponse{} + return rsp, t.client.Call("event", "Publish", 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 PublishRequest struct { + // The json message to publish + Message map[string]interface{} `json:"message"` + // The topic to publish to + Topic string `json:"topic"` +} + +type PublishResponse struct { +} + +type SubscribeRequest struct { + // Optional group for the subscription + Group string `json:"group"` + // The topic to subscribe to + Topic string `json:"topic"` +} + +type SubscribeResponse struct { + // The next json message on the topic + Message map[string]interface{} `json:"message"` + // The topic subscribed to + Topic string `json:"topic"` +} diff --git a/clients/go/m3o.go b/clients/go/m3o.go index ce3091d..adb2cb6 100755 --- a/clients/go/m3o.go +++ b/clients/go/m3o.go @@ -10,6 +10,7 @@ import ( "github.com/micro/services/clients/go/email" "github.com/micro/services/clients/go/emoji" "github.com/micro/services/clients/go/evchargers" + "github.com/micro/services/clients/go/event" "github.com/micro/services/clients/go/file" "github.com/micro/services/clients/go/forex" "github.com/micro/services/clients/go/function" @@ -58,6 +59,7 @@ func NewClient(token string) *Client { EmailService: email.NewEmailService(token), EmojiService: emoji.NewEmojiService(token), EvchargersService: evchargers.NewEvchargersService(token), + EventService: event.NewEventService(token), FileService: file.NewFileService(token), ForexService: forex.NewForexService(token), FunctionService: function.NewFunctionService(token), @@ -106,6 +108,7 @@ type Client struct { EmailService *email.EmailService EmojiService *emoji.EmojiService EvchargersService *evchargers.EvchargersService + EventService *event.EventService FileService *file.FileService ForexService *forex.ForexService FunctionService *function.FunctionService diff --git a/clients/go/notes/notes.go b/clients/go/notes/notes.go index 4cdb080..d7218b4 100755 --- a/clients/go/notes/notes.go +++ b/clients/go/notes/notes.go @@ -28,7 +28,7 @@ func (t *NotesService) Delete(request *DeleteRequest) (*DeleteResponse, error) { return rsp, t.client.Call("notes", "Delete", request, rsp) } -// Specify the note to events +// Subscribe to notes events func (t *NotesService) Events(request *EventsRequest) (*EventsResponse, error) { rsp := &EventsResponse{} return rsp, t.client.Call("notes", "Events", request, rsp) diff --git a/clients/ts/.gitignore b/clients/ts/.gitignore index 744ec84..c5fe8ef 100644 --- a/clients/ts/.gitignore +++ b/clients/ts/.gitignore @@ -21,6 +21,7 @@ db email emoji evchargers +event file forex function diff --git a/clients/ts/index.ts b/clients/ts/index.ts index 8ceeb54..3859958 100755 --- a/clients/ts/index.ts +++ b/clients/ts/index.ts @@ -7,6 +7,7 @@ import * as db from "./db"; import * as email from "./email"; import * as emoji from "./emoji"; import * as evchargers from "./evchargers"; +import * as event from "./event"; import * as file from "./file"; import * as forex from "./forex"; import * as fx from "./function"; @@ -52,6 +53,7 @@ export class Client { this.emailService = new email.EmailService(token); this.emojiService = new emoji.EmojiService(token); this.evchargersService = new evchargers.EvchargersService(token); + this.eventService = new event.EventService(token); this.fileService = new file.FileService(token); this.forexService = new forex.ForexService(token); this.functionService = new fx.FunctionService(token); @@ -96,6 +98,7 @@ export class Client { emailService: email.EmailService; emojiService: emoji.EmojiService; evchargersService: evchargers.EvchargersService; + eventService: event.EventService; fileService: file.FileService; forexService: forex.ForexService; functionService: fx.FunctionService; diff --git a/clients/ts/package.json b/clients/ts/package.json index 19600ef..ec81d63 100644 --- a/clients/ts/package.json +++ b/clients/ts/package.json @@ -26,6 +26,7 @@ "email", "emoji", "evchargers", + "event", "file", "forex", "function", @@ -76,5 +77,5 @@ "prepare": "npm run build" }, "types": "index.d.ts", - "version": "1.0.597" + "version": "1.0.599" } \ No newline at end of file diff --git a/examples/db/create/go/createARecord.go b/examples/db/create/go/createARecord.go index 283dd5d..003184c 100755 --- a/examples/db/create/go/createARecord.go +++ b/examples/db/create/go/createARecord.go @@ -12,10 +12,10 @@ func CreateArecord() { dbService := db.NewDbService(os.Getenv("MICRO_API_TOKEN")) rsp, err := dbService.Create(&db.CreateRequest{ Record: map[string]interface{}{ - "id": "1", "name": "Jane", "age": 42, "isActive": true, + "id": "1", }, Table: "users", }) diff --git a/examples/event/publish/curl/publishAMessage.sh b/examples/event/publish/curl/publishAMessage.sh new file mode 100755 index 0000000..5921cfc --- /dev/null +++ b/examples/event/publish/curl/publishAMessage.sh @@ -0,0 +1,11 @@ +curl "https://api.m3o.com/v1/event/Publish" \ +-H "Content-Type: application/json" \ +-H "Authorization: Bearer $MICRO_API_TOKEN" \ +-d '{ + "message": { + "id": "1", + "type": "signup", + "user": "john" + }, + "topic": "user" +}' \ No newline at end of file diff --git a/examples/event/publish/go/publishAMessage.go b/examples/event/publish/go/publishAMessage.go new file mode 100755 index 0000000..065cfd7 --- /dev/null +++ b/examples/event/publish/go/publishAMessage.go @@ -0,0 +1,22 @@ +package example + +import ( + "fmt" + "os" + + "github.com/micro/services/clients/go/event" +) + +// Publish a message to the event. Specify a topic to group messages for a specific topic. +func PublishAmessage() { + eventService := event.NewEventService(os.Getenv("MICRO_API_TOKEN")) + rsp, err := eventService.Publish(&event.PublishRequest{ + Message: map[string]interface{}{ + "id": "1", + "type": "signup", + "user": "john", + }, + Topic: "user", + }) + fmt.Println(rsp, err) +} diff --git a/examples/event/publish/node/publishAMessage.js b/examples/event/publish/node/publishAMessage.js new file mode 100755 index 0000000..8c0b50e --- /dev/null +++ b/examples/event/publish/node/publishAMessage.js @@ -0,0 +1,17 @@ +const { EventService } = require("m3o/event"); + +// Publish a message to the event. Specify a topic to group messages for a specific topic. +async function publishAmessage() { + let eventService = new EventService(process.env.MICRO_API_TOKEN); + let rsp = await eventService.publish({ + message: { + id: "1", + type: "signup", + user: "john", + }, + topic: "user", + }); + console.log(rsp); +} + +publishAmessage(); diff --git a/examples/event/subscribe/curl/subscribeToATopic.sh b/examples/event/subscribe/curl/subscribeToATopic.sh new file mode 100755 index 0000000..90dbe06 --- /dev/null +++ b/examples/event/subscribe/curl/subscribeToATopic.sh @@ -0,0 +1,6 @@ +curl "https://api.m3o.com/v1/event/Subscribe" \ +-H "Content-Type: application/json" \ +-H "Authorization: Bearer $MICRO_API_TOKEN" \ +-d '{ + "topic": "user" +}' \ No newline at end of file diff --git a/examples/event/subscribe/go/subscribeToATopic.go b/examples/event/subscribe/go/subscribeToATopic.go new file mode 100755 index 0000000..d10e2d1 --- /dev/null +++ b/examples/event/subscribe/go/subscribeToATopic.go @@ -0,0 +1,17 @@ +package example + +import ( + "fmt" + "os" + + "github.com/micro/services/clients/go/event" +) + +// Subscribe to messages for a given topic. +func SubscribeToAtopic() { + eventService := event.NewEventService(os.Getenv("MICRO_API_TOKEN")) + rsp, err := eventService.Subscribe(&event.SubscribeRequest{ + Topic: "user", + }) + fmt.Println(rsp, err) +} diff --git a/examples/event/subscribe/node/subscribeToATopic.js b/examples/event/subscribe/node/subscribeToATopic.js new file mode 100755 index 0000000..f1d0f48 --- /dev/null +++ b/examples/event/subscribe/node/subscribeToATopic.js @@ -0,0 +1,12 @@ +const { EventService } = require("m3o/event"); + +// Subscribe to messages for a given topic. +async function subscribeToAtopic() { + let eventService = new EventService(process.env.MICRO_API_TOKEN); + let rsp = await eventService.subscribe({ + topic: "user", + }); + console.log(rsp); +} + +subscribeToAtopic(); diff --git a/examples/notes/events/go/subscribeToEvents.go b/examples/notes/events/go/subscribeToEvents.go index 66782a4..8c5dfdc 100755 --- a/examples/notes/events/go/subscribeToEvents.go +++ b/examples/notes/events/go/subscribeToEvents.go @@ -7,7 +7,7 @@ import ( "github.com/micro/services/clients/go/notes" ) -// Specify the note to events +// Subscribe to notes events func SubscribeToEvents() { notesService := notes.NewNotesService(os.Getenv("MICRO_API_TOKEN")) rsp, err := notesService.Events(¬es.EventsRequest{ diff --git a/examples/notes/events/node/subscribeToEvents.js b/examples/notes/events/node/subscribeToEvents.js index 62ec86b..4c31633 100755 --- a/examples/notes/events/node/subscribeToEvents.js +++ b/examples/notes/events/node/subscribeToEvents.js @@ -1,6 +1,6 @@ const { NotesService } = require("m3o/notes"); -// Specify the note to events +// Subscribe to notes events async function subscribeToEvents() { let notesService = new NotesService(process.env.MICRO_API_TOKEN); let rsp = await notesService.events({