diff --git a/clients/go/m3o.go b/clients/go/m3o.go index 39876bf..fb72cbb 100755 --- a/clients/go/m3o.go +++ b/clients/go/m3o.go @@ -34,6 +34,7 @@ import ( "github.com/micro/services/clients/go/rss" "github.com/micro/services/clients/go/sentiment" "github.com/micro/services/clients/go/sms" + "github.com/micro/services/clients/go/spam" "github.com/micro/services/clients/go/stock" "github.com/micro/services/clients/go/stream" "github.com/micro/services/clients/go/sunnah" @@ -84,6 +85,7 @@ func NewClient(token string) *Client { RssService: rss.NewRssService(token), SentimentService: sentiment.NewSentimentService(token), SmsService: sms.NewSmsService(token), + SpamService: spam.NewSpamService(token), StockService: stock.NewStockService(token), StreamService: stream.NewStreamService(token), SunnahService: sunnah.NewSunnahService(token), @@ -134,6 +136,7 @@ type Client struct { RssService *rss.RssService SentimentService *sentiment.SentimentService SmsService *sms.SmsService + SpamService *spam.SpamService StockService *stock.StockService StreamService *stream.StreamService SunnahService *sunnah.SunnahService diff --git a/clients/go/spam/spam.go b/clients/go/spam/spam.go new file mode 100755 index 0000000..efa7430 --- /dev/null +++ b/clients/go/spam/spam.go @@ -0,0 +1,43 @@ +package spam + +import ( + "github.com/micro/micro-go/client" +) + +func NewSpamService(token string) *SpamService { + return &SpamService{ + client: client.NewClient(&client.Options{ + Token: token, + }), + } +} + +type SpamService struct { + client *client.Client +} + +// Check whether an email is likely to be spam based on its attributes +func (t *SpamService) Classify(request *ClassifyRequest) (*ClassifyResponse, error) { + rsp := &ClassifyResponse{} + return rsp, t.client.Call("spam", "Classify", request, rsp) +} + +type ClassifyRequest struct { + // The body of the email + EmailBody string `json:"emailBody"` + // The email address it has been sent from + From string `json:"from"` + // The subject of the email + Subject string `json:"subject"` + // The email address it is being sent to + To string `json:"to"` +} + +type ClassifyResponse struct { + // The rules that have contributed to this score + Details []string `json:"details"` + // Is it spam? Returns true if its score is > 5 + IsSpam bool `json:"isSpam"` + // The score evaluated for this email. A higher number means it is more likely to be spam + Score float64 `json:"score"` +} diff --git a/clients/ts/.gitignore b/clients/ts/.gitignore index 1909ab2..f26189f 100644 --- a/clients/ts/.gitignore +++ b/clients/ts/.gitignore @@ -46,6 +46,7 @@ routing rss sentiment sms +spam stock stream sunnah diff --git a/clients/ts/index.ts b/clients/ts/index.ts index 21b09e6..22063d1 100755 --- a/clients/ts/index.ts +++ b/clients/ts/index.ts @@ -31,6 +31,7 @@ import * as routing from "./routing"; import * as rss from "./rss"; import * as sentiment from "./sentiment"; import * as sms from "./sms"; +import * as spam from "./spam"; import * as stock from "./stock"; import * as stream from "./stream"; import * as sunnah from "./sunnah"; @@ -78,6 +79,7 @@ export class Client { this.rssService = new rss.RssService(token); this.sentimentService = new sentiment.SentimentService(token); this.smsService = new sms.SmsService(token); + this.spamService = new spam.SpamService(token); this.stockService = new stock.StockService(token); this.streamService = new stream.StreamService(token); this.sunnahService = new sunnah.SunnahService(token); @@ -124,6 +126,7 @@ export class Client { rssService: rss.RssService; sentimentService: sentiment.SentimentService; smsService: sms.SmsService; + spamService: spam.SpamService; stockService: stock.StockService; streamService: stream.StreamService; sunnahService: sunnah.SunnahService; diff --git a/clients/ts/package.json b/clients/ts/package.json index 0daf4f2..f34477f 100644 --- a/clients/ts/package.json +++ b/clients/ts/package.json @@ -51,6 +51,7 @@ "rss", "sentiment", "sms", + "spam", "stock", "stream", "sunnah", @@ -78,5 +79,5 @@ "prepare": "npm run build" }, "types": "index.d.ts", - "version": "1.0.717" + "version": "1.0.734" } \ 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/db/update/go/updateARecord.go b/examples/db/update/go/updateARecord.go index 4517043..1fb0e47 100755 --- a/examples/db/update/go/updateARecord.go +++ b/examples/db/update/go/updateARecord.go @@ -12,8 +12,8 @@ func UpdateArecord() { dbService := db.NewDbService(os.Getenv("MICRO_API_TOKEN")) rsp, err := dbService.Update(&db.UpdateRequest{ Record: map[string]interface{}{ - "id": "1", "age": 43, + "id": "1", }, Table: "users", }) diff --git a/examples/event/publish/go/publishAnEvent.go b/examples/event/publish/go/publishAnEvent.go index a6a3b0e..fd9dc17 100755 --- a/examples/event/publish/go/publishAnEvent.go +++ b/examples/event/publish/go/publishAnEvent.go @@ -12,9 +12,9 @@ func PublishAnEvent() { eventService := event.NewEventService(os.Getenv("MICRO_API_TOKEN")) rsp, err := eventService.Publish(&event.PublishRequest{ Message: map[string]interface{}{ - "type": "signup", "user": "john", "id": "1", + "type": "signup", }, Topic: "user", }) diff --git a/examples/spam/classify/curl/classifyAnEmail.sh b/examples/spam/classify/curl/classifyAnEmail.sh new file mode 100755 index 0000000..c957d00 --- /dev/null +++ b/examples/spam/classify/curl/classifyAnEmail.sh @@ -0,0 +1,9 @@ +curl "http://localhost:8080/spam/Classify" \ +-H "Content-Type: application/json" \ +-H "Authorization: Bearer $MICRO_API_TOKEN" \ +-d '{ + "email_body": "Hi there,\n\nWelcome to M3O.\n\nThanks\nM3O team", + "from": "noreply@m3o.com", + "subject": "Welcome", + "to": "hello@example.com" +}' \ No newline at end of file diff --git a/examples/spam/classify/go/classifyAnEmail.go b/examples/spam/classify/go/classifyAnEmail.go new file mode 100755 index 0000000..6741570 --- /dev/null +++ b/examples/spam/classify/go/classifyAnEmail.go @@ -0,0 +1,19 @@ +package example + +import ( + "fmt" + "os" + + "github.com/micro/services/clients/go/spam" +) + +// Check whether an email is likely to be spam based on its attributes +func ClassifyAnEmail() { + spamService := spam.NewSpamService(os.Getenv("MICRO_API_TOKEN")) + rsp, err := spamService.Classify(&spam.ClassifyRequest{ + From: "noreply@m3o.com", + Subject: "Welcome", + To: "hello@example.com", + }) + fmt.Println(rsp, err) +} diff --git a/examples/spam/classify/node/classifyAnEmail.js b/examples/spam/classify/node/classifyAnEmail.js new file mode 100755 index 0000000..0c468d8 --- /dev/null +++ b/examples/spam/classify/node/classifyAnEmail.js @@ -0,0 +1,15 @@ +const { SpamService } = require("m3o/spam"); + +// Check whether an email is likely to be spam based on its attributes +async function classifyAnEmail() { + let spamService = new SpamService(process.env.MICRO_API_TOKEN); + let rsp = await spamService.classify({ + email_body: "Hi there,\n\nWelcome to M3O.\n\nThanks\nM3O team", + from: "noreply@m3o.com", + subject: "Welcome", + to: "hello@example.com", + }); + console.log(rsp); +} + +classifyAnEmail();