45 Commits
v0.1.0 ... ci

Author SHA1 Message Date
Janos Dobronszki
18df6dada9 F 2021-11-03 10:17:51 +00:00
Janos Dobronszki
b0f9eae01a F 2021-11-03 09:31:38 +00:00
m3o-actions
913e2d609a Commit from m3o/m3o action 2021-11-02 16:01:40 +00:00
m3o-actions
ec70bb0b96 Commit from m3o/m3o action 2021-11-02 15:20:10 +00:00
m3o-actions
0e5e506abb Commit from m3o/m3o action 2021-11-02 15:15:35 +00:00
m3o-actions
96b0791847 Commit from m3o/m3o action 2021-11-02 14:59:05 +00:00
m3o-actions
15117f4033 Commit from m3o/m3o action 2021-11-02 14:55:18 +00:00
m3o-actions
716231b211 Commit from m3o/m3o action 2021-11-02 14:08:59 +00:00
m3o-actions
abbc8bcd49 Commit from m3o/m3o action 2021-11-02 14:08:34 +00:00
m3o-actions
c5f35e9f42 Commit from m3o/m3o action 2021-11-02 14:06:57 +00:00
m3o-actions
1b52b0f771 Commit from m3o/m3o action 2021-11-02 14:03:39 +00:00
m3o-actions
6533fdf6ff Commit from m3o/m3o action 2021-11-02 14:00:42 +00:00
m3o-actions
476fc61f51 Commit from m3o/m3o action 2021-11-02 13:52:46 +00:00
m3o-actions
fa2e8a5283 Commit from m3o/m3o action 2021-11-02 13:41:15 +00:00
m3o-actions
a8b7e20a0c Commit from m3o/m3o action 2021-11-02 13:31:19 +00:00
m3o-actions
d38b38c742 Commit from m3o/m3o action 2021-11-02 11:53:01 +00:00
m3o-actions
47e7a6709f Commit from m3o/m3o action 2021-11-02 11:49:54 +00:00
m3o-actions
68b5269093 Commit from m3o/m3o action 2021-11-02 11:36:55 +00:00
m3o-actions
4707018011 Commit from m3o/m3o action 2021-11-02 10:55:57 +00:00
m3o-actions
f3da9bd908 Commit from m3o/m3o action 2021-11-02 08:19:52 +00:00
m3o-actions
2ccc1a4d17 Commit from m3o/m3o action 2021-11-02 08:18:51 +00:00
m3o-actions
eff35e79ef Commit from m3o/m3o action 2021-11-02 07:44:22 +00:00
m3o-actions
fe077602a7 Commit from m3o/m3o action 2021-11-01 17:16:01 +00:00
m3o-actions
e2913e9e7c Commit from m3o/m3o action 2021-11-01 17:11:34 +00:00
m3o-actions
0561a7f7c2 Commit from m3o/m3o action 2021-11-01 17:09:11 +00:00
m3o-actions
21ded67c07 Commit from m3o/m3o action 2021-11-01 15:55:15 +00:00
m3o-actions
b3f128386d Commit from m3o/m3o action 2021-11-01 15:47:02 +00:00
m3o-actions
97f56e72a2 Commit from m3o/m3o action 2021-11-01 15:41:08 +00:00
m3o-actions
c64b4b029f Commit from m3o/m3o action 2021-10-31 13:53:09 +00:00
m3o-actions
5c6ed49281 Commit from m3o/m3o action 2021-10-31 13:51:20 +00:00
m3o-actions
6411450031 Commit from m3o/m3o action 2021-10-31 13:47:11 +00:00
m3o-actions
1c389d4cca Commit from m3o/m3o action 2021-10-30 11:56:34 +00:00
m3o-actions
0805168f1d Commit from m3o/m3o action 2021-10-30 11:51:28 +00:00
m3o-actions
429a6ad180 Commit from m3o/m3o action 2021-10-30 07:30:10 +00:00
m3o-actions
218188cbcf Commit from m3o/m3o action 2021-10-29 13:17:32 +00:00
m3o-actions
168985fe21 Commit from m3o/m3o action 2021-10-29 13:12:31 +00:00
m3o-actions
6d4b56721d Commit from m3o/m3o action 2021-10-29 13:12:23 +00:00
m3o-actions
9482db748c Commit from m3o/m3o action 2021-10-29 12:43:44 +00:00
m3o-actions
a3b4eba5f1 Commit from m3o/m3o action 2021-10-29 12:41:37 +00:00
m3o-actions
c84accfb12 Commit from m3o/m3o action 2021-10-29 12:34:38 +00:00
m3o-actions
a4c61983ce Commit from m3o/m3o action 2021-10-29 12:15:32 +00:00
m3o-actions
814f4826d6 Commit from m3o/m3o action 2021-10-29 12:14:54 +00:00
Asim Aslam
a142615a6b Update README.md 2021-10-29 12:07:10 +01:00
m3o-actions
7b95e8f58f Commit from m3o/m3o action 2021-10-29 11:05:31 +00:00
Asim Aslam
cdd1eea406 update readme 2021-10-29 11:58:04 +01:00
30 changed files with 1105 additions and 674 deletions

26
.github/workflows/generate.yml vendored Normal file
View File

@@ -0,0 +1,26 @@
name: Test Clients
on:
push:
branches:
- main
- beta
- ci
jobs:
generate:
name: Test Clients
runs-on: ubuntu-latest
steps:
- name: Check out repo
uses: actions/checkout@v2
with:
path: clients
#ref: main
- name: Test
working-directory: clients
env:
M3O_API_TOKEN: ${{ secrets.M3O_API_TOKEN }}
run: |
cd examples/helloworld/call/callTheHelloworldService
go run main.go

View File

@@ -4,6 +4,10 @@ This is the Go client to access APIs on the M3O Platform
## Usage ## Usage
Call a service using the generated client. Populate the `M3O_API_TOKEN` environment variable.
Import the package and initialise the service with your API token.
```go ```go
package main package main
@@ -11,7 +15,32 @@ import (
"fmt" "fmt"
"os" "os"
"github.com/m3o/m3o-go/client" "go.m3o.com/helloworld"
)
// Call returns a personalised "Hello $name" response
func main() {
helloworldService := helloworld.NewHelloworldService(os.Getenv("M3O_API_TOKEN"))
rsp, err := helloworldService.Call(&helloworld.CallRequest{
Name: "John",
})
fmt.Println(rsp, err)
}
```
## Generic Client
The generic client enables you to call any endpoint by name with freeform request/response types.
```go
package main
import (
"fmt"
"os"
"go.m3o.com/client"
) )
type Request struct { type Request struct {
@@ -49,7 +78,7 @@ func main() {
## Streaming ## Streaming
The client supports streaming The client supports streaming but is not yet code generated. Use the following for streaming endpoints.
```go ```go
package main package main
@@ -57,7 +86,7 @@ package main
import ( import (
"fmt" "fmt"
"github.com/m3o/m3o-go/client" "go.m3o.com/client"
) )
type Request struct { type Request struct {

53
event/event.go Executable file
View File

@@ -0,0 +1,53 @@
package event
import (
"go.m3o.com/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 stream.
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"`
}

View File

@@ -4,6 +4,33 @@ An [m3o.com](https://m3o.com) API. For example usage see [m3o.com/Crypto/api](ht
Endpoints: Endpoints:
## News
Get news related to a currency
[https://m3o.com/crypto/api#News](https://m3o.com/crypto/api#News)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/crypto"
)
// Get news related to a currency
func GetCryptocurrencyNews() {
cryptoService := crypto.NewCryptoService(os.Getenv("M3O_API_TOKEN"))
rsp, err := cryptoService.News(&crypto.NewsRequest{
Symbol: "BTCUSD",
})
fmt.Println(rsp, err)
}
```
## Price ## Price
Get the last price for a given crypto ticker Get the last price for a given crypto ticker
@@ -85,30 +112,3 @@ func GetPreviousClose() {
fmt.Println(rsp, err) fmt.Println(rsp, err)
} }
``` ```
## News
Get news related to a currency
[https://m3o.com/crypto/api#News](https://m3o.com/crypto/api#News)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/crypto"
)
// Get news related to a currency
func GetCryptocurrencyNews() {
cryptoService := crypto.NewCryptoService(os.Getenv("M3O_API_TOKEN"))
rsp, err := cryptoService.News(&crypto.NewsRequest{
Symbol: "BTCUSD",
})
fmt.Println(rsp, err)
}
```

View File

@@ -4,6 +4,60 @@ An [m3o.com](https://m3o.com) API. For example usage see [m3o.com/Db/api](https:
Endpoints: Endpoints:
## Truncate
Truncate the records in a table
[https://m3o.com/db/api#Truncate](https://m3o.com/db/api#Truncate)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/db"
)
// Truncate the records in a table
func TruncateTable() {
dbService := db.NewDbService(os.Getenv("M3O_API_TOKEN"))
rsp, err := dbService.Truncate(&db.TruncateRequest{
Table: "users",
})
fmt.Println(rsp, err)
}
```
## Count
Count records in a table
[https://m3o.com/db/api#Count](https://m3o.com/db/api#Count)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/db"
)
// Count records in a table
func CountEntriesInAtable() {
dbService := db.NewDbService(os.Getenv("M3O_API_TOKEN"))
rsp, err := dbService.Count(&db.CountRequest{
Table: "users",
})
fmt.Println(rsp, err)
}
```
## Create ## Create
Create a record in the database. Optionally include an "id" field otherwise it's set automatically. Create a record in the database. Optionally include an "id" field otherwise it's set automatically.
@@ -26,10 +80,10 @@ func CreateArecord() {
dbService := db.NewDbService(os.Getenv("M3O_API_TOKEN")) dbService := db.NewDbService(os.Getenv("M3O_API_TOKEN"))
rsp, err := dbService.Create(&db.CreateRequest{ rsp, err := dbService.Create(&db.CreateRequest{
Record: map[string]interface{}{ Record: map[string]interface{}{
"id": "1",
"name": "Jane", "name": "Jane",
"age": 42, "age": 42,
"isActive": true, "isActive": true,
"id": "1",
}, },
Table: "users", Table: "users",
@@ -124,57 +178,3 @@ Table: "users",
fmt.Println(rsp, err) fmt.Println(rsp, err)
} }
``` ```
## Truncate
Truncate the records in a table
[https://m3o.com/db/api#Truncate](https://m3o.com/db/api#Truncate)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/db"
)
// Truncate the records in a table
func TruncateTable() {
dbService := db.NewDbService(os.Getenv("M3O_API_TOKEN"))
rsp, err := dbService.Truncate(&db.TruncateRequest{
Table: "users",
})
fmt.Println(rsp, err)
}
```
## Count
Count records in a table
[https://m3o.com/db/api#Count](https://m3o.com/db/api#Count)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/db"
)
// Count records in a table
func CountEntriesInAtable() {
dbService := db.NewDbService(os.Getenv("M3O_API_TOKEN"))
rsp, err := dbService.Count(&db.CountRequest{
Table: "users",
})
fmt.Println(rsp, err)
}
```

View File

@@ -12,10 +12,10 @@ func CreateArecord() {
dbService := db.NewDbService(os.Getenv("M3O_API_TOKEN")) dbService := db.NewDbService(os.Getenv("M3O_API_TOKEN"))
rsp, err := dbService.Create(&db.CreateRequest{ rsp, err := dbService.Create(&db.CreateRequest{
Record: map[string]interface{}{ Record: map[string]interface{}{
"name": "Jane",
"age": 42,
"isActive": true, "isActive": true,
"id": "1", "id": "1",
"name": "Jane",
"age": 42,
}, },
Table: "users", Table: "users",
}) })

View File

@@ -12,8 +12,8 @@ func UpdateArecord() {
dbService := db.NewDbService(os.Getenv("M3O_API_TOKEN")) dbService := db.NewDbService(os.Getenv("M3O_API_TOKEN"))
rsp, err := dbService.Update(&db.UpdateRequest{ rsp, err := dbService.Update(&db.UpdateRequest{
Record: map[string]interface{}{ Record: map[string]interface{}{
"id": "1",
"age": 43, "age": 43,
"id": "1",
}, },
Table: "users", Table: "users",
}) })

View File

@@ -4,6 +4,33 @@ An [m3o.com](https://m3o.com) API. For example usage see [m3o.com/Emoji/api](htt
Endpoints: Endpoints:
## Find
Find an emoji by its alias e.g :beer:
[https://m3o.com/emoji/api#Find](https://m3o.com/emoji/api#Find)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/emoji"
)
// Find an emoji by its alias e.g :beer:
func FindEmoji() {
emojiService := emoji.NewEmojiService(os.Getenv("M3O_API_TOKEN"))
rsp, err := emojiService.Find(&emoji.FindRequest{
Alias: ":beer:",
})
fmt.Println(rsp, err)
}
```
## Flag ## Flag
Get the flag for a country. Requires country code e.g GB for great britain Get the flag for a country. Requires country code e.g GB for great britain
@@ -88,30 +115,3 @@ To: "+44782669123",
fmt.Println(rsp, err) fmt.Println(rsp, err)
} }
``` ```
## Find
Find an emoji by its alias e.g :beer:
[https://m3o.com/emoji/api#Find](https://m3o.com/emoji/api#Find)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/emoji"
)
// Find an emoji by its alias e.g :beer:
func FindEmoji() {
emojiService := emoji.NewEmojiService(os.Getenv("M3O_API_TOKEN"))
rsp, err := emojiService.Find(&emoji.FindRequest{
Alias: ":beer:",
})
fmt.Println(rsp, err)
}
```

View File

@@ -4,32 +4,6 @@ An [m3o.com](https://m3o.com) API. For example usage see [m3o.com/Evchargers/api
Endpoints: Endpoints:
## ReferenceData
Retrieve reference data as used by this API and in conjunction with the Search endpoint
[https://m3o.com/evchargers/api#ReferenceData](https://m3o.com/evchargers/api#ReferenceData)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/evchargers"
)
// Retrieve reference data as used by this API and in conjunction with the Search endpoint
func GetReferenceData() {
evchargersService := evchargers.NewEvchargersService(os.Getenv("M3O_API_TOKEN"))
rsp, err := evchargersService.ReferenceData(&evchargers.ReferenceDataRequest{
})
fmt.Println(rsp, err)
}
```
## Search ## Search
Search by giving a coordinate and a max distance, or bounding box and optional filters Search by giving a coordinate and a max distance, or bounding box and optional filters
@@ -121,3 +95,29 @@ Location: &evchargers.Coordinates{
fmt.Println(rsp, err) fmt.Println(rsp, err)
} }
``` ```
## ReferenceData
Retrieve reference data as used by this API and in conjunction with the Search endpoint
[https://m3o.com/evchargers/api#ReferenceData](https://m3o.com/evchargers/api#ReferenceData)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/evchargers"
)
// Retrieve reference data as used by this API and in conjunction with the Search endpoint
func GetReferenceData() {
evchargersService := evchargers.NewEvchargersService(os.Getenv("M3O_API_TOKEN"))
rsp, err := evchargersService.ReferenceData(&evchargers.ReferenceDataRequest{
})
fmt.Println(rsp, err)
}
```

65
examples/event/README.md Executable file
View File

@@ -0,0 +1,65 @@
# Event
An [m3o.com](https://m3o.com) API. For example usage see [m3o.com/Event/api](https://m3o.com/Event/api).
Endpoints:
## Publish
Publish a message to the event stream.
[https://m3o.com/event/api#Publish](https://m3o.com/event/api#Publish)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/event"
)
// Publish a message to the event stream.
func PublishAmessage() {
eventService := event.NewEventService(os.Getenv("M3O_API_TOKEN"))
rsp, err := eventService.Publish(&event.PublishRequest{
Message: map[string]interface{}{
"user": "john",
"id": "1",
"type": "signup",
},
Topic: "user",
})
fmt.Println(rsp, err)
}
```
## Subscribe
Subscribe to messages for a given topic.
[https://m3o.com/event/api#Subscribe](https://m3o.com/event/api#Subscribe)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/event"
)
// Subscribe to messages for a given topic.
func SubscribeToAtopic() {
eventService := event.NewEventService(os.Getenv("M3O_API_TOKEN"))
rsp, err := eventService.Subscribe(&event.SubscribeRequest{
Topic: "user",
})
fmt.Println(rsp, err)
}
```

View File

@@ -0,0 +1,22 @@
package example
import (
"fmt"
"os"
"go.m3o.com/event"
)
// Publish a message to the event stream.
func PublishAmessage() {
eventService := event.NewEventService(os.Getenv("M3O_API_TOKEN"))
rsp, err := eventService.Publish(&event.PublishRequest{
Message: map[string]interface{}{
"user": "john",
"id": "1",
"type": "signup",
},
Topic: "user",
})
fmt.Println(rsp, err)
}

View File

@@ -0,0 +1,17 @@
package example
import (
"fmt"
"os"
"go.m3o.com/event"
)
// Subscribe to messages for a given topic.
func SubscribeToAtopic() {
eventService := event.NewEventService(os.Getenv("M3O_API_TOKEN"))
rsp, err := eventService.Subscribe(&event.SubscribeRequest{
Topic: "user",
})
fmt.Println(rsp, err)
}

View File

@@ -4,33 +4,6 @@ An [m3o.com](https://m3o.com) API. For example usage see [m3o.com/Forex/api](htt
Endpoints: Endpoints:
## Price
Get the latest price for a given forex ticker
[https://m3o.com/forex/api#Price](https://m3o.com/forex/api#Price)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/forex"
)
// Get the latest price for a given forex ticker
func GetAnFxPrice() {
forexService := forex.NewForexService(os.Getenv("M3O_API_TOKEN"))
rsp, err := forexService.Price(&forex.PriceRequest{
Symbol: "GBPUSD",
})
fmt.Println(rsp, err)
}
```
## Quote ## Quote
Get the latest quote for the forex Get the latest quote for the forex
@@ -85,3 +58,30 @@ func GetPreviousClose() {
fmt.Println(rsp, err) fmt.Println(rsp, err)
} }
``` ```
## Price
Get the latest price for a given forex ticker
[https://m3o.com/forex/api#Price](https://m3o.com/forex/api#Price)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/forex"
)
// Get the latest price for a given forex ticker
func GetAnFxPrice() {
forexService := forex.NewForexService(os.Getenv("M3O_API_TOKEN"))
rsp, err := forexService.Price(&forex.PriceRequest{
Symbol: "GBPUSD",
})
fmt.Println(rsp, err)
}
```

View File

@@ -4,33 +4,6 @@ An [m3o.com](https://m3o.com) API. For example usage see [m3o.com/Helloworld/api
Endpoints: Endpoints:
## Stream
Stream returns a stream of "Hello $name" responses
[https://m3o.com/helloworld/api#Stream](https://m3o.com/helloworld/api#Stream)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/helloworld"
)
// Stream returns a stream of "Hello $name" responses
func StreamsAreCurrentlyTemporarilyNotSupportedInClients() {
helloworldService := helloworld.NewHelloworldService(os.Getenv("M3O_API_TOKEN"))
rsp, err := helloworldService.Stream(&helloworld.StreamRequest{
Name: "not supported",
})
fmt.Println(rsp, err)
}
```
## Call ## Call
Call returns a personalised "Hello $name" response Call returns a personalised "Hello $name" response
@@ -58,3 +31,30 @@ func CallTheHelloworldService() {
fmt.Println(rsp, err) fmt.Println(rsp, err)
} }
``` ```
## Stream
Stream returns a stream of "Hello $name" responses
[https://m3o.com/helloworld/api#Stream](https://m3o.com/helloworld/api#Stream)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/helloworld"
)
// Stream returns a stream of "Hello $name" responses
func StreamsAreCurrentlyTemporarilyNotSupportedInClients() {
helloworldService := helloworld.NewHelloworldService(os.Getenv("M3O_API_TOKEN"))
rsp, err := helloworldService.Stream(&helloworld.StreamRequest{
Name: "not supported",
})
fmt.Println(rsp, err)
}
```

View File

@@ -4,6 +4,96 @@ An [m3o.com](https://m3o.com) API. For example usage see [m3o.com/Image/api](htt
Endpoints: Endpoints:
## Convert
Convert an image from one format (jpeg, png etc.) to an other either on the fly (from base64 to base64),
or by uploading the conversion result.
[https://m3o.com/image/api#Convert](https://m3o.com/image/api#Convert)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/image"
)
// Convert an image from one format (jpeg, png etc.) to an other either on the fly (from base64 to base64),
// or by uploading the conversion result.
func ConvertApngImageToAjpegTakenFromAurlAndSavedToAurlOnMicrosCdn() {
imageService := image.NewImageService(os.Getenv("M3O_API_TOKEN"))
rsp, err := imageService.Convert(&image.ConvertRequest{
Name: "cat.jpeg",
Url: "somewebsite.com/cat.png",
})
fmt.Println(rsp, err)
}
```
## Upload
Upload an image by either sending a base64 encoded image to this endpoint or a URL.
To resize an image before uploading, see the Resize endpoint.
[https://m3o.com/image/api#Upload](https://m3o.com/image/api#Upload)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/image"
)
// Upload an image by either sending a base64 encoded image to this endpoint or a URL.
// To resize an image before uploading, see the Resize endpoint.
func UploadAbase64imageToMicrosCdn() {
imageService := image.NewImageService(os.Getenv("M3O_API_TOKEN"))
rsp, err := imageService.Upload(&image.UploadRequest{
Base64: "data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAx0lEQVR4nOzaMaoDMQyE4ZHj+x82vVdhwQoTkzKQEcwP5r0ihT7sbjUTeAJ4HCegXQJYfOYefOyjDuBiz3yjwJBoCIl6QZOeUjTC1Ix1IxEJXF9+0KWsf2bD4bn37OO/c/wuQ9QyRC1D1DJELUPUMkQtQ9QyRC1D1DJELUPUMkQtQ9QyRC1D1DJELUPUMkQtQ9Sa/NG94Tf3j4WBdaxudMEkn4IM2rZBA0wBrvo7aOcpj2emXvLeVt0IGm0GVXUj91mvAAAA//+V2CZl+4AKXwAAAABJRU5ErkJggg==",
Name: "cat.jpeg",
})
fmt.Println(rsp, err)
}
```
## Upload
Upload an image by either sending a base64 encoded image to this endpoint or a URL.
To resize an image before uploading, see the Resize endpoint.
[https://m3o.com/image/api#Upload](https://m3o.com/image/api#Upload)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/image"
)
// Upload an image by either sending a base64 encoded image to this endpoint or a URL.
// To resize an image before uploading, see the Resize endpoint.
func UploadAnImageFromAurlToMicrosCdn() {
imageService := image.NewImageService(os.Getenv("M3O_API_TOKEN"))
rsp, err := imageService.Upload(&image.UploadRequest{
Name: "cat.jpeg",
Url: "somewebsite.com/cat.png",
})
fmt.Println(rsp, err)
}
```
## Resize ## Resize
Resize an image on the fly without storing it (by sending and receiving a base64 encoded image), or resize and upload depending on parameters. Resize an image on the fly without storing it (by sending and receiving a base64 encoded image), or resize and upload depending on parameters.
@@ -108,93 +198,3 @@ Width: 100,
fmt.Println(rsp, err) fmt.Println(rsp, err)
} }
``` ```
## Convert
Convert an image from one format (jpeg, png etc.) to an other either on the fly (from base64 to base64),
or by uploading the conversion result.
[https://m3o.com/image/api#Convert](https://m3o.com/image/api#Convert)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/image"
)
// Convert an image from one format (jpeg, png etc.) to an other either on the fly (from base64 to base64),
// or by uploading the conversion result.
func ConvertApngImageToAjpegTakenFromAurlAndSavedToAurlOnMicrosCdn() {
imageService := image.NewImageService(os.Getenv("M3O_API_TOKEN"))
rsp, err := imageService.Convert(&image.ConvertRequest{
Name: "cat.jpeg",
Url: "somewebsite.com/cat.png",
})
fmt.Println(rsp, err)
}
```
## Upload
Upload an image by either sending a base64 encoded image to this endpoint or a URL.
To resize an image before uploading, see the Resize endpoint.
[https://m3o.com/image/api#Upload](https://m3o.com/image/api#Upload)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/image"
)
// Upload an image by either sending a base64 encoded image to this endpoint or a URL.
// To resize an image before uploading, see the Resize endpoint.
func UploadAbase64imageToMicrosCdn() {
imageService := image.NewImageService(os.Getenv("M3O_API_TOKEN"))
rsp, err := imageService.Upload(&image.UploadRequest{
Base64: "data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAx0lEQVR4nOzaMaoDMQyE4ZHj+x82vVdhwQoTkzKQEcwP5r0ihT7sbjUTeAJ4HCegXQJYfOYefOyjDuBiz3yjwJBoCIl6QZOeUjTC1Ix1IxEJXF9+0KWsf2bD4bn37OO/c/wuQ9QyRC1D1DJELUPUMkQtQ9QyRC1D1DJELUPUMkQtQ9QyRC1D1DJELUPUMkQtQ9Sa/NG94Tf3j4WBdaxudMEkn4IM2rZBA0wBrvo7aOcpj2emXvLeVt0IGm0GVXUj91mvAAAA//+V2CZl+4AKXwAAAABJRU5ErkJggg==",
Name: "cat.jpeg",
})
fmt.Println(rsp, err)
}
```
## Upload
Upload an image by either sending a base64 encoded image to this endpoint or a URL.
To resize an image before uploading, see the Resize endpoint.
[https://m3o.com/image/api#Upload](https://m3o.com/image/api#Upload)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/image"
)
// Upload an image by either sending a base64 encoded image to this endpoint or a URL.
// To resize an image before uploading, see the Resize endpoint.
func UploadAnImageFromAurlToMicrosCdn() {
imageService := image.NewImageService(os.Getenv("M3O_API_TOKEN"))
rsp, err := imageService.Upload(&image.UploadRequest{
Name: "cat.jpeg",
Url: "somewebsite.com/cat.png",
})
fmt.Println(rsp, err)
}
```

View File

@@ -4,41 +4,6 @@ An [m3o.com](https://m3o.com) API. For example usage see [m3o.com/Location/api](
Endpoints: Endpoints:
## Save
Save an entity's current position
[https://m3o.com/location/api#Save](https://m3o.com/location/api#Save)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/location"
)
// Save an entity's current position
func SaveAnEntity() {
locationService := location.NewLocationService(os.Getenv("M3O_API_TOKEN"))
rsp, err := locationService.Save(&location.SaveRequest{
Entity: &location.Entity{
Id: "1",
Location: &location.Point{
Latitude: 51.511061,
Longitude: -0.120022,
Timestamp: 1622802761,
},
Type: "bike",
},
})
fmt.Println(rsp, err)
}
```
## Read ## Read
Read an entity by its ID Read an entity by its ID
@@ -99,3 +64,38 @@ Type: "bike",
fmt.Println(rsp, err) fmt.Println(rsp, err)
} }
``` ```
## Save
Save an entity's current position
[https://m3o.com/location/api#Save](https://m3o.com/location/api#Save)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/location"
)
// Save an entity's current position
func SaveAnEntity() {
locationService := location.NewLocationService(os.Getenv("M3O_API_TOKEN"))
rsp, err := locationService.Save(&location.SaveRequest{
Entity: &location.Entity{
Id: "1",
Location: &location.Point{
Latitude: 51.511061,
Longitude: -0.120022,
Timestamp: 1622802761,
},
Type: "bike",
},
})
fmt.Println(rsp, err)
}
```

65
examples/mq/README.md Executable file
View File

@@ -0,0 +1,65 @@
# Mq
An [m3o.com](https://m3o.com) API. For example usage see [m3o.com/Mq/api](https://m3o.com/Mq/api).
Endpoints:
## Publish
Publish a message. Specify a topic to group messages for a specific topic.
[https://m3o.com/mq/api#Publish](https://m3o.com/mq/api#Publish)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/mq"
)
// Publish a message. Specify a topic to group messages for a specific topic.
func PublishAmessage() {
mqService := mq.NewMqService(os.Getenv("M3O_API_TOKEN"))
rsp, err := mqService.Publish(&mq.PublishRequest{
Message: map[string]interface{}{
"id": "1",
"type": "signup",
"user": "john",
},
Topic: "events",
})
fmt.Println(rsp, err)
}
```
## Subscribe
Subscribe to messages for a given topic.
[https://m3o.com/mq/api#Subscribe](https://m3o.com/mq/api#Subscribe)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/mq"
)
// Subscribe to messages for a given topic.
func SubscribeToAtopic() {
mqService := mq.NewMqService(os.Getenv("M3O_API_TOKEN"))
rsp, err := mqService.Subscribe(&mq.SubscribeRequest{
Topic: "events",
})
fmt.Println(rsp, err)
}
```

View File

@@ -0,0 +1,22 @@
package example
import (
"fmt"
"os"
"go.m3o.com/mq"
)
// Publish a message. Specify a topic to group messages for a specific topic.
func PublishAmessage() {
mqService := mq.NewMqService(os.Getenv("M3O_API_TOKEN"))
rsp, err := mqService.Publish(&mq.PublishRequest{
Message: map[string]interface{}{
"user": "john",
"id": "1",
"type": "signup",
},
Topic: "events",
})
fmt.Println(rsp, err)
}

View File

@@ -0,0 +1,17 @@
package example
import (
"fmt"
"os"
"go.m3o.com/mq"
)
// Subscribe to messages for a given topic.
func SubscribeToAtopic() {
mqService := mq.NewMqService(os.Getenv("M3O_API_TOKEN"))
rsp, err := mqService.Subscribe(&mq.SubscribeRequest{
Topic: "events",
})
fmt.Println(rsp, err)
}

View File

@@ -4,6 +4,34 @@ An [m3o.com](https://m3o.com) API. For example usage see [m3o.com/Notes/api](htt
Endpoints: Endpoints:
## Create
Create a new note
[https://m3o.com/notes/api#Create](https://m3o.com/notes/api#Create)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/notes"
)
// Create a new note
func CreateAnote() {
notesService := notes.NewNotesService(os.Getenv("M3O_API_TOKEN"))
rsp, err := notesService.Create(&notes.CreateRequest{
Text: "This is my note",
Title: "New Note",
})
fmt.Println(rsp, err)
}
```
## Read ## Read
Read a note Read a note
@@ -115,12 +143,12 @@ func DeleteAnote() {
fmt.Println(rsp, err) fmt.Println(rsp, err)
} }
``` ```
## Create ## Events
Create a new note Subscribe to notes events
[https://m3o.com/notes/api#Create](https://m3o.com/notes/api#Create) [https://m3o.com/notes/api#Events](https://m3o.com/notes/api#Events)
```go ```go
package example package example
@@ -132,12 +160,11 @@ import(
"go.m3o.com/notes" "go.m3o.com/notes"
) )
// Create a new note // Subscribe to notes events
func CreateAnote() { func SubscribeToEvents() {
notesService := notes.NewNotesService(os.Getenv("M3O_API_TOKEN")) notesService := notes.NewNotesService(os.Getenv("M3O_API_TOKEN"))
rsp, err := notesService.Create(&notes.CreateRequest{ rsp, err := notesService.Events(&notes.EventsRequest{
Text: "This is my note", Id: "63c0cdf8-2121-11ec-a881-0242e36f037a",
Title: "New Note",
}) })
fmt.Println(rsp, err) fmt.Println(rsp, err)

View File

@@ -0,0 +1,17 @@
package example
import (
"fmt"
"os"
"go.m3o.com/notes"
)
// Subscribe to notes events
func SubscribeToEvents() {
notesService := notes.NewNotesService(os.Getenv("M3O_API_TOKEN"))
rsp, err := notesService.Events(&notes.EventsRequest{
Id: "63c0cdf8-2121-11ec-a881-0242e36f037a",
})
fmt.Println(rsp, err)
}

View File

@@ -0,0 +1,17 @@
package example
import (
"fmt"
"os"
"go.m3o.com/notes"
)
// Specify the note to events
func SubscribeToEvents() {
notesService := notes.NewNotesService(os.Getenv("M3O_API_TOKEN"))
rsp, err := notesService.Subscribe(&notes.SubscribeRequest{
Id: "63c0cdf8-2121-11ec-a881-0242e36f037a",
})
fmt.Println(rsp, err)
}

View File

@@ -4,6 +4,33 @@ An [m3o.com](https://m3o.com) API. For example usage see [m3o.com/Quran/api](htt
Endpoints: Endpoints:
## Search
Search the Quran for any form of query or questions
[https://m3o.com/quran/api#Search](https://m3o.com/quran/api#Search)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/quran"
)
// Search the Quran for any form of query or questions
func SearchTheQuran() {
quranService := quran.NewQuranService(os.Getenv("M3O_API_TOKEN"))
rsp, err := quranService.Search(&quran.SearchRequest{
Query: "messenger",
})
fmt.Println(rsp, err)
}
```
## Chapters ## Chapters
List the Chapters (surahs) of the Quran List the Chapters (surahs) of the Quran
@@ -89,30 +116,3 @@ func GetVersesOfAchapter() {
fmt.Println(rsp, err) fmt.Println(rsp, err)
} }
``` ```
## Search
Search the Quran for any form of query or questions
[https://m3o.com/quran/api#Search](https://m3o.com/quran/api#Search)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/quran"
)
// Search the Quran for any form of query or questions
func SearchTheQuran() {
quranService := quran.NewQuranService(os.Getenv("M3O_API_TOKEN"))
rsp, err := quranService.Search(&quran.SearchRequest{
Query: "messenger",
})
fmt.Println(rsp, err)
}
```

View File

@@ -4,6 +4,35 @@ An [m3o.com](https://m3o.com) API. For example usage see [m3o.com/Rss/api](https
Endpoints: Endpoints:
## Add
Add a new RSS feed with a name, url, and category
[https://m3o.com/rss/api#Add](https://m3o.com/rss/api#Add)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/rss"
)
// Add a new RSS feed with a name, url, and category
func AddAnewFeed() {
rssService := rss.NewRssService(os.Getenv("M3O_API_TOKEN"))
rsp, err := rssService.Add(&rss.AddRequest{
Category: "news",
Name: "bbc",
Url: "http://feeds.bbci.co.uk/news/rss.xml",
})
fmt.Println(rsp, err)
}
```
## Feed ## Feed
Get an RSS feed by name. If no name is given, all feeds are returned. Default limit is 25 entries. Get an RSS feed by name. If no name is given, all feeds are returned. Default limit is 25 entries.
@@ -84,32 +113,3 @@ func RemoveAfeed() {
fmt.Println(rsp, err) fmt.Println(rsp, err)
} }
``` ```
## Add
Add a new RSS feed with a name, url, and category
[https://m3o.com/rss/api#Add](https://m3o.com/rss/api#Add)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/rss"
)
// Add a new RSS feed with a name, url, and category
func AddAnewFeed() {
rssService := rss.NewRssService(os.Getenv("M3O_API_TOKEN"))
rsp, err := rssService.Add(&rss.AddRequest{
Category: "news",
Name: "bbc",
Url: "http://feeds.bbci.co.uk/news/rss.xml",
})
fmt.Println(rsp, err)
}
```

View File

@@ -4,60 +4,6 @@ An [m3o.com](https://m3o.com) API. For example usage see [m3o.com/Stock/api](htt
Endpoints: Endpoints:
## Price
Get the last price for a given stock ticker
[https://m3o.com/stock/api#Price](https://m3o.com/stock/api#Price)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/stock"
)
// Get the last price for a given stock ticker
func GetAstockPrice() {
stockService := stock.NewStockService(os.Getenv("M3O_API_TOKEN"))
rsp, err := stockService.Price(&stock.PriceRequest{
Symbol: "AAPL",
})
fmt.Println(rsp, err)
}
```
## Quote
Get the last quote for the stock
[https://m3o.com/stock/api#Quote](https://m3o.com/stock/api#Quote)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/stock"
)
// Get the last quote for the stock
func GetAstockQuote() {
stockService := stock.NewStockService(os.Getenv("M3O_API_TOKEN"))
rsp, err := stockService.Quote(&stock.QuoteRequest{
Symbol: "AAPL",
})
fmt.Println(rsp, err)
}
```
## History ## History
Get the historic open-close for a given day Get the historic open-close for a given day
@@ -117,3 +63,57 @@ Stock: "AAPL",
fmt.Println(rsp, err) fmt.Println(rsp, err)
} }
``` ```
## Price
Get the last price for a given stock ticker
[https://m3o.com/stock/api#Price](https://m3o.com/stock/api#Price)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/stock"
)
// Get the last price for a given stock ticker
func GetAstockPrice() {
stockService := stock.NewStockService(os.Getenv("M3O_API_TOKEN"))
rsp, err := stockService.Price(&stock.PriceRequest{
Symbol: "AAPL",
})
fmt.Println(rsp, err)
}
```
## Quote
Get the last quote for the stock
[https://m3o.com/stock/api#Quote](https://m3o.com/stock/api#Quote)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/stock"
)
// Get the last quote for the stock
func GetAstockQuote() {
stockService := stock.NewStockService(os.Getenv("M3O_API_TOKEN"))
rsp, err := stockService.Quote(&stock.QuoteRequest{
Symbol: "AAPL",
})
fmt.Println(rsp, err)
}
```

View File

@@ -26,9 +26,9 @@ func PublishAmessage() {
streamService := stream.NewStreamService(os.Getenv("M3O_API_TOKEN")) streamService := stream.NewStreamService(os.Getenv("M3O_API_TOKEN"))
rsp, err := streamService.Publish(&stream.PublishRequest{ rsp, err := streamService.Publish(&stream.PublishRequest{
Message: map[string]interface{}{ Message: map[string]interface{}{
"id": "1",
"type": "signup", "type": "signup",
"user": "john", "user": "john",
"id": "1",
}, },
Topic: "events", Topic: "events",

View File

@@ -4,6 +4,109 @@ An [m3o.com](https://m3o.com) API. For example usage see [m3o.com/User/api](http
Endpoints: Endpoints:
## SendVerificationEmail
Send a verification email
to the user being signed up. Email from will be from 'support@m3o.com',
but you can provide the title and contents.
The verification link will be injected in to the email as a template variable, $micro_verification_link.
Example: 'Hi there, welcome onboard! Use the link below to verify your email: $micro_verification_link'
The variable will be replaced with an actual url that will look similar to this:
'https://user.m3o.com/user/verify?token=a-verification-token&redirectUrl=your-redir-url'
[https://m3o.com/user/api#SendVerificationEmail](https://m3o.com/user/api#SendVerificationEmail)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/user"
)
// Send a verification email
// to the user being signed up. Email from will be from 'support@m3o.com',
// but you can provide the title and contents.
// The verification link will be injected in to the email as a template variable, $micro_verification_link.
// Example: 'Hi there, welcome onboard! Use the link below to verify your email: $micro_verification_link'
// The variable will be replaced with an actual url that will look similar to this:
// 'https://user.m3o.com/user/verify?token=a-verification-token&redirectUrl=your-redir-url'
func SendVerificationEmail() {
userService := user.NewUserService(os.Getenv("M3O_API_TOKEN"))
rsp, err := userService.SendVerificationEmail(&user.SendVerificationEmailRequest{
Email: "joe@example.com",
FailureRedirectUrl: "https://m3o.com/verification-failed",
FromName: "Awesome Dot Com",
RedirectUrl: "https://m3o.com",
Subject: "Email verification",
TextContent: `Hi there,
Please verify your email by clicking this link: $micro_verification_link`,
})
fmt.Println(rsp, err)
}
```
## Login
Login using username or email. The response will return a new session for successful login,
401 in the case of login failure and 500 for any other error
[https://m3o.com/user/api#Login](https://m3o.com/user/api#Login)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/user"
)
// Login using username or email. The response will return a new session for successful login,
// 401 in the case of login failure and 500 for any other error
func LogAuserIn() {
userService := user.NewUserService(os.Getenv("M3O_API_TOKEN"))
rsp, err := userService.Login(&user.LoginRequest{
Email: "joe@example.com",
Password: "mySecretPass123",
})
fmt.Println(rsp, err)
}
```
## ReadSession
Read a session by the session id. In the event it has expired or is not found and error is returned.
[https://m3o.com/user/api#ReadSession](https://m3o.com/user/api#ReadSession)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/user"
)
// Read a session by the session id. In the event it has expired or is not found and error is returned.
func ReadAsessionByTheSessionId() {
userService := user.NewUserService(os.Getenv("M3O_API_TOKEN"))
rsp, err := userService.ReadSession(&user.ReadSessionRequest{
SessionId: "sds34s34s34-s34s34-s43s43s34-s4s34s",
})
fmt.Println(rsp, err)
}
```
## Create ## Create
Create a new user account. The email address and username for the account must be unique. Create a new user account. The email address and username for the account must be unique.
@@ -62,6 +165,116 @@ Id: "usrid-1",
fmt.Println(rsp, err) fmt.Println(rsp, err)
} }
``` ```
## VerifyEmail
Verify the email address of an account from a token sent in an email to the user.
[https://m3o.com/user/api#VerifyEmail](https://m3o.com/user/api#VerifyEmail)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/user"
)
// Verify the email address of an account from a token sent in an email to the user.
func VerifyEmail() {
userService := user.NewUserService(os.Getenv("M3O_API_TOKEN"))
rsp, err := userService.VerifyEmail(&user.VerifyEmailRequest{
Token: "t2323t232t",
})
fmt.Println(rsp, err)
}
```
## Delete
Delete an account by id
[https://m3o.com/user/api#Delete](https://m3o.com/user/api#Delete)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/user"
)
// Delete an account by id
func DeleteUserAccount() {
userService := user.NewUserService(os.Getenv("M3O_API_TOKEN"))
rsp, err := userService.Delete(&user.DeleteRequest{
Id: "fdf34f34f34-f34f34-f43f43f34-f4f34f",
})
fmt.Println(rsp, err)
}
```
## Logout
Logout a user account
[https://m3o.com/user/api#Logout](https://m3o.com/user/api#Logout)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/user"
)
// Logout a user account
func LogAuserOut() {
userService := user.NewUserService(os.Getenv("M3O_API_TOKEN"))
rsp, err := userService.Logout(&user.LogoutRequest{
SessionId: "sds34s34s34-s34s34-s43s43s34-s4s34s",
})
fmt.Println(rsp, err)
}
```
## UpdatePassword
Update the account password
[https://m3o.com/user/api#UpdatePassword](https://m3o.com/user/api#UpdatePassword)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/user"
)
// Update the account password
func UpdateTheAccountPassword() {
userService := user.NewUserService(os.Getenv("M3O_API_TOKEN"))
rsp, err := userService.UpdatePassword(&user.UpdatePasswordRequest{
ConfirmPassword: "myEvenMoreSecretPass123",
NewPassword: "myEvenMoreSecretPass123",
OldPassword: "mySecretPass123",
})
fmt.Println(rsp, err)
}
```
## Read ## Read
Read an account by id, username or email. Only one need to be specified. Read an account by id, username or email. Only one need to be specified.
@@ -143,216 +356,3 @@ func ReadAccountByEmail() {
fmt.Println(rsp, err) fmt.Println(rsp, err)
} }
``` ```
## Delete
Delete an account by id
[https://m3o.com/user/api#Delete](https://m3o.com/user/api#Delete)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/user"
)
// Delete an account by id
func DeleteUserAccount() {
userService := user.NewUserService(os.Getenv("M3O_API_TOKEN"))
rsp, err := userService.Delete(&user.DeleteRequest{
Id: "fdf34f34f34-f34f34-f43f43f34-f4f34f",
})
fmt.Println(rsp, err)
}
```
## Login
Login using username or email. The response will return a new session for successful login,
401 in the case of login failure and 500 for any other error
[https://m3o.com/user/api#Login](https://m3o.com/user/api#Login)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/user"
)
// Login using username or email. The response will return a new session for successful login,
// 401 in the case of login failure and 500 for any other error
func LogAuserIn() {
userService := user.NewUserService(os.Getenv("M3O_API_TOKEN"))
rsp, err := userService.Login(&user.LoginRequest{
Email: "joe@example.com",
Password: "mySecretPass123",
})
fmt.Println(rsp, err)
}
```
## Logout
Logout a user account
[https://m3o.com/user/api#Logout](https://m3o.com/user/api#Logout)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/user"
)
// Logout a user account
func LogAuserOut() {
userService := user.NewUserService(os.Getenv("M3O_API_TOKEN"))
rsp, err := userService.Logout(&user.LogoutRequest{
SessionId: "sds34s34s34-s34s34-s43s43s34-s4s34s",
})
fmt.Println(rsp, err)
}
```
## ReadSession
Read a session by the session id. In the event it has expired or is not found and error is returned.
[https://m3o.com/user/api#ReadSession](https://m3o.com/user/api#ReadSession)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/user"
)
// Read a session by the session id. In the event it has expired or is not found and error is returned.
func ReadAsessionByTheSessionId() {
userService := user.NewUserService(os.Getenv("M3O_API_TOKEN"))
rsp, err := userService.ReadSession(&user.ReadSessionRequest{
SessionId: "sds34s34s34-s34s34-s43s43s34-s4s34s",
})
fmt.Println(rsp, err)
}
```
## UpdatePassword
Update the account password
[https://m3o.com/user/api#UpdatePassword](https://m3o.com/user/api#UpdatePassword)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/user"
)
// Update the account password
func UpdateTheAccountPassword() {
userService := user.NewUserService(os.Getenv("M3O_API_TOKEN"))
rsp, err := userService.UpdatePassword(&user.UpdatePasswordRequest{
ConfirmPassword: "myEvenMoreSecretPass123",
NewPassword: "myEvenMoreSecretPass123",
OldPassword: "mySecretPass123",
})
fmt.Println(rsp, err)
}
```
## SendVerificationEmail
Send a verification email
to the user being signed up. Email from will be from 'support@m3o.com',
but you can provide the title and contents.
The verification link will be injected in to the email as a template variable, $micro_verification_link.
Example: 'Hi there, welcome onboard! Use the link below to verify your email: $micro_verification_link'
The variable will be replaced with an actual url that will look similar to this:
'https://user.m3o.com/user/verify?token=a-verification-token&redirectUrl=your-redir-url'
[https://m3o.com/user/api#SendVerificationEmail](https://m3o.com/user/api#SendVerificationEmail)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/user"
)
// Send a verification email
// to the user being signed up. Email from will be from 'support@m3o.com',
// but you can provide the title and contents.
// The verification link will be injected in to the email as a template variable, $micro_verification_link.
// Example: 'Hi there, welcome onboard! Use the link below to verify your email: $micro_verification_link'
// The variable will be replaced with an actual url that will look similar to this:
// 'https://user.m3o.com/user/verify?token=a-verification-token&redirectUrl=your-redir-url'
func SendVerificationEmail() {
userService := user.NewUserService(os.Getenv("M3O_API_TOKEN"))
rsp, err := userService.SendVerificationEmail(&user.SendVerificationEmailRequest{
Email: "joe@example.com",
FailureRedirectUrl: "https://m3o.com/verification-failed",
FromName: "Awesome Dot Com",
RedirectUrl: "https://m3o.com",
Subject: "Email verification",
TextContent: `Hi there,
Please verify your email by clicking this link: $micro_verification_link`,
})
fmt.Println(rsp, err)
}
```
## VerifyEmail
Verify the email address of an account from a token sent in an email to the user.
[https://m3o.com/user/api#VerifyEmail](https://m3o.com/user/api#VerifyEmail)
```go
package example
import(
"fmt"
"os"
"go.m3o.com/user"
)
// Verify the email address of an account from a token sent in an email to the user.
func VerifyEmail() {
userService := user.NewUserService(os.Getenv("M3O_API_TOKEN"))
rsp, err := userService.VerifyEmail(&user.VerifyEmailRequest{
Token: "t2323t232t",
})
fmt.Println(rsp, err)
}
```

9
m3o.go
View File

@@ -10,6 +10,7 @@ import (
"go.m3o.com/email" "go.m3o.com/email"
"go.m3o.com/emoji" "go.m3o.com/emoji"
"go.m3o.com/evchargers" "go.m3o.com/evchargers"
"go.m3o.com/event"
"go.m3o.com/file" "go.m3o.com/file"
"go.m3o.com/forex" "go.m3o.com/forex"
"go.m3o.com/function" "go.m3o.com/function"
@@ -22,6 +23,7 @@ import (
"go.m3o.com/image" "go.m3o.com/image"
"go.m3o.com/ip" "go.m3o.com/ip"
"go.m3o.com/location" "go.m3o.com/location"
"go.m3o.com/mq"
"go.m3o.com/notes" "go.m3o.com/notes"
"go.m3o.com/otp" "go.m3o.com/otp"
"go.m3o.com/postcode" "go.m3o.com/postcode"
@@ -33,7 +35,6 @@ import (
"go.m3o.com/sentiment" "go.m3o.com/sentiment"
"go.m3o.com/sms" "go.m3o.com/sms"
"go.m3o.com/stock" "go.m3o.com/stock"
"go.m3o.com/stream"
"go.m3o.com/sunnah" "go.m3o.com/sunnah"
"go.m3o.com/thumbnail" "go.m3o.com/thumbnail"
"go.m3o.com/time" "go.m3o.com/time"
@@ -58,6 +59,7 @@ func NewClient(token string) *Client {
EmailService: email.NewEmailService(token), EmailService: email.NewEmailService(token),
EmojiService: emoji.NewEmojiService(token), EmojiService: emoji.NewEmojiService(token),
EvchargersService: evchargers.NewEvchargersService(token), EvchargersService: evchargers.NewEvchargersService(token),
EventService: event.NewEventService(token),
FileService: file.NewFileService(token), FileService: file.NewFileService(token),
ForexService: forex.NewForexService(token), ForexService: forex.NewForexService(token),
FunctionService: function.NewFunctionService(token), FunctionService: function.NewFunctionService(token),
@@ -70,6 +72,7 @@ func NewClient(token string) *Client {
ImageService: image.NewImageService(token), ImageService: image.NewImageService(token),
IpService: ip.NewIpService(token), IpService: ip.NewIpService(token),
LocationService: location.NewLocationService(token), LocationService: location.NewLocationService(token),
MqService: mq.NewMqService(token),
NotesService: notes.NewNotesService(token), NotesService: notes.NewNotesService(token),
OtpService: otp.NewOtpService(token), OtpService: otp.NewOtpService(token),
PostcodeService: postcode.NewPostcodeService(token), PostcodeService: postcode.NewPostcodeService(token),
@@ -81,7 +84,6 @@ func NewClient(token string) *Client {
SentimentService: sentiment.NewSentimentService(token), SentimentService: sentiment.NewSentimentService(token),
SmsService: sms.NewSmsService(token), SmsService: sms.NewSmsService(token),
StockService: stock.NewStockService(token), StockService: stock.NewStockService(token),
StreamService: stream.NewStreamService(token),
SunnahService: sunnah.NewSunnahService(token), SunnahService: sunnah.NewSunnahService(token),
ThumbnailService: thumbnail.NewThumbnailService(token), ThumbnailService: thumbnail.NewThumbnailService(token),
TimeService: time.NewTimeService(token), TimeService: time.NewTimeService(token),
@@ -106,6 +108,7 @@ type Client struct {
EmailService *email.EmailService EmailService *email.EmailService
EmojiService *emoji.EmojiService EmojiService *emoji.EmojiService
EvchargersService *evchargers.EvchargersService EvchargersService *evchargers.EvchargersService
EventService *event.EventService
FileService *file.FileService FileService *file.FileService
ForexService *forex.ForexService ForexService *forex.ForexService
FunctionService *function.FunctionService FunctionService *function.FunctionService
@@ -118,6 +121,7 @@ type Client struct {
ImageService *image.ImageService ImageService *image.ImageService
IpService *ip.IpService IpService *ip.IpService
LocationService *location.LocationService LocationService *location.LocationService
MqService *mq.MqService
NotesService *notes.NotesService NotesService *notes.NotesService
OtpService *otp.OtpService OtpService *otp.OtpService
PostcodeService *postcode.PostcodeService PostcodeService *postcode.PostcodeService
@@ -129,7 +133,6 @@ type Client struct {
SentimentService *sentiment.SentimentService SentimentService *sentiment.SentimentService
SmsService *sms.SmsService SmsService *sms.SmsService
StockService *stock.StockService StockService *stock.StockService
StreamService *stream.StreamService
SunnahService *sunnah.SunnahService SunnahService *sunnah.SunnahService
ThumbnailService *thumbnail.ThumbnailService ThumbnailService *thumbnail.ThumbnailService
TimeService *time.TimeService TimeService *time.TimeService

51
mq/mq.go Executable file
View File

@@ -0,0 +1,51 @@
package mq
import (
"go.m3o.com/client"
)
func NewMqService(token string) *MqService {
return &MqService{
client: client.NewClient(&client.Options{
Token: token,
}),
}
}
type MqService struct {
client *client.Client
}
// Publish a message. 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"`
}

View File

@@ -28,6 +28,12 @@ func (t *NotesService) Delete(request *DeleteRequest) (*DeleteResponse, error) {
return rsp, t.client.Call("notes", "Delete", request, rsp) return rsp, t.client.Call("notes", "Delete", request, rsp)
} }
// Subscribe to notes events
func (t *NotesService) Events(request *EventsRequest) (*EventsResponse, error) {
rsp := &EventsResponse{}
return rsp, t.client.Call("notes", "Events", request, rsp)
}
// List all the notes // List all the notes
func (t *NotesService) List(request *ListRequest) (*ListResponse, error) { func (t *NotesService) List(request *ListRequest) (*ListResponse, error) {
rsp := &ListResponse{} rsp := &ListResponse{}
@@ -40,12 +46,6 @@ func (t *NotesService) Read(request *ReadRequest) (*ReadResponse, error) {
return rsp, t.client.Call("notes", "Read", request, rsp) return rsp, t.client.Call("notes", "Read", request, rsp)
} }
// Specify the note to events
func (t *NotesService) Subscribe(request *SubscribeRequest) (*SubscribeResponse, error) {
rsp := &SubscribeResponse{}
return rsp, t.client.Call("notes", "Subscribe", request, rsp)
}
// Update a note // Update a note
func (t *NotesService) Update(request *UpdateRequest) (*UpdateResponse, error) { func (t *NotesService) Update(request *UpdateRequest) (*UpdateResponse, error) {
rsp := &UpdateResponse{} rsp := &UpdateResponse{}
@@ -73,6 +73,18 @@ type DeleteResponse struct {
Note *Note `json:"note"` Note *Note `json:"note"`
} }
type EventsRequest struct {
// optionally specify a note id
Id string `json:"id"`
}
type EventsResponse struct {
// the event which occured; create, delete, update
Event string `json:"event"`
// the note which the operation occured on
Note *Note `json:"note"`
}
type ListRequest struct { type ListRequest struct {
} }
@@ -104,18 +116,6 @@ type ReadResponse struct {
Note *Note `json:"note"` Note *Note `json:"note"`
} }
type SubscribeRequest struct {
// optionally specify a note id
Id string `json:"id"`
}
type SubscribeResponse struct {
// the event which occured; created, deleted, updated
Event string `json:"event"`
// the note which the operation occured on
Note *Note `json:"note"`
}
type UpdateRequest struct { type UpdateRequest struct {
Note *Note `json:"note"` Note *Note `json:"note"`
} }