diff --git a/clients/go/LICENSE b/clients/go/LICENSE deleted file mode 100644 index d645695..0000000 --- a/clients/go/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/clients/go/README.md b/clients/go/README.md deleted file mode 100644 index 36e445b..0000000 --- a/clients/go/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Micro Go Client - -This directory contains the Go clients for micro services diff --git a/clients/go/m3o.go b/clients/go/m3o.go index 39e91eb..1e3a2eb 100755 --- a/clients/go/m3o.go +++ b/clients/go/m3o.go @@ -27,7 +27,6 @@ import ( "github.com/micro/services/clients/go/sms" "github.com/micro/services/clients/go/stock" "github.com/micro/services/clients/go/stream" - "github.com/micro/services/clients/go/sunnah" "github.com/micro/services/clients/go/thumbnail" "github.com/micro/services/clients/go/time" "github.com/micro/services/clients/go/twitter" @@ -66,7 +65,6 @@ func NewClient(token string) *Client { SmsService: sms.NewSmsService(token), StockService: stock.NewStockService(token), StreamService: stream.NewStreamService(token), - SunnahService: sunnah.NewSunnahService(token), ThumbnailService: thumbnail.NewThumbnailService(token), TimeService: time.NewTimeService(token), TwitterService: twitter.NewTwitterService(token), @@ -105,7 +103,6 @@ type Client struct { SmsService *sms.SmsService StockService *stock.StockService StreamService *stream.StreamService - SunnahService *sunnah.SunnahService ThumbnailService *thumbnail.ThumbnailService TimeService *time.TimeService TwitterService *twitter.TwitterService diff --git a/clients/go/quran/quran.go b/clients/go/quran/quran.go index 31191a6..ea515f2 100755 --- a/clients/go/quran/quran.go +++ b/clients/go/quran/quran.go @@ -87,7 +87,7 @@ type Result struct { // The associated arabic text Text string `json:"text"` // The related translations to the text - Translations []Translation `json:"translations"` + Translations []Interpretation `json:"translations"` // The unique verse id across the Quran VerseId int32 `json:"verseId"` // The verse key e.g 1:1 diff --git a/clients/go/sunnah/sunnah.go b/clients/go/sunnah/sunnah.go deleted file mode 100755 index 4375cfc..0000000 --- a/clients/go/sunnah/sunnah.go +++ /dev/null @@ -1,183 +0,0 @@ -package sunnah - -import ( - "github.com/m3o/m3o-go/client" -) - -func NewSunnahService(token string) *SunnahService { - return &SunnahService{ - client: client.NewClient(&client.Options{ - Token: token, - }), - } -} - -type SunnahService struct { - client *client.Client -} - -// Get a list of books from within a collection. A book can contain many chapters -// each with its own hadiths. -func (t *SunnahService) Books(request *BooksRequest) (*BooksResponse, error) { - rsp := &BooksResponse{} - return rsp, t.client.Call("sunnah", "Books", request, rsp) -} - -// Get all the chapters of a given book within a collection. -func (t *SunnahService) Chapters(request *ChaptersRequest) (*ChaptersResponse, error) { - rsp := &ChaptersResponse{} - return rsp, t.client.Call("sunnah", "Chapters", request, rsp) -} - -// Get a list of available collections. A collection is -// a compilation of hadiths collected and written by an author. -func (t *SunnahService) Collections(request *CollectionsRequest) (*CollectionsResponse, error) { - rsp := &CollectionsResponse{} - return rsp, t.client.Call("sunnah", "Collections", request, rsp) -} - -// Hadiths returns a list of hadiths and their corresponding text for a -// given book within a collection. -func (t *SunnahService) Hadiths(request *HadithsRequest) (*HadithsResponse, error) { - rsp := &HadithsResponse{} - return rsp, t.client.Call("sunnah", "Hadiths", request, rsp) -} - -type Book struct { - // arabic name of the book - ArabicName string `json:"arabicName"` - // number of hadiths in the book - Hadiths int32 `json:"hadiths"` - // number of the book e.g 1 - Id int32 `json:"id"` - // name of the book - Name string `json:"name"` -} - -type BooksRequest struct { - // Name of the collection - Collection string `json:"collection"` - // Limit the number of books returned - Limit int32 `json:"limit"` - // The page in the pagination - Page int32 `json:"page"` -} - -type BooksResponse struct { - // A list of books - Books []Book `json:"books"` - // Name of the collection - Collection string `json:"collection"` - // The limit specified - Limit int32 `json:"limit"` - // The page requested - Page int32 `json:"page"` - // The total overall books - Total int32 `json:"total"` -} - -type Chapter struct { - // arabic title - ArabicTitle string `json:"arabicTitle"` - // the book number - Book int32 `json:"book"` - // the chapter id e.g 1 - Id int32 `json:"id"` - // the chapter key e.g 1.00 - Key string `json:"key"` - // title of the chapter - Title string `json:"title"` -} - -type ChaptersRequest struct { - // number of the book - Book int32 `json:"book"` - // name of the collection - Collection string `json:"collection"` - // Limit the number of chapters returned - Limit int32 `json:"limit"` - // The page in the pagination - Page int32 `json:"page"` -} - -type ChaptersResponse struct { - // number of the book - Book int32 `json:"book"` - // The chapters of the book - Chapters []Chapter `json:"chapters"` - // name of the collection - Collection string `json:"collection"` - // Limit the number of chapters returned - Limit int32 `json:"limit"` - // The page in the pagination - Page int32 `json:"page"` - // Total chapters in the book - Total int32 `json:"total"` -} - -type Collection struct { - // Arabic title if available - ArabicTitle string `json:"arabicTitle"` - // Total hadiths in the collection - Hadiths int32 `json:"hadiths"` - // Name of the collection e.g bukhari - Name string `json:"name"` - // An introduction explaining the collection - Summary string `json:"summary"` - // Title of the collection e.g Sahih al-Bukhari - Title string `json:"title"` -} - -type CollectionsRequest struct { - // Number of collections to limit to - Limit int32 `json:"limit"` - // The page in the pagination - Page int32 `json:"page"` -} - -type CollectionsResponse struct { - Collections []Collection `json:"collections"` -} - -type Hadith struct { - // the arabic chapter title - ArabicChapterTitle string `json:"arabicChapterTitle"` - // the arabic text - ArabicText string `json:"arabicText"` - // the chapter id - Chapter int32 `json:"chapter"` - // the chapter key - ChapterKey string `json:"chapterKey"` - // the chapter title - ChapterTitle string `json:"chapterTitle"` - // hadith id - Id int32 `json:"id"` - // hadith text - Text string `json:"text"` -} - -type HadithsRequest struct { - // number of the book - Book int32 `json:"book"` - // name of the collection - Collection string `json:"collection"` - // Limit the number of hadiths - Limit int32 `json:"limit"` - // The page in the pagination - Page int32 `json:"page"` -} - -type HadithsResponse struct { - // number of the book - Book int32 `json:"book"` - // name of the collection - Collection string `json:"collection"` - // The hadiths of the book - Hadiths []Hadith `json:"hadiths"` - // Limit the number of hadiths returned - Limit int32 `json:"limit"` - // The page in the pagination - Page int32 `json:"page"` - // Total hadiths in the book - Total int32 `json:"total"` -} diff --git a/clients/ts/index.ts b/clients/ts/index.ts index 5ed6804..444d989 100755 --- a/clients/ts/index.ts +++ b/clients/ts/index.ts @@ -24,7 +24,6 @@ import * as sentiment from "./sentiment"; import * as sms from "./sms"; import * as stock from "./stock"; import * as stream from "./stream"; -import * as sunnah from "./sunnah"; import * as thumbnail from "./thumbnail"; import * as time from "./time"; import * as twitter from "./twitter"; @@ -60,7 +59,6 @@ export class Client { this.smsService = new sms.SmsService(token); this.stockService = new stock.StockService(token); this.streamService = new stream.StreamService(token); - this.sunnahService = new sunnah.SunnahService(token); this.thumbnailService = new thumbnail.ThumbnailService(token); this.timeService = new time.TimeService(token); this.twitterService = new twitter.TwitterService(token); @@ -95,7 +93,6 @@ export class Client { smsService: sms.SmsService; stockService: stock.StockService; streamService: stream.StreamService; - sunnahService: sunnah.SunnahService; thumbnailService: thumbnail.ThumbnailService; timeService: time.TimeService; twitterService: twitter.TwitterService; diff --git a/clients/ts/package.json b/clients/ts/package.json index b939fc9..9e784e6 100644 --- a/clients/ts/package.json +++ b/clients/ts/package.json @@ -36,7 +36,6 @@ "./sms": "./dist/sms/index.js", "./stock": "./dist/stock/index.js", "./stream": "./dist/stream/index.js", - "./sunnah": "./dist/sunnah/index.js", "./test": "./dist/test/index.js", "./thumbnail": "./dist/thumbnail/index.js", "./time": "./dist/time/index.js", @@ -59,5 +58,5 @@ }, "type": "module", "types": "dist/index.d.ts", - "version": "1.0.520" + "version": "1.0.521" } \ No newline at end of file diff --git a/clients/ts/quran/index.ts b/clients/ts/quran/index.ts index 73a2c78..f903ecc 100755 --- a/clients/ts/quran/index.ts +++ b/clients/ts/quran/index.ts @@ -149,7 +149,7 @@ export interface Verse { // The unique id of the verse in the whole book id?: number; // The interpretations of the verse - interpretations?: Translation[]; + interpretations?: Interpretation[]; // The key of this verse (chapter:verse) e.g 1:1 key?: string; // The verse number in this chapter @@ -161,7 +161,7 @@ export interface Verse { // The basic translation of the verse translatedText?: string; // The alternative translations for the verse - translations?: Translation[]; + translations?: Interpretation[]; // The phonetic transliteration from arabic transliteration?: string; // The individual words within the verse (Ayah) diff --git a/clients/ts/sunnah/index.ts b/clients/ts/sunnah/index.ts deleted file mode 100755 index cb83307..0000000 --- a/clients/ts/sunnah/index.ts +++ /dev/null @@ -1,183 +0,0 @@ -import * as m3o from "@m3o/m3o-node"; - -export class SunnahService { - private client: m3o.Client; - - constructor(token: string) { - this.client = new m3o.Client({ token: token }); - } - // Get a list of books from within a collection. A book can contain many chapters - // each with its own hadiths. - books(request: BooksRequest): Promise { - return this.client.call( - "sunnah", - "Books", - request - ) as Promise; - } - // Get all the chapters of a given book within a collection. - chapters(request: ChaptersRequest): Promise { - return this.client.call( - "sunnah", - "Chapters", - request - ) as Promise; - } - // Get a list of available collections. A collection is - // a compilation of hadiths collected and written by an author. - collections(request: CollectionsRequest): Promise { - return this.client.call( - "sunnah", - "Collections", - request - ) as Promise; - } - // Hadiths returns a list of hadiths and their corresponding text for a - // given book within a collection. - hadiths(request: HadithsRequest): Promise { - return this.client.call( - "sunnah", - "Hadiths", - request - ) as Promise; - } -} - -export interface Book { - // arabic name of the book - arabicName?: string; - // number of hadiths in the book - hadiths?: number; - // number of the book e.g 1 - id?: number; - // name of the book - name?: string; -} - -export interface BooksRequest { - // Name of the collection - collection?: string; - // Limit the number of books returned - limit?: number; - // The page in the pagination - page?: number; -} - -export interface BooksResponse { - // A list of books - books?: Book[]; - // Name of the collection - collection?: string; - // The limit specified - limit?: number; - // The page requested - page?: number; - // The total overall books - total?: number; -} - -export interface Chapter { - // arabic title - arabicTitle?: string; - // the book number - book?: number; - // the chapter id e.g 1 - id?: number; - // the chapter key e.g 1.00 - key?: string; - // title of the chapter - title?: string; -} - -export interface ChaptersRequest { - // number of the book - book?: number; - // name of the collection - collection?: string; - // Limit the number of chapters returned - limit?: number; - // The page in the pagination - page?: number; -} - -export interface ChaptersResponse { - // number of the book - book?: number; - // The chapters of the book - chapters?: Chapter[]; - // name of the collection - collection?: string; - // Limit the number of chapters returned - limit?: number; - // The page in the pagination - page?: number; - // Total chapters in the book - total?: number; -} - -export interface Collection { - // Arabic title if available - arabicTitle?: string; - // Total hadiths in the collection - hadiths?: number; - // Name of the collection e.g bukhari - name?: string; - // An introduction explaining the collection - summary?: string; - // Title of the collection e.g Sahih al-Bukhari - title?: string; -} - -export interface CollectionsRequest { - // Number of collections to limit to - limit?: number; - // The page in the pagination - page?: number; -} - -export interface CollectionsResponse { - collections?: Collection[]; -} - -export interface Hadith { - // the arabic chapter title - arabicChapterTitle?: string; - // the arabic text - arabicText?: string; - // the chapter id - chapter?: number; - // the chapter key - chapterKey?: string; - // the chapter title - chapterTitle?: string; - // hadith id - id?: number; - // hadith text - text?: string; -} - -export interface HadithsRequest { - // number of the book - book?: number; - // name of the collection - collection?: string; - // Limit the number of hadiths - limit?: number; - // The page in the pagination - page?: number; -} - -export interface HadithsResponse { - // number of the book - book?: number; - // name of the collection - collection?: string; - // The hadiths of the book - hadiths?: Hadith[]; - // Limit the number of hadiths returned - limit?: number; - // The page in the pagination - page?: number; - // Total hadiths in the book - total?: number; -} diff --git a/cmd/clients/main.go b/cmd/clients/main.go index 042f7f9..c142cc8 100644 --- a/cmd/clients/main.go +++ b/cmd/clients/main.go @@ -264,7 +264,9 @@ func main() { fmt.Println(string(exam), err) os.Exit(1) } - + if len(service.Spec.Paths) != len(m) { + fmt.Printf("Service has %v endpoints, but only %v examples\n", len(service.Spec.Paths), len(m)) + } for endpoint, examples := range m { for _, example := range examples { title := regexp.MustCompile("[^a-zA-Z0-9]+").ReplaceAllString(strcase.LowerCamelCase(strings.Replace(example.Title, " ", "_", -1)), "") diff --git a/crypto/examples.json b/crypto/examples.json index 2c145e6..0dda205 100644 --- a/crypto/examples.json +++ b/crypto/examples.json @@ -1,45 +1,76 @@ - { - "price": [{ - "title": "Get cryptocurrency price", - "description": "Returns the last traded price of a currency", - "request": { - "symbol": "BTCUSD" - }, - "response": { - "symbol": "BTCUSD", - "price": 34682.74 - } - }], - "quote": [{ - "title": "Get a cryptocurrency quote", - "description": "Returns the last quote for a currency including bid and ask prices", - "request": { - "symbol": "BTCUSD" - }, - "response": { - "symbol": "BTCUSD", - "ask_price": 34679.87, - "bid_price": 34679.86, - "ask_size": 0.595412, - "bid_size": 0.122235, - "timestamp": "2021-06-20T17:25:50.772Z" - } - }], - "history": [{ - "title": "Get previous close", - "description": "Returns the history for the previous close", - "request": { - "symbol": "BTCUSD" - }, - "response": { - "symbol": "btcusd", - "open": 35483.72, - "close": 34470.8, - "high": 35922, - "low": 33336, - "volume": 66202.264956, - "date": "2021-06-20" - } - }] + "news": [ + { + "title": "Get cryptocurrency news", + "request": { + "symbol": "BTCUSD" + }, + "response": { + "articles": [ + { + "title": "$80 Billion Brazilian Investment Bank Launches Bitcoin and Crypto Trading App", + "description": "Brazilian investment bank BTG Pactual becomes first large financial institution in Brazil to enable customers to make direct investments in Bitcoin.", + "url": "https://bitcoinmagazine.com/culture/80-billion-brazilian-investment-bank-launches-bitcoin-and-crypto-trading-app", + "date": "2021-09-21T13:13:01+00:00", + "source": "Bitcoin Magazine" + }, + { + "title": "Bitcoin at $40,000, Ethereum at $2,800 Very Important Levels to Watch Now: Mike Novogratz", + "description": "Head of Galaxy Digital Mike Novogratz explains what levels are important for BTC and Ether now that the Chinese real-estate monster crisis is hitting the crypto market", + "url": "https://u.today/bitcoin-at-40000-ethereum-at-2800-very-important-levels-to-watch-now-mike-novogratz", + "date": "2021-09-21T12:51:00+00:00", + "source": "UToday" + } + ] + } + } + ], + "price": [ + { + "title": "Get cryptocurrency price", + "description": "Returns the last traded price of a currency", + "request": { + "symbol": "BTCUSD" + }, + "response": { + "symbol": "BTCUSD", + "price": 34682.74 + } + } + ], + "quote": [ + { + "title": "Get a cryptocurrency quote", + "description": "Returns the last quote for a currency including bid and ask prices", + "request": { + "symbol": "BTCUSD" + }, + "response": { + "symbol": "BTCUSD", + "ask_price": 34679.87, + "bid_price": 34679.86, + "ask_size": 0.595412, + "bid_size": 0.122235, + "timestamp": "2021-06-20T17:25:50.772Z" + } + } + ], + "history": [ + { + "title": "Get previous close", + "description": "Returns the history for the previous close", + "request": { + "symbol": "BTCUSD" + }, + "response": { + "symbol": "btcusd", + "open": 35483.72, + "close": 34470.8, + "high": 35922, + "low": 33336, + "volume": 66202.264956, + "date": "2021-06-20" + } + } + ] } diff --git a/currency/examples.json b/currency/examples.json index d86fe71..7c0698e 100644 --- a/currency/examples.json +++ b/currency/examples.json @@ -1,86 +1,159 @@ - { - "codes": [{ - "title": "Get supported codes", - "description": "Returns the supported currency codes (example response)", - "run_check": true, - "request": {}, - "response": { - "codes": [ - { - "name": "AED", - "currency": "UAE Dirham" - }, - { - "name": "AFN", - "currency": "Afghan Afghani" - }, - { - "name": "ALL", - "currency": "Albanian Lek" - }, - { - "name": "AMD", - "currency": "Armenian Dram" - }, - { - "name": "ANG", - "currency": "Netherlands Antillian Guilder" - } - ] + "codes": [ + { + "title": "Get supported codes", + "description": "Returns the supported currency codes (example response)", + "run_check": true, + "request": {}, + "response": { + "codes": [ + { + "name": "AED", + "currency": "UAE Dirham" + }, + { + "name": "AFN", + "currency": "Afghan Afghani" + }, + { + "name": "ALL", + "currency": "Albanian Lek" + }, + { + "name": "AMD", + "currency": "Armenian Dram" + }, + { + "name": "ANG", + "currency": "Netherlands Antillian Guilder" + } + ] + } + } + ], + "rates": [ + { + "title": "Get rates for USD", + "description": "Returns the rates for USD (sample response)", + "run_check": true, + "request": { + "code": "USD" + }, + "response": { + "code": "usd", + "rates": { + "AED": 3.6725, + "AFN": 79.0514, + "ALL": 101.6054, + "AMD": 515.68, + "ANG": 1.79, + "AOA": 646.8737, + "ARS": 95.3433, + "AUD": 1.2998, + "AWG": 1.79, + "AZN": 1.7013 } - }], - "rates": [{ - "title": "Get rates for USD", - "description": "Returns the rates for USD (sample response)", - "run_check": true, - "request": { - "code": "USD" - }, - "response": { - "code": "usd", - "rates": { - "AED": 3.6725, - "AFN": 79.0514, - "ALL": 101.6054, - "AMD": 515.68, - "ANG": 1.79, - "AOA": 646.8737, - "ARS": 95.3433, - "AUD": 1.2998, - "AWG": 1.79, - "AZN": 1.7013 - } + } + } + ], + "convert": [ + { + "title": "Convert USD to GBP", + "description": "Convert from USD to GBP", + "run_check": true, + "request": { + "from": "USD", + "to": "GBP" + }, + "response": { + "from": "USD", + "to": "GBP", + "rate": 0.7104 + } + }, + { + "title": "Convert $10 USD to GBP", + "description": "Convert $10 from USD to GBP", + "run_check": true, + "request": { + "from": "USD", + "to": "GBP", + "amount": 10.0 + }, + "response": { + "from": "USD", + "to": "GBP", + "rate": 0.7104, + "amount": 7.104 + } + } + ], + "history": [ + { + "title": "Historic rates for a currency", + "description": "Date is in format YYYY-MM-DD", + "run_check": false, + "request": { + "code": "USD", + "date": "2021-05-30" + }, + "response": { + "code": "USD", + "date": "2020-05-30", + "rates": { + "AED": 3.672, + "ARS": 68.3238, + "AUD": 1.5017, + "BGN": 1.7573, + "BRL": 5.372, + "BSD": 1, + "CAD": 1.3758, + "CHF": 0.9625, + "CLP": 810.6932, + "CNY": 7.1408, + "COP": 3711.2273, + "CZK": 24.2592, + "DKK": 6.7076, + "DOP": 55.3539, + "EGP": 15.8108, + "EUR": 0.9004, + "FJD": 2.2202, + "GBP": 0.8108, + "GTQ": 7.6924, + "HKD": 7.753, + "HRK": 6.8175, + "HUF": 313.7167, + "IDR": 14536.6684, + "ILS": 3.5082, + "INR": 75.5508, + "ISK": 135.7104, + "JPY": 107.4223, + "KRW": 1236.3642, + "KZT": 412.3586, + "MXN": 22.1514, + "MYR": 4.3465, + "NOK": 9.7236, + "NZD": 1.61, + "PAB": 1, + "PEN": 3.4361, + "PHP": 50.5076, + "PKR": 160.0922, + "PLN": 4.0015, + "PYG": 6803.9167, + "RON": 4.361, + "RUB": 70.561, + "SAR": 3.7548, + "SEK": 9.4421, + "SGD": 1.4125, + "THB": 31.8255, + "TRY": 6.8228, + "TWD": 30.0096, + "UAH": 26.8391, + "USD": 1, + "UYU": 43.0401, + "ZAR": 17.5029 } - }], - "convert": [{ - "title": "Convert USD to GBP", - "description": "Convert from USD to GBP", - "run_check": true, - "request": { - "from": "USD", - "to": "GBP" - }, - "response": { - "from": "USD", - "to": "GBP", - "rate": 0.7104 - } - }, - { - "title": "Convert $10 USD to GBP", - "description": "Convert $10 from USD to GBP", - "run_check": true, - "request": { - "from": "USD", - "to": "GBP", - "amount": 10.0 - }, - "response": { - "from": "USD", - "to": "GBP", - "rate": 0.7104, - "amount": 7.104 - } - }] + } + } + ] } diff --git a/examples/sunnah/books/curl/getTheBooksWithinACollection.sh b/examples/crypto/news/curl/getCryptocurrencyNews.sh similarity index 56% rename from examples/sunnah/books/curl/getTheBooksWithinACollection.sh rename to examples/crypto/news/curl/getCryptocurrencyNews.sh index 0262af1..1aa2db3 100755 --- a/examples/sunnah/books/curl/getTheBooksWithinACollection.sh +++ b/examples/crypto/news/curl/getCryptocurrencyNews.sh @@ -1,6 +1,6 @@ -curl "https://api.m3o.com/v1/sunnah/Books" \ +curl "https://api.m3o.com/v1/crypto/News" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $MICRO_API_TOKEN" \ -d '{ - "collection": "bukhari" + "symbol": "BTCUSD" }' \ No newline at end of file diff --git a/examples/crypto/news/go/getCryptocurrencyNews.go b/examples/crypto/news/go/getCryptocurrencyNews.go new file mode 100755 index 0000000..3595cd8 --- /dev/null +++ b/examples/crypto/news/go/getCryptocurrencyNews.go @@ -0,0 +1,16 @@ +package example + +import ( + "fmt" + "github.com/micro/services/clients/go/crypto" + "os" +) + +// Get news related to a currency +func GetCryptocurrencyNews() { + cryptoService := crypto.NewCryptoService(os.Getenv("MICRO_API_TOKEN")) + rsp, err := cryptoService.News(&crypto.NewsRequest{ + Symbol: "BTCUSD", + }) + fmt.Println(rsp, err) +} diff --git a/examples/crypto/news/node/getCryptocurrencyNews.js b/examples/crypto/news/node/getCryptocurrencyNews.js new file mode 100755 index 0000000..c61fcf7 --- /dev/null +++ b/examples/crypto/news/node/getCryptocurrencyNews.js @@ -0,0 +1,12 @@ +import * as crypto from "m3o/crypto"; + +// Get news related to a currency +async function GetCryptocurrencyNews() { + let cryptoService = new crypto.CryptoService(process.env.MICRO_API_TOKEN); + let rsp = await cryptoService.news({ + symbol: "BTCUSD", + }); + console.log(rsp); +} + +await GetCryptocurrencyNews(); diff --git a/examples/currency/history/curl/historicRatesForACurrency.sh b/examples/currency/history/curl/historicRatesForACurrency.sh new file mode 100755 index 0000000..7d4c6c3 --- /dev/null +++ b/examples/currency/history/curl/historicRatesForACurrency.sh @@ -0,0 +1,7 @@ +curl "https://api.m3o.com/v1/currency/History" \ +-H "Content-Type: application/json" \ +-H "Authorization: Bearer $MICRO_API_TOKEN" \ +-d '{ + "code": "USD", + "date": "2021-05-30" +}' \ No newline at end of file diff --git a/examples/currency/history/go/historicRatesForACurrency.go b/examples/currency/history/go/historicRatesForACurrency.go new file mode 100755 index 0000000..70c419d --- /dev/null +++ b/examples/currency/history/go/historicRatesForACurrency.go @@ -0,0 +1,17 @@ +package example + +import ( + "fmt" + "github.com/micro/services/clients/go/currency" + "os" +) + +// Returns the historic rates for a currency on a given date +func HistoricRatesForAcurrency() { + currencyService := currency.NewCurrencyService(os.Getenv("MICRO_API_TOKEN")) + rsp, err := currencyService.History(¤cy.HistoryRequest{ + Code: "USD", + Date: "2021-05-30", + }) + fmt.Println(rsp, err) +} diff --git a/examples/currency/history/node/historicRatesForACurrency.js b/examples/currency/history/node/historicRatesForACurrency.js new file mode 100755 index 0000000..9fbfe1d --- /dev/null +++ b/examples/currency/history/node/historicRatesForACurrency.js @@ -0,0 +1,15 @@ +import * as currency from "m3o/currency"; + +// Returns the historic rates for a currency on a given date +async function HistoricRatesForAcurrency() { + let currencyService = new currency.CurrencyService( + process.env.MICRO_API_TOKEN + ); + let rsp = await currencyService.history({ + code: "USD", + date: "2021-05-30", + }); + console.log(rsp); +} + +await HistoricRatesForAcurrency(); diff --git a/examples/sunnah/hadiths/curl/listTheHadithsInABook.sh b/examples/helloworld/stream/curl/streamsAreCurrentlyTemporarilyNotSupportedInClients.sh similarity index 51% rename from examples/sunnah/hadiths/curl/listTheHadithsInABook.sh rename to examples/helloworld/stream/curl/streamsAreCurrentlyTemporarilyNotSupportedInClients.sh index d9ad1f1..ffa10ed 100755 --- a/examples/sunnah/hadiths/curl/listTheHadithsInABook.sh +++ b/examples/helloworld/stream/curl/streamsAreCurrentlyTemporarilyNotSupportedInClients.sh @@ -1,7 +1,6 @@ -curl "https://api.m3o.com/v1/sunnah/Hadiths" \ +curl "https://api.m3o.com/v1/helloworld/Stream" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $MICRO_API_TOKEN" \ -d '{ - "book": 1, - "collection": "bukhari" + "name": "not supported" }' \ No newline at end of file diff --git a/examples/helloworld/stream/go/streamsAreCurrentlyTemporarilyNotSupportedInClients.go b/examples/helloworld/stream/go/streamsAreCurrentlyTemporarilyNotSupportedInClients.go new file mode 100755 index 0000000..62541f5 --- /dev/null +++ b/examples/helloworld/stream/go/streamsAreCurrentlyTemporarilyNotSupportedInClients.go @@ -0,0 +1,16 @@ +package example + +import ( + "fmt" + "github.com/micro/services/clients/go/helloworld" + "os" +) + +// Stream returns a stream of "Hello $name" responses +func StreamsAreCurrentlyTemporarilyNotSupportedInClients() { + helloworldService := helloworld.NewHelloworldService(os.Getenv("MICRO_API_TOKEN")) + rsp, err := helloworldService.Stream(&helloworld.StreamRequest{ + Name: "not supported", + }) + fmt.Println(rsp, err) +} diff --git a/examples/helloworld/stream/node/streamsAreCurrentlyTemporarilyNotSupportedInClients.js b/examples/helloworld/stream/node/streamsAreCurrentlyTemporarilyNotSupportedInClients.js new file mode 100755 index 0000000..ae6c90e --- /dev/null +++ b/examples/helloworld/stream/node/streamsAreCurrentlyTemporarilyNotSupportedInClients.js @@ -0,0 +1,14 @@ +import * as helloworld from "m3o/helloworld"; + +// Stream returns a stream of "Hello $name" responses +async function StreamsAreCurrentlyTemporarilyNotSupportedInClients() { + let helloworldService = new helloworld.HelloworldService( + process.env.MICRO_API_TOKEN + ); + let rsp = await helloworldService.stream({ + name: "not supported", + }); + console.log(rsp); +} + +await StreamsAreCurrentlyTemporarilyNotSupportedInClients(); diff --git a/examples/sunnah/collections/curl/listAvailableCollections.sh b/examples/id/types/curl/listTheTypesOfIdsAvailable.sh similarity index 64% rename from examples/sunnah/collections/curl/listAvailableCollections.sh rename to examples/id/types/curl/listTheTypesOfIdsAvailable.sh index 3e14081..ffd6730 100755 --- a/examples/sunnah/collections/curl/listAvailableCollections.sh +++ b/examples/id/types/curl/listTheTypesOfIdsAvailable.sh @@ -1,4 +1,4 @@ -curl "https://api.m3o.com/v1/sunnah/Collections" \ +curl "https://api.m3o.com/v1/id/Types" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $MICRO_API_TOKEN" \ -d '{}' \ No newline at end of file diff --git a/examples/id/types/go/listTheTypesOfIdsAvailable.go b/examples/id/types/go/listTheTypesOfIdsAvailable.go new file mode 100755 index 0000000..293ae98 --- /dev/null +++ b/examples/id/types/go/listTheTypesOfIdsAvailable.go @@ -0,0 +1,14 @@ +package example + +import ( + "fmt" + "github.com/micro/services/clients/go/id" + "os" +) + +// List the types of IDs available. No query params needed. +func ListTheTypesOfIdsAvailable() { + idService := id.NewIdService(os.Getenv("MICRO_API_TOKEN")) + rsp, err := idService.Types(&id.TypesRequest{}) + fmt.Println(rsp, err) +} diff --git a/examples/id/types/node/listTheTypesOfIdsAvailable.js b/examples/id/types/node/listTheTypesOfIdsAvailable.js new file mode 100755 index 0000000..4c63027 --- /dev/null +++ b/examples/id/types/node/listTheTypesOfIdsAvailable.js @@ -0,0 +1,10 @@ +import * as id from "m3o/id"; + +// List the types of IDs available. No query params needed. +async function ListTheTypesOfIdsAvailable() { + let idService = new id.IdService(process.env.MICRO_API_TOKEN); + let rsp = await idService.types({}); + console.log(rsp); +} + +await ListTheTypesOfIdsAvailable(); diff --git a/examples/sunnah/books/go/getTheBooksWithinACollection.go b/examples/sunnah/books/go/getTheBooksWithinACollection.go deleted file mode 100755 index bba2514..0000000 --- a/examples/sunnah/books/go/getTheBooksWithinACollection.go +++ /dev/null @@ -1,17 +0,0 @@ -package example - -import ( - "fmt" - "github.com/micro/services/clients/go/sunnah" - "os" -) - -// Get a list of books from within a collection. A book can contain many chapters -// each with its own hadiths. -func GetTheBooksWithinAcollection() { - sunnahService := sunnah.NewSunnahService(os.Getenv("MICRO_API_TOKEN")) - rsp, err := sunnahService.Books(&sunnah.BooksRequest{ - Collection: "bukhari", - }) - fmt.Println(rsp, err) -} diff --git a/examples/sunnah/books/node/getTheBooksWithinACollection.js b/examples/sunnah/books/node/getTheBooksWithinACollection.js deleted file mode 100755 index ae4d205..0000000 --- a/examples/sunnah/books/node/getTheBooksWithinACollection.js +++ /dev/null @@ -1,13 +0,0 @@ -import * as sunnah from "m3o/sunnah"; - -// Get a list of books from within a collection. A book can contain many chapters -// each with its own hadiths. -async function GetTheBooksWithinAcollection() { - let sunnahService = new sunnah.SunnahService(process.env.MICRO_API_TOKEN); - let rsp = await sunnahService.books({ - collection: "bukhari", - }); - console.log(rsp); -} - -await GetTheBooksWithinAcollection(); diff --git a/examples/sunnah/chapters/go/listTheChaptersInABook.go b/examples/sunnah/chapters/go/listTheChaptersInABook.go deleted file mode 100755 index 18f78f1..0000000 --- a/examples/sunnah/chapters/go/listTheChaptersInABook.go +++ /dev/null @@ -1,17 +0,0 @@ -package example - -import ( - "fmt" - "github.com/micro/services/clients/go/sunnah" - "os" -) - -// Get all the chapters of a given book within a collection. -func ListTheChaptersInAbook() { - sunnahService := sunnah.NewSunnahService(os.Getenv("MICRO_API_TOKEN")) - rsp, err := sunnahService.Chapters(&sunnah.ChaptersRequest{ - Book: 1, - Collection: "bukhari", - }) - fmt.Println(rsp, err) -} diff --git a/examples/sunnah/chapters/node/listTheChaptersInABook.js b/examples/sunnah/chapters/node/listTheChaptersInABook.js deleted file mode 100755 index 1b0f0d1..0000000 --- a/examples/sunnah/chapters/node/listTheChaptersInABook.js +++ /dev/null @@ -1,13 +0,0 @@ -import * as sunnah from "m3o/sunnah"; - -// Get all the chapters of a given book within a collection. -async function ListTheChaptersInAbook() { - let sunnahService = new sunnah.SunnahService(process.env.MICRO_API_TOKEN); - let rsp = await sunnahService.chapters({ - book: 1, - collection: "bukhari", - }); - console.log(rsp); -} - -await ListTheChaptersInAbook(); diff --git a/examples/sunnah/collections/go/listAvailableCollections.go b/examples/sunnah/collections/go/listAvailableCollections.go deleted file mode 100755 index 5469cfe..0000000 --- a/examples/sunnah/collections/go/listAvailableCollections.go +++ /dev/null @@ -1,15 +0,0 @@ -package example - -import ( - "fmt" - "github.com/micro/services/clients/go/sunnah" - "os" -) - -// Get a list of available collections. A collection is -// a compilation of hadiths collected and written by an author. -func ListAvailableCollections() { - sunnahService := sunnah.NewSunnahService(os.Getenv("MICRO_API_TOKEN")) - rsp, err := sunnahService.Collections(&sunnah.CollectionsRequest{}) - fmt.Println(rsp, err) -} diff --git a/examples/sunnah/collections/node/listAvailableCollections.js b/examples/sunnah/collections/node/listAvailableCollections.js deleted file mode 100755 index 4c4641a..0000000 --- a/examples/sunnah/collections/node/listAvailableCollections.js +++ /dev/null @@ -1,11 +0,0 @@ -import * as sunnah from "m3o/sunnah"; - -// Get a list of available collections. A collection is -// a compilation of hadiths collected and written by an author. -async function ListAvailableCollections() { - let sunnahService = new sunnah.SunnahService(process.env.MICRO_API_TOKEN); - let rsp = await sunnahService.collections({}); - console.log(rsp); -} - -await ListAvailableCollections(); diff --git a/examples/sunnah/hadiths/go/listTheHadithsInABook.go b/examples/sunnah/hadiths/go/listTheHadithsInABook.go deleted file mode 100755 index 50f0f22..0000000 --- a/examples/sunnah/hadiths/go/listTheHadithsInABook.go +++ /dev/null @@ -1,18 +0,0 @@ -package example - -import ( - "fmt" - "github.com/micro/services/clients/go/sunnah" - "os" -) - -// Hadiths returns a list of hadiths and their corresponding text for a -// given book within a collection. -func ListTheHadithsInAbook() { - sunnahService := sunnah.NewSunnahService(os.Getenv("MICRO_API_TOKEN")) - rsp, err := sunnahService.Hadiths(&sunnah.HadithsRequest{ - Book: 1, - Collection: "bukhari", - }) - fmt.Println(rsp, err) -} diff --git a/examples/sunnah/hadiths/node/listTheHadithsInABook.js b/examples/sunnah/hadiths/node/listTheHadithsInABook.js deleted file mode 100755 index 08ab3f0..0000000 --- a/examples/sunnah/hadiths/node/listTheHadithsInABook.js +++ /dev/null @@ -1,14 +0,0 @@ -import * as sunnah from "m3o/sunnah"; - -// Hadiths returns a list of hadiths and their corresponding text for a -// given book within a collection. -async function ListTheHadithsInAbook() { - let sunnahService = new sunnah.SunnahService(process.env.MICRO_API_TOKEN); - let rsp = await sunnahService.hadiths({ - book: 1, - collection: "bukhari", - }); - console.log(rsp); -} - -await ListTheHadithsInAbook(); diff --git a/examples/sunnah/chapters/curl/listTheChaptersInABook.sh b/examples/twitter/search/curl/searchForTweets.sh similarity index 51% rename from examples/sunnah/chapters/curl/listTheChaptersInABook.sh rename to examples/twitter/search/curl/searchForTweets.sh index 0cdd3a3..d09bf76 100755 --- a/examples/sunnah/chapters/curl/listTheChaptersInABook.sh +++ b/examples/twitter/search/curl/searchForTweets.sh @@ -1,7 +1,6 @@ -curl "https://api.m3o.com/v1/sunnah/Chapters" \ +curl "https://api.m3o.com/v1/twitter/Search" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $MICRO_API_TOKEN" \ -d '{ - "book": 1, - "collection": "bukhari" + "query": "cats" }' \ No newline at end of file diff --git a/examples/twitter/search/go/searchForTweets.go b/examples/twitter/search/go/searchForTweets.go new file mode 100755 index 0000000..a53063c --- /dev/null +++ b/examples/twitter/search/go/searchForTweets.go @@ -0,0 +1,16 @@ +package example + +import ( + "fmt" + "github.com/micro/services/clients/go/twitter" + "os" +) + +// Search for tweets with a simple query +func SearchForTweets() { + twitterService := twitter.NewTwitterService(os.Getenv("MICRO_API_TOKEN")) + rsp, err := twitterService.Search(&twitter.SearchRequest{ + Query: "cats", + }) + fmt.Println(rsp, err) +} diff --git a/examples/twitter/search/node/searchForTweets.js b/examples/twitter/search/node/searchForTweets.js new file mode 100755 index 0000000..c63071e --- /dev/null +++ b/examples/twitter/search/node/searchForTweets.js @@ -0,0 +1,12 @@ +import * as twitter from "m3o/twitter"; + +// Search for tweets with a simple query +async function SearchForTweets() { + let twitterService = new twitter.TwitterService(process.env.MICRO_API_TOKEN); + let rsp = await twitterService.search({ + query: "cats", + }); + console.log(rsp); +} + +await SearchForTweets(); diff --git a/examples/twitter/trends/curl/getTheCurrentGlobalTrendingTopics.sh b/examples/twitter/trends/curl/getTheCurrentGlobalTrendingTopics.sh new file mode 100755 index 0000000..db07c19 --- /dev/null +++ b/examples/twitter/trends/curl/getTheCurrentGlobalTrendingTopics.sh @@ -0,0 +1,4 @@ +curl "https://api.m3o.com/v1/twitter/Trends" \ +-H "Content-Type: application/json" \ +-H "Authorization: Bearer $MICRO_API_TOKEN" \ +-d '{}' \ No newline at end of file diff --git a/examples/twitter/trends/go/getTheCurrentGlobalTrendingTopics.go b/examples/twitter/trends/go/getTheCurrentGlobalTrendingTopics.go new file mode 100755 index 0000000..f291576 --- /dev/null +++ b/examples/twitter/trends/go/getTheCurrentGlobalTrendingTopics.go @@ -0,0 +1,14 @@ +package example + +import ( + "fmt" + "github.com/micro/services/clients/go/twitter" + "os" +) + +// Get the current global trending topics +func GetTheCurrentGlobalTrendingTopics() { + twitterService := twitter.NewTwitterService(os.Getenv("MICRO_API_TOKEN")) + rsp, err := twitterService.Trends(&twitter.TrendsRequest{}) + fmt.Println(rsp, err) +} diff --git a/examples/twitter/trends/node/getTheCurrentGlobalTrendingTopics.js b/examples/twitter/trends/node/getTheCurrentGlobalTrendingTopics.js new file mode 100755 index 0000000..3179f87 --- /dev/null +++ b/examples/twitter/trends/node/getTheCurrentGlobalTrendingTopics.js @@ -0,0 +1,10 @@ +import * as twitter from "m3o/twitter"; + +// Get the current global trending topics +async function GetTheCurrentGlobalTrendingTopics() { + let twitterService = new twitter.TwitterService(process.env.MICRO_API_TOKEN); + let rsp = await twitterService.trends({}); + console.log(rsp); +} + +await GetTheCurrentGlobalTrendingTopics(); diff --git a/examples/twitter/user/curl/getAUsersTwitterProfile.sh b/examples/twitter/user/curl/getAUsersTwitterProfile.sh new file mode 100755 index 0000000..2827a05 --- /dev/null +++ b/examples/twitter/user/curl/getAUsersTwitterProfile.sh @@ -0,0 +1,6 @@ +curl "https://api.m3o.com/v1/twitter/User" \ +-H "Content-Type: application/json" \ +-H "Authorization: Bearer $MICRO_API_TOKEN" \ +-d '{ + "username": "crufter" +}' \ No newline at end of file diff --git a/examples/twitter/user/go/getAUsersTwitterProfile.go b/examples/twitter/user/go/getAUsersTwitterProfile.go new file mode 100755 index 0000000..68e8f13 --- /dev/null +++ b/examples/twitter/user/go/getAUsersTwitterProfile.go @@ -0,0 +1,16 @@ +package example + +import ( + "fmt" + "github.com/micro/services/clients/go/twitter" + "os" +) + +// Get a user's twitter profile +func GetAusersTwitterProfile() { + twitterService := twitter.NewTwitterService(os.Getenv("MICRO_API_TOKEN")) + rsp, err := twitterService.User(&twitter.UserRequest{ + Username: "crufter", + }) + fmt.Println(rsp, err) +} diff --git a/examples/twitter/user/node/getAUsersTwitterProfile.js b/examples/twitter/user/node/getAUsersTwitterProfile.js new file mode 100755 index 0000000..39957b4 --- /dev/null +++ b/examples/twitter/user/node/getAUsersTwitterProfile.js @@ -0,0 +1,12 @@ +import * as twitter from "m3o/twitter"; + +// Get a user's twitter profile +async function GetAusersTwitterProfile() { + let twitterService = new twitter.TwitterService(process.env.MICRO_API_TOKEN); + let rsp = await twitterService.user({ + username: "crufter", + }); + console.log(rsp); +} + +await GetAusersTwitterProfile(); diff --git a/examples/user/readSession/curl/readASessionByTheSessionId.sh b/examples/user/readSession/curl/readASessionByTheSessionId.sh new file mode 100755 index 0000000..9f8f35a --- /dev/null +++ b/examples/user/readSession/curl/readASessionByTheSessionId.sh @@ -0,0 +1,6 @@ +curl "https://api.m3o.com/v1/user/ReadSession" \ +-H "Content-Type: application/json" \ +-H "Authorization: Bearer $MICRO_API_TOKEN" \ +-d '{ + "sessionId": "sds34s34s34-s34s34-s43s43s34-s4s34s" +}' \ No newline at end of file diff --git a/examples/user/readSession/go/readASessionByTheSessionId.go b/examples/user/readSession/go/readASessionByTheSessionId.go new file mode 100755 index 0000000..ef025c6 --- /dev/null +++ b/examples/user/readSession/go/readASessionByTheSessionId.go @@ -0,0 +1,16 @@ +package example + +import ( + "fmt" + "github.com/micro/services/clients/go/user" + "os" +) + +// 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("MICRO_API_TOKEN")) + rsp, err := userService.ReadSession(&user.ReadSessionRequest{ + SessionId: "sds34s34s34-s34s34-s43s43s34-s4s34s", + }) + fmt.Println(rsp, err) +} diff --git a/examples/user/readSession/node/readASessionByTheSessionId.js b/examples/user/readSession/node/readASessionByTheSessionId.js new file mode 100755 index 0000000..7751bc9 --- /dev/null +++ b/examples/user/readSession/node/readASessionByTheSessionId.js @@ -0,0 +1,12 @@ +import * as user from "m3o/user"; + +// Read a session by the session id. In the event it has expired or is not found and error is returned. +async function ReadAsessionByTheSessionId() { + let userService = new user.UserService(process.env.MICRO_API_TOKEN); + let rsp = await userService.readSession({ + sessionId: "sds34s34s34-s34s34-s43s43s34-s4s34s", + }); + console.log(rsp); +} + +await ReadAsessionByTheSessionId(); diff --git a/examples/user/update/curl/updateAnAccount.sh b/examples/user/update/curl/updateAnAccount.sh new file mode 100755 index 0000000..f22e191 --- /dev/null +++ b/examples/user/update/curl/updateAnAccount.sh @@ -0,0 +1,7 @@ +curl "https://api.m3o.com/v1/user/Update" \ +-H "Content-Type: application/json" \ +-H "Authorization: Bearer $MICRO_API_TOKEN" \ +-d '{ + "email": "joeotheremail@example.com", + "id": "usrid-1" +}' \ No newline at end of file diff --git a/examples/user/update/go/updateAnAccount.go b/examples/user/update/go/updateAnAccount.go new file mode 100755 index 0000000..75c7740 --- /dev/null +++ b/examples/user/update/go/updateAnAccount.go @@ -0,0 +1,17 @@ +package example + +import ( + "fmt" + "github.com/micro/services/clients/go/user" + "os" +) + +// Update the account username or email +func UpdateAnAccount() { + userService := user.NewUserService(os.Getenv("MICRO_API_TOKEN")) + rsp, err := userService.Update(&user.UpdateRequest{ + Email: "joeotheremail@example.com", + Id: "usrid-1", + }) + fmt.Println(rsp, err) +} diff --git a/examples/user/update/node/updateAnAccount.js b/examples/user/update/node/updateAnAccount.js new file mode 100755 index 0000000..4844ec9 --- /dev/null +++ b/examples/user/update/node/updateAnAccount.js @@ -0,0 +1,13 @@ +import * as user from "m3o/user"; + +// Update the account username or email +async function UpdateAnAccount() { + let userService = new user.UserService(process.env.MICRO_API_TOKEN); + let rsp = await userService.update({ + email: "joeotheremail@example.com", + id: "usrid-1", + }); + console.log(rsp); +} + +await UpdateAnAccount(); diff --git a/examples/user/updatePassword/curl/updateTheAccountPassword.sh b/examples/user/updatePassword/curl/updateTheAccountPassword.sh new file mode 100755 index 0000000..bf3127b --- /dev/null +++ b/examples/user/updatePassword/curl/updateTheAccountPassword.sh @@ -0,0 +1,9 @@ +curl "https://api.m3o.com/v1/user/UpdatePassword" \ +-H "Content-Type: application/json" \ +-H "Authorization: Bearer $MICRO_API_TOKEN" \ +-d '{ + "confirmPassword": "myEvenMoreSecretPass123", + "id": "usrid-1", + "newPassword": "myEvenMoreSecretPass123", + "oldPassword": "mySecretPass123" +}' \ No newline at end of file diff --git a/examples/user/updatePassword/go/updateTheAccountPassword.go b/examples/user/updatePassword/go/updateTheAccountPassword.go new file mode 100755 index 0000000..5259e31 --- /dev/null +++ b/examples/user/updatePassword/go/updateTheAccountPassword.go @@ -0,0 +1,18 @@ +package example + +import ( + "fmt" + "github.com/micro/services/clients/go/user" + "os" +) + +// Update the account password +func UpdateTheAccountPassword() { + userService := user.NewUserService(os.Getenv("MICRO_API_TOKEN")) + rsp, err := userService.UpdatePassword(&user.UpdatePasswordRequest{ + ConfirmPassword: "myEvenMoreSecretPass123", + NewPassword: "myEvenMoreSecretPass123", + OldPassword: "mySecretPass123", + }) + fmt.Println(rsp, err) +} diff --git a/examples/user/updatePassword/node/updateTheAccountPassword.js b/examples/user/updatePassword/node/updateTheAccountPassword.js new file mode 100755 index 0000000..1f012d3 --- /dev/null +++ b/examples/user/updatePassword/node/updateTheAccountPassword.js @@ -0,0 +1,15 @@ +import * as user from "m3o/user"; + +// Update the account password +async function UpdateTheAccountPassword() { + let userService = new user.UserService(process.env.MICRO_API_TOKEN); + let rsp = await userService.updatePassword({ + confirmPassword: "myEvenMoreSecretPass123", + id: "usrid-1", + newPassword: "myEvenMoreSecretPass123", + oldPassword: "mySecretPass123", + }); + console.log(rsp); +} + +await UpdateTheAccountPassword(); diff --git a/examples/user/verifyEmail/curl/verifyEmail.sh b/examples/user/verifyEmail/curl/verifyEmail.sh new file mode 100755 index 0000000..75474aa --- /dev/null +++ b/examples/user/verifyEmail/curl/verifyEmail.sh @@ -0,0 +1,6 @@ +curl "https://api.m3o.com/v1/user/VerifyEmail" \ +-H "Content-Type: application/json" \ +-H "Authorization: Bearer $MICRO_API_TOKEN" \ +-d '{ + "token": "t2323t232t" +}' \ No newline at end of file diff --git a/examples/user/verifyEmail/go/verifyEmail.go b/examples/user/verifyEmail/go/verifyEmail.go new file mode 100755 index 0000000..1392016 --- /dev/null +++ b/examples/user/verifyEmail/go/verifyEmail.go @@ -0,0 +1,16 @@ +package example + +import ( + "fmt" + "github.com/micro/services/clients/go/user" + "os" +) + +// Verify the email address of an account from a token sent in an email to the user. +func VerifyEmail() { + userService := user.NewUserService(os.Getenv("MICRO_API_TOKEN")) + rsp, err := userService.VerifyEmail(&user.VerifyEmailRequest{ + Token: "t2323t232t", + }) + fmt.Println(rsp, err) +} diff --git a/examples/user/verifyEmail/node/verifyEmail.js b/examples/user/verifyEmail/node/verifyEmail.js new file mode 100755 index 0000000..82cc475 --- /dev/null +++ b/examples/user/verifyEmail/node/verifyEmail.js @@ -0,0 +1,12 @@ +import * as user from "m3o/user"; + +// Verify the email address of an account from a token sent in an email to the user. +async function VerifyEmail() { + let userService = new user.UserService(process.env.MICRO_API_TOKEN); + let rsp = await userService.verifyEmail({ + token: "t2323t232t", + }); + console.log(rsp); +} + +await VerifyEmail(); diff --git a/examples/weather/forecast/curl/forecaseWeather.sh b/examples/weather/forecast/curl/forecaseWeather.sh new file mode 100755 index 0000000..4fa63dd --- /dev/null +++ b/examples/weather/forecast/curl/forecaseWeather.sh @@ -0,0 +1,7 @@ +curl "https://api.m3o.com/v1/weather/Forecast" \ +-H "Content-Type: application/json" \ +-H "Authorization: Bearer $MICRO_API_TOKEN" \ +-d '{ + "days": 2, + "location": "London" +}' \ No newline at end of file diff --git a/examples/weather/forecast/go/forecaseWeather.go b/examples/weather/forecast/go/forecaseWeather.go new file mode 100755 index 0000000..326c135 --- /dev/null +++ b/examples/weather/forecast/go/forecaseWeather.go @@ -0,0 +1,17 @@ +package example + +import ( + "fmt" + "github.com/micro/services/clients/go/weather" + "os" +) + +// Get the weather forecast for the next 1-10 days +func ForecaseWeather() { + weatherService := weather.NewWeatherService(os.Getenv("MICRO_API_TOKEN")) + rsp, err := weatherService.Forecast(&weather.ForecastRequest{ + Days: 2, + Location: "London", + }) + fmt.Println(rsp, err) +} diff --git a/examples/weather/forecast/node/forecaseWeather.js b/examples/weather/forecast/node/forecaseWeather.js new file mode 100755 index 0000000..efc08b8 --- /dev/null +++ b/examples/weather/forecast/node/forecaseWeather.js @@ -0,0 +1,13 @@ +import * as weather from "m3o/weather"; + +// Get the weather forecast for the next 1-10 days +async function ForecaseWeather() { + let weatherService = new weather.WeatherService(process.env.MICRO_API_TOKEN); + let rsp = await weatherService.forecast({ + days: 2, + location: "London", + }); + console.log(rsp); +} + +await ForecaseWeather(); diff --git a/helloworld/examples.json b/helloworld/examples.json index d83a991..5da03ac 100644 --- a/helloworld/examples.json +++ b/helloworld/examples.json @@ -10,5 +10,15 @@ "response": { "message": "Hello John" } + }], + "stream": [{ + "title": "Streams are currently temporarily not supported in clients", + "run_check": true, + "request": { + "name": "not supported" + }, + "response": { + "message": "not supported" + } }] } diff --git a/id/examples.json b/id/examples.json index cf5641c..092844c 100644 --- a/id/examples.json +++ b/id/examples.json @@ -1,47 +1,58 @@ - { - "generate": [{ - "title": "Generate a unique ID", - "run_check": true, - "request": { - "type": "uuid" - }, - "response": { - "type": "uuid", - "id": "e9c427d8-cef1-48bd-ab89-59a6df29673b" - } + "generate": [ + { + "title": "Generate a unique ID", + "run_check": true, + "request": { + "type": "uuid" + }, + "response": { + "type": "uuid", + "id": "e9c427d8-cef1-48bd-ab89-59a6df29673b" + } }, { - "title": "Generate a short ID", - "run_check": true, - "request": { - "type": "shortid" - }, - "response": { - "type": "shortid", - "id": "Yivg2UeGg" - } + "title": "Generate a short ID", + "run_check": true, + "request": { + "type": "shortid" + }, + "response": { + "type": "shortid", + "id": "Yivg2UeGg" + } }, { - "title": "Generate a snowflake ID", - "run_check": true, - "request": { - "type": "snowflake" - }, - "response": { - "type": "snowflake", - "id": "1248956308049350656" - } + "title": "Generate a snowflake ID", + "run_check": true, + "request": { + "type": "snowflake" + }, + "response": { + "type": "snowflake", + "id": "1248956308049350656" + } }, { - "title": "Generate a bigflake ID", - "run_check": true, - "request": { - "type": "bigflake" - }, - "response": { - "type": "bigflake", - "id": "29941839868462377496067580952577" - } - }] + "title": "Generate a bigflake ID", + "run_check": true, + "request": { + "type": "bigflake" + }, + "response": { + "type": "bigflake", + "id": "29941839868462377496067580952577" + } + } + ], + "types": [ + { + "title": "List the types of IDs available", + "run_check": false, + "request": {}, + "response": { + "types": ["uuid", "shortid", "snowflake", "bigflake"] + } + } + ] } diff --git a/twitter/examples.json b/twitter/examples.json index b30817e..1168c9c 100644 --- a/twitter/examples.json +++ b/twitter/examples.json @@ -1,20 +1,105 @@ { - "timeline": [{ - "title": "Get a twitter timeline", - "run_check": false, - "request": { - "username": "m3oservices", - "limit": 1 - }, - "response": { - "tweets": [{ + "timeline": [ + { + "title": "Get a twitter timeline", + "run_check": false, + "request": { + "username": "m3oservices", + "limit": 1 + }, + "response": { + "tweets": [ + { "id": "1437415171966873611", - "text": "Leveraging Micro APIs through Nocode (using @bubble) https://t.co/I5Z6bx31c7 #bubble #nocode #microapis #publicapis #m3o", - "username": "m3oservices", - "created_at": "Mon Sep 13 13:57:37 +0000 2021", - "retweeted_count": "2", - "favourited_count": "2" - }] + "text": "Leveraging Micro APIs through Nocode (using @bubble) https://t.co/I5Z6bx31c7 #bubble #nocode #microapis #publicapis #m3o", + "username": "m3oservices", + "created_at": "Mon Sep 13 13:57:37 +0000 2021", + "retweeted_count": "2", + "favourited_count": "2" + } + ] + } + } + ], + "search": [ + { + "title": "Search for tweets", + "run_check": false, + "request": { + "query": "cats" + }, + "response": { + "tweets": [ + { + "id": "1440333358018424841", + "text": "RT @_Bomfha: In the world, I have cats on rainy days. 🌧️💧 https://t.co/C3n1NRRvhX", + "username": "syrupai", + "created_at": "Tue Sep 21 15:13:27 +0000 2021", + "retweeted_count": "114", + "favourited_count": "0" + }, + { + "id": "1440333343636090882", + "text": "RT @jbdefsyg: Bam said it’s been a long time since he’s not been alone for Chuseok considering his family is in Thailand. Seulgi asked what…", + "username": "Blackbeau5", + "created_at": "Tue Sep 21 15:13:23 +0000 2021", + "retweeted_count": "656", + "favourited_count": "0" + } + ] + } + } + ], + "trends": [ + { + "title": "Get the current global trending topics", + "run_check": false, + "request": {}, + "response": { + "trends": [ + { + "name": "#ios15", + "url": "http://twitter.com/search?q=%23ios15", + "tweet_volume": "255802" + }, + { + "name": "#4toinformeedomex", + "url": "http://twitter.com/search?q=%234toinformeedomex", + "tweet_volume": "231617" + } + ] + } + } + ], + "user": [ + { + "title": "Get a user's twitter profile", + "run_check": false, + "request": { + "username": "crufter" + }, + "response": { + "status": { + "id": "1093875272926023681", + "text": "@O2 It's already sorted, thanks! At least your customer support is awesome. ;)", + "username": "crufter", + "created_at": "Fri Feb 08 14:12:42 +0000 2019", + "retweeted_count": "0", + "favourited_count": "0" + }, + "profile": { + "id": "2788401541", + "name": "Janos Dobronszki", + "username": "crufter", + "description": "FOLLOWS YOU. Quietly hacking away and waiting for the AI surveillance apocalypse. Always high on sencha.", + "created_at": "Wed Sep 03 18:00:02 +0000 2014", + "location": "", + "followers": "168", + "private": false, + "verified": false, + "image_url": "http://pbs.twimg.com/profile_images/664040247211069440/IzdeZPPK_normal.jpg" } - }] + } + } + ] } diff --git a/user/examples.json b/user/examples.json index 1dc1e55..f0ffe42 100644 --- a/user/examples.json +++ b/user/examples.json @@ -12,6 +12,30 @@ "response": {} } ], + "update": [ + { + "title": "Update an account", + "run_check": false, + "request": { + "id": "usrid-1", + "email": "joeotheremail@example.com" + }, + "response": {} + } + ], + "updatePassword": [ + { + "title": "Update the account password", + "run_check": false, + "request": { + "id": "usrid-1", + "oldPassword": "mySecretPass123", + "newPassword": "myEvenMoreSecretPass123", + "confirmPassword": "myEvenMoreSecretPass123" + }, + "response": {} + } + ], "read": [ { "title": "Read an account by id", @@ -77,6 +101,16 @@ "response": {} } ], + "verifyEmail": [ + { + "title": "Verify email", + "run_check": false, + "request": { + "token": "t2323t232t" + }, + "response": {} + } + ], "delete": [ { "title": "Delete user account", @@ -114,5 +148,22 @@ }, "response": {} } + ], + "readSession": [ + { + "title": "Read a session by the session id.", + "run_check": false, + "request": { + "sessionId": "sds34s34s34-s34s34-s43s43s34-s4s34s" + }, + "response": { + "session": { + "id": "sds34s34s34-s34s34-s43s43s34-s4s34s", + "created": "1623677579", + "expires": "1623699579", + "userId": "fdf34f34f34-f34f34-f43f43f34-f4f34f" + } + } + } ] } diff --git a/weather/examples.json b/weather/examples.json index 104bb9d..f487d19 100644 --- a/weather/examples.json +++ b/weather/examples.json @@ -1,32 +1,74 @@ { - "now": [{ - "title": "Get current weather", - "description": "Get the weather forecast right at this moment", - "run_check": true, - "request": { - "location": "london" - }, - "response": { - "location": "London", - "region": "City of London, Greater London", - "country": "City of London, Greater London", - "latitude": 51.52, - "longitude": -0.11, - "timezone": "Europe/London", - "local_time": "2021-06-23 11:18", - "temp_c": 16, - "temp_f": 60.8, - "feels_like_c": 16, - "feels_like_f": 60.8, - "humidity": 48, - "cloud": 75, - "daytime": true, + "now": [ + { + "title": "Get current weather", + "description": "Get the weather forecast right at this moment", + "run_check": true, + "request": { + "location": "london" + }, + "response": { + "location": "London", + "region": "City of London, Greater London", + "country": "City of London, Greater London", + "latitude": 51.52, + "longitude": -0.11, + "timezone": "Europe/London", + "local_time": "2021-06-23 11:18", + "temp_c": 16, + "temp_f": 60.8, + "feels_like_c": 16, + "feels_like_f": 60.8, + "humidity": 48, + "cloud": 75, + "daytime": true, + "condition": "Partly cloudy", + "icon_url": "//cdn.weatherapi.com/weather/64x64/day/116.png", + "wind_mph": 4.3, + "wind_kph": 6.8, + "wind_direction": "NE", + "wind_degree": 40 + } + } + ], + "forecast": [ + { + "title": "Forecase weather", + "run_check": false, + "request": { + "days": 2, + "location": "London" + }, + "response": { + "forecast": [ + { + "date": "2021-09-21", + "max_temp_c": 21.8, + "max_temp_f": 71.2, + "min_temp_c": 13, + "min_temp_f": 55.4, + "avg_temp_c": 17.3, + "avg_temp_f": 63.1, "condition": "Partly cloudy", "icon_url": "//cdn.weatherapi.com/weather/64x64/day/116.png", - "wind_mph": 4.3, - "wind_kph": 6.8, - "wind_direction": "NE", - "wind_degree": 40 - } - }] + "sunrise": "06:45 AM", + "sunset": "07:01 PM" + }, + { + "date": "2021-09-22", + "max_temp_c": 24.1, + "max_temp_f": 75.4, + "min_temp_c": 13.4, + "min_temp_f": 56.1, + "avg_temp_c": 18.1, + "avg_temp_f": 64.6, + "condition": "Partly cloudy", + "icon_url": "//cdn.weatherapi.com/weather/64x64/day/116.png", + "sunrise": "06:47 AM", + "sunset": "06:58 PM" + } + ] + } + } + ] }