diff --git a/clients/go/m3o.go b/clients/go/m3o.go index adb2cb6..445b4e3 100755 --- a/clients/go/m3o.go +++ b/clients/go/m3o.go @@ -23,6 +23,7 @@ import ( "github.com/micro/services/clients/go/image" "github.com/micro/services/clients/go/ip" "github.com/micro/services/clients/go/location" + "github.com/micro/services/clients/go/mq" "github.com/micro/services/clients/go/notes" "github.com/micro/services/clients/go/otp" "github.com/micro/services/clients/go/postcode" @@ -72,6 +73,7 @@ func NewClient(token string) *Client { ImageService: image.NewImageService(token), IpService: ip.NewIpService(token), LocationService: location.NewLocationService(token), + MqService: mq.NewMqService(token), NotesService: notes.NewNotesService(token), OtpService: otp.NewOtpService(token), PostcodeService: postcode.NewPostcodeService(token), @@ -121,6 +123,7 @@ type Client struct { ImageService *image.ImageService IpService *ip.IpService LocationService *location.LocationService + MqService *mq.MqService NotesService *notes.NotesService OtpService *otp.OtpService PostcodeService *postcode.PostcodeService diff --git a/clients/go/mq/mq.go b/clients/go/mq/mq.go new file mode 100755 index 0000000..b865520 --- /dev/null +++ b/clients/go/mq/mq.go @@ -0,0 +1,51 @@ +package mq + +import ( + "github.com/m3o/m3o-go/client" +) + +func NewMqService(token string) *MqService { + return &MqService{ + client: client.NewClient(&client.Options{ + Token: token, + }), + } +} + +type MqService struct { + client *client.Client +} + +// Publish a message to the mq. Specify a topic to group messages for a specific topic. +func (t *MqService) Publish(request *PublishRequest) (*PublishResponse, error) { + rsp := &PublishResponse{} + return rsp, t.client.Call("mq", "Publish", request, rsp) +} + +// Subscribe to messages for a given topic. +func (t *MqService) Subscribe(request *SubscribeRequest) (*SubscribeResponse, error) { + rsp := &SubscribeResponse{} + return rsp, t.client.Call("mq", "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 { + // 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/ts/.gitignore b/clients/ts/.gitignore index c5fe8ef..1909ab2 100644 --- a/clients/ts/.gitignore +++ b/clients/ts/.gitignore @@ -34,6 +34,7 @@ id image ip location +mq notes otp pkg diff --git a/clients/ts/index.ts b/clients/ts/index.ts index 3859958..21b09e6 100755 --- a/clients/ts/index.ts +++ b/clients/ts/index.ts @@ -20,6 +20,7 @@ import * as id from "./id"; import * as image from "./image"; import * as ip from "./ip"; import * as location from "./location"; +import * as mq from "./mq"; import * as notes from "./notes"; import * as otp from "./otp"; import * as postcode from "./postcode"; @@ -66,6 +67,7 @@ export class Client { this.imageService = new image.ImageService(token); this.ipService = new ip.IpService(token); this.locationService = new location.LocationService(token); + this.mqService = new mq.MqService(token); this.notesService = new notes.NotesService(token); this.otpService = new otp.OtpService(token); this.postcodeService = new postcode.PostcodeService(token); @@ -111,6 +113,7 @@ export class Client { imageService: image.ImageService; ipService: ip.IpService; locationService: location.LocationService; + mqService: mq.MqService; notesService: notes.NotesService; otpService: otp.OtpService; postcodeService: postcode.PostcodeService; diff --git a/clients/ts/package.json b/clients/ts/package.json index 0f727f2..4d92dbc 100644 --- a/clients/ts/package.json +++ b/clients/ts/package.json @@ -39,6 +39,7 @@ "image", "ip", "location", + "mq", "notes", "otp", "pkg", @@ -77,5 +78,5 @@ "prepare": "npm run build" }, "types": "index.d.ts", - "version": "1.0.600" + "version": "1.0.601" } \ No newline at end of file diff --git a/examples/db/create/go/createARecord.go b/examples/db/create/go/createARecord.go index 08be46f..283dd5d 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{}{ - "age": 42, - "isActive": true, "id": "1", "name": "Jane", + "age": 42, + "isActive": true, }, Table: "users", }) diff --git a/examples/mq/publish/curl/publishAMessage.sh b/examples/mq/publish/curl/publishAMessage.sh new file mode 100755 index 0000000..a864f41 --- /dev/null +++ b/examples/mq/publish/curl/publishAMessage.sh @@ -0,0 +1,11 @@ +curl "https://api.m3o.com/v1/mq/Publish" \ +-H "Content-Type: application/json" \ +-H "Authorization: Bearer $MICRO_API_TOKEN" \ +-d '{ + "message": { + "id": "1", + "type": "signup", + "user": "john" + }, + "topic": "events" +}' \ No newline at end of file diff --git a/examples/mq/publish/go/publishAMessage.go b/examples/mq/publish/go/publishAMessage.go new file mode 100755 index 0000000..2602356 --- /dev/null +++ b/examples/mq/publish/go/publishAMessage.go @@ -0,0 +1,22 @@ +package example + +import ( + "fmt" + "os" + + "github.com/micro/services/clients/go/mq" +) + +// Publish a message to the mq. Specify a topic to group messages for a specific topic. +func PublishAmessage() { + mqService := mq.NewMqService(os.Getenv("MICRO_API_TOKEN")) + rsp, err := mqService.Publish(&mq.PublishRequest{ + Message: map[string]interface{}{ + "id": "1", + "type": "signup", + "user": "john", + }, + Topic: "events", + }) + fmt.Println(rsp, err) +} diff --git a/examples/mq/publish/node/publishAMessage.js b/examples/mq/publish/node/publishAMessage.js new file mode 100755 index 0000000..b1cc725 --- /dev/null +++ b/examples/mq/publish/node/publishAMessage.js @@ -0,0 +1,17 @@ +const { MqService } = require("m3o/mq"); + +// Publish a message to the mq. Specify a topic to group messages for a specific topic. +async function publishAmessage() { + let mqService = new MqService(process.env.MICRO_API_TOKEN); + let rsp = await mqService.publish({ + message: { + id: "1", + type: "signup", + user: "john", + }, + topic: "events", + }); + console.log(rsp); +} + +publishAmessage(); diff --git a/examples/mq/subscribe/curl/subscribeToATopic.sh b/examples/mq/subscribe/curl/subscribeToATopic.sh new file mode 100755 index 0000000..26d8512 --- /dev/null +++ b/examples/mq/subscribe/curl/subscribeToATopic.sh @@ -0,0 +1,6 @@ +curl "https://api.m3o.com/v1/mq/Subscribe" \ +-H "Content-Type: application/json" \ +-H "Authorization: Bearer $MICRO_API_TOKEN" \ +-d '{ + "topic": "events" +}' \ No newline at end of file diff --git a/examples/mq/subscribe/go/subscribeToATopic.go b/examples/mq/subscribe/go/subscribeToATopic.go new file mode 100755 index 0000000..a86ee11 --- /dev/null +++ b/examples/mq/subscribe/go/subscribeToATopic.go @@ -0,0 +1,17 @@ +package example + +import ( + "fmt" + "os" + + "github.com/micro/services/clients/go/mq" +) + +// Subscribe to messages for a given topic. +func SubscribeToAtopic() { + mqService := mq.NewMqService(os.Getenv("MICRO_API_TOKEN")) + rsp, err := mqService.Subscribe(&mq.SubscribeRequest{ + Topic: "events", + }) + fmt.Println(rsp, err) +} diff --git a/examples/mq/subscribe/node/subscribeToATopic.js b/examples/mq/subscribe/node/subscribeToATopic.js new file mode 100755 index 0000000..b87f614 --- /dev/null +++ b/examples/mq/subscribe/node/subscribeToATopic.js @@ -0,0 +1,12 @@ +const { MqService } = require("m3o/mq"); + +// Subscribe to messages for a given topic. +async function subscribeToAtopic() { + let mqService = new MqService(process.env.MICRO_API_TOKEN); + let rsp = await mqService.subscribe({ + topic: "events", + }); + console.log(rsp); +} + +subscribeToAtopic(); diff --git a/examples/stream/publish/go/publishAMessage.go b/examples/stream/publish/go/publishAMessage.go index eee4024..7a0d501 100755 --- a/examples/stream/publish/go/publishAMessage.go +++ b/examples/stream/publish/go/publishAMessage.go @@ -12,9 +12,9 @@ func PublishAmessage() { streamService := stream.NewStreamService(os.Getenv("MICRO_API_TOKEN")) rsp, err := streamService.Publish(&stream.PublishRequest{ Message: map[string]interface{}{ + "user": "john", "id": "1", "type": "signup", - "user": "john", }, Topic: "events", })