diff --git a/clients/go/stream/stream.go b/clients/go/stream/stream.go index 6467965..16decf5 100755 --- a/clients/go/stream/stream.go +++ b/clients/go/stream/stream.go @@ -16,36 +16,71 @@ type StreamService struct { client *client.Client } -// Publish a message to the stream. Specify a topic to group messages for a specific topic. -func (t *StreamService) Publish(request *PublishRequest) (*PublishResponse, error) { - rsp := &PublishResponse{} - return rsp, t.client.Call("stream", "Publish", request, rsp) +// List all the active channels +func (t *StreamService) ListChannels(request *ListChannelsRequest) (*ListChannelsResponse, error) { + rsp := &ListChannelsResponse{} + return rsp, t.client.Call("stream", "ListChannels", request, rsp) } -// Subscribe to messages for a given topic. -func (t *StreamService) Subscribe(request *SubscribeRequest) (*SubscribeResponse, error) { - rsp := &SubscribeResponse{} - return rsp, t.client.Call("stream", "Subscribe", request, rsp) +// List messages for a given channel +func (t *StreamService) ListMessages(request *ListMessagesRequest) (*ListMessagesResponse, error) { + rsp := &ListMessagesResponse{} + return rsp, t.client.Call("stream", "ListMessages", 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"` +// SendMessage a message to the stream. +func (t *StreamService) SendMessage(request *SendMessageRequest) (*SendMessageResponse, error) { + rsp := &SendMessageResponse{} + return rsp, t.client.Call("stream", "SendMessage", request, rsp) } -type PublishResponse struct { +type Channel struct { + // last activity time + LastActive string `json:"lastActive"` + // name of the channel + Name string `json:"name"` } -type SubscribeRequest struct { - // The topic to subscribe to - Topic string `json:"topic"` +type ListChannelsRequest struct { } -type SubscribeResponse struct { - // The next json message on the topic - Message map[string]interface{} `json:"message"` - // The topic subscribed to - Topic string `json:"topic"` +type ListChannelsResponse struct { + Channels []Channel `json:"channels"` +} + +type ListMessagesRequest struct { + // The channel to subscribe to + Channel string `json:"channel"` + // number of message to return + Limit int32 `json:"limit"` +} + +type ListMessagesResponse struct { + // The channel subscribed to + Channel string `json:"channel"` + // Messages are chronological order + Messages []Message `json:"messages"` +} + +type Message struct { + // the channel name + Channel string `json:"channel"` + // id of the message + Id string `json:"id"` + // the associated metadata + Metadata map[string]string `json:"metadata"` + // text of the message + Text string `json:"text"` + // time of message creation + Timestamp string `json:"timestamp"` +} + +type SendMessageRequest struct { + // The channel to send to + Channel string `json:"channel"` + // The message text to send + Text string `json:"text"` +} + +type SendMessageResponse struct { } diff --git a/clients/ts/package.json b/clients/ts/package.json index 69c6246..08ee73e 100644 --- a/clients/ts/package.json +++ b/clients/ts/package.json @@ -78,5 +78,5 @@ "prepare": "npm run build" }, "types": "index.d.ts", - "version": "1.0.615" + "version": "1.0.618" } \ No newline at end of file diff --git a/examples/db/create/go/createARecord.go b/examples/db/create/go/createARecord.go index 283dd5d..08be46f 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", + "name": "Jane", }, Table: "users", }) diff --git a/examples/stream/listChannels/curl/listChannels.sh b/examples/stream/listChannels/curl/listChannels.sh new file mode 100755 index 0000000..3b2bccb --- /dev/null +++ b/examples/stream/listChannels/curl/listChannels.sh @@ -0,0 +1,4 @@ +curl "https://api.m3o.com/v1/stream/ListChannels" \ +-H "Content-Type: application/json" \ +-H "Authorization: Bearer $MICRO_API_TOKEN" \ +-d '{}' \ No newline at end of file diff --git a/examples/stream/listChannels/go/listChannels.go b/examples/stream/listChannels/go/listChannels.go new file mode 100755 index 0000000..6a79dad --- /dev/null +++ b/examples/stream/listChannels/go/listChannels.go @@ -0,0 +1,15 @@ +package example + +import ( + "fmt" + "os" + + "github.com/micro/services/clients/go/stream" +) + +// List all the active channels +func ListChannels() { + streamService := stream.NewStreamService(os.Getenv("MICRO_API_TOKEN")) + rsp, err := streamService.ListChannels(&stream.ListChannelsRequest{}) + fmt.Println(rsp, err) +} diff --git a/examples/stream/listChannels/node/listChannels.js b/examples/stream/listChannels/node/listChannels.js new file mode 100755 index 0000000..100c445 --- /dev/null +++ b/examples/stream/listChannels/node/listChannels.js @@ -0,0 +1,10 @@ +const { StreamService } = require("m3o/stream"); + +// List all the active channels +async function listChannels() { + let streamService = new StreamService(process.env.MICRO_API_TOKEN); + let rsp = await streamService.listChannels({}); + console.log(rsp); +} + +listChannels(); diff --git a/examples/stream/listMessages/curl/listMessages.sh b/examples/stream/listMessages/curl/listMessages.sh new file mode 100755 index 0000000..a364691 --- /dev/null +++ b/examples/stream/listMessages/curl/listMessages.sh @@ -0,0 +1,6 @@ +curl "https://api.m3o.com/v1/stream/ListMessages" \ +-H "Content-Type: application/json" \ +-H "Authorization: Bearer $MICRO_API_TOKEN" \ +-d '{ + "channel": "general" +}' \ No newline at end of file diff --git a/examples/stream/listMessages/go/listMessages.go b/examples/stream/listMessages/go/listMessages.go new file mode 100755 index 0000000..5dc0b40 --- /dev/null +++ b/examples/stream/listMessages/go/listMessages.go @@ -0,0 +1,17 @@ +package example + +import ( + "fmt" + "os" + + "github.com/micro/services/clients/go/stream" +) + +// List messages for a given channel +func ListMessages() { + streamService := stream.NewStreamService(os.Getenv("MICRO_API_TOKEN")) + rsp, err := streamService.ListMessages(&stream.ListMessagesRequest{ + Channel: "general", + }) + fmt.Println(rsp, err) +} diff --git a/examples/stream/listMessages/node/listMessages.js b/examples/stream/listMessages/node/listMessages.js new file mode 100755 index 0000000..bd501f8 --- /dev/null +++ b/examples/stream/listMessages/node/listMessages.js @@ -0,0 +1,12 @@ +const { StreamService } = require("m3o/stream"); + +// List messages for a given channel +async function listMessages() { + let streamService = new StreamService(process.env.MICRO_API_TOKEN); + let rsp = await streamService.listMessages({ + channel: "general", + }); + console.log(rsp); +} + +listMessages(); diff --git a/examples/stream/sendMessage/curl/sendAMessage.sh b/examples/stream/sendMessage/curl/sendAMessage.sh new file mode 100755 index 0000000..ec4dc58 --- /dev/null +++ b/examples/stream/sendMessage/curl/sendAMessage.sh @@ -0,0 +1,7 @@ +curl "https://api.m3o.com/v1/stream/SendMessage" \ +-H "Content-Type: application/json" \ +-H "Authorization: Bearer $MICRO_API_TOKEN" \ +-d '{ + "channel": "general", + "text": "Hey checkout this tweet https://twitter.com/m3oservices/status/1455291054295498752" +}' \ No newline at end of file diff --git a/examples/stream/sendMessage/go/sendAMessage.go b/examples/stream/sendMessage/go/sendAMessage.go new file mode 100755 index 0000000..121b7d9 --- /dev/null +++ b/examples/stream/sendMessage/go/sendAMessage.go @@ -0,0 +1,18 @@ +package example + +import ( + "fmt" + "os" + + "github.com/micro/services/clients/go/stream" +) + +// SendMessage a message to the stream. +func SendAmessage() { + streamService := stream.NewStreamService(os.Getenv("MICRO_API_TOKEN")) + rsp, err := streamService.SendMessage(&stream.SendMessageRequest{ + Channel: "general", + Text: "Hey checkout this tweet https://twitter.com/m3oservices/status/1455291054295498752", + }) + fmt.Println(rsp, err) +} diff --git a/examples/stream/sendMessage/node/sendAMessage.js b/examples/stream/sendMessage/node/sendAMessage.js new file mode 100755 index 0000000..64d5512 --- /dev/null +++ b/examples/stream/sendMessage/node/sendAMessage.js @@ -0,0 +1,13 @@ +const { StreamService } = require("m3o/stream"); + +// SendMessage a message to the stream. +async function sendAmessage() { + let streamService = new StreamService(process.env.MICRO_API_TOKEN); + let rsp = await streamService.sendMessage({ + channel: "general", + text: "Hey checkout this tweet https://twitter.com/m3oservices/status/1455291054295498752", + }); + console.log(rsp); +} + +sendAmessage();