diff --git a/address/examples.json b/address/examples.json new file mode 100644 index 0000000..7cb55aa --- /dev/null +++ b/address/examples.json @@ -0,0 +1,28 @@ +{ + "lookupPostcode": [ + { + "title": "Lookup postcode", + "run_check": false, + "request": { + "postcode": "SW1A 2AA" + }, + "response": { + "addresses": [ + { + "line_one": "Prime Minister & First Lord Of The Treasury", + "line_two": "10 Downing Street", + "summary": "", + "organisation": "Prime Minister & First Lord Of The Treasury", + "building_name": "", + "premise": "10", + "street": "Downing Street", + "locality": "", + "town": "LONDON", + "county": "London", + "postcode": "SW1A 2AA" + } + ] + } + } + ] +} diff --git a/cmd/clients/gen_test.go b/cmd/clients/gen_test.go index 8ba2575..df0b005 100644 --- a/cmd/clients/gen_test.go +++ b/cmd/clients/gen_test.go @@ -157,6 +157,138 @@ func TestTsGen(t *testing.T) { } } +func TestTimeExample(t *testing.T) { + spec := &openapi3.Swagger{} + err := json.Unmarshal([]byte(timeExample), &spec) + if err != nil { + t.Fatal(err) + } + if len(spec.Components.Schemas) == 0 { + t.Fatal("boo") + } + + fmt.Println(spec.Components.Schemas) + res := schemaToGoExample("time", "NowRequest", spec.Components.Schemas, map[string]interface{}{ + "location": "London", + }) + if strings.TrimSpace(res) != strings.TrimSpace(timeExp) { + t.Log(res, timeExp) + } + + fmt.Println(spec.Components.Schemas) + res = schemaToGoExample("time", "ZoneRequest", spec.Components.Schemas, map[string]interface{}{ + "location": "London", + }) + if strings.TrimSpace(res) != strings.TrimSpace(timeExp) { + t.Log(res, timeExp) + } +} + +const timeExample = `{ + "components": { + "schemas": { + + "NowRequest": { + "description": "Get the current time", + "properties": { + "location": { + "description": "optional location, otherwise returns UTC", + "type": "string" + } + }, + "title": "NowRequest", + "type": "object" + }, + "NowResponse": { + "properties": { + "localtime": { + "description": "the current time as HH:MM:SS", + "type": "string" + }, + "location": { + "description": "the location as Europe/London", + "type": "string" + }, + "timestamp": { + "description": "timestamp as 2006-01-02T15:04:05.999999999Z07:00", + "type": "string" + }, + "timezone": { + "description": "the timezone as BST", + "type": "string" + }, + "unix": { + "description": "the unix timestamp", + "format": "int64", + "type": "number" + } + }, + "title": "NowResponse", + "type": "object" + }, + "ZoneRequest": { + "description": "Get the timezone info for a specific location", + "properties": { + "location": { + "description": "location to lookup e.g postcode, city, ip address", + "type": "string" + } + }, + "title": "ZoneRequest", + "type": "object" + }, + "ZoneResponse": { + "properties": { + "abbreviation": { + "description": "the abbreviated code e.g BST", + "type": "string" + }, + "country": { + "description": "country of the timezone", + "type": "string" + }, + "dst": { + "description": "is daylight savings", + "type": "boolean" + }, + "latitude": { + "description": "e.g 51.42", + "format": "double", + "type": "number" + }, + "localtime": { + "description": "the local time", + "type": "string" + }, + "location": { + "description": "location requested", + "type": "string" + }, + "longitude": { + "description": "e.g -0.37", + "format": "double", + "type": "number" + }, + "region": { + "description": "region of timezone", + "type": "string" + }, + "timezone": { + "description": "the timezone e.g Europe/London", + "type": "string" + } + }, + "title": "ZoneResponse", + "type": "object" + } + + } + } +}` + +const timeExp = `Location: London, +` + func TestExample(t *testing.T) { spec := &openapi3.Swagger{} diff --git a/cmd/clients/main.go b/cmd/clients/main.go index b9fd723..07ab619 100644 --- a/cmd/clients/main.go +++ b/cmd/clients/main.go @@ -70,7 +70,14 @@ func main() { return strings.Join(parts[1:len(parts)-1], "") + "Response" }, "endpointComment": func(endpoint string, schemas map[string]*openapi3.SchemaRef) string { - comm := schemas[strings.Title(endpoint)+"Request"].Value.Description + v := schemas[strings.Title(endpoint)+"Request"] + if v == nil { + panic("can't find " + strings.Title(endpoint) + "Request") + } + if v.Value == nil { + return "" + } + comm := v.Value.Description ret := "" for _, line := range strings.Split(comm, "\n") { ret += "// " + strings.TrimSpace(line) + "\n" @@ -236,11 +243,15 @@ func main() { } exam, err := ioutil.ReadFile(filepath.Join(workDir, serviceName, "examples.json")) + if err != nil { + fmt.Println(err) + os.Exit(1) + } if err == nil { m := map[string][]example{} err = json.Unmarshal(exam, &m) if err != nil { - fmt.Println(err) + fmt.Println(string(exam), err) os.Exit(1) } @@ -565,7 +576,7 @@ func schemaToType(language, serviceName, typeName string, schemas map[string]*op } return "", false } - var fieldSeparator, objectOpen, objectClose, arrayPrefix, arrayPostfix, fieldDelimiter, stringType, numberType, boolType string + var fieldSeparator, arrayPrefix, arrayPostfix, fieldDelimiter, stringType, numberType, boolType string var int32Type, int64Type, floatType, doubleType, mapType, anyType, typePrefix string var fieldUpperCase bool switch language { @@ -574,8 +585,8 @@ func schemaToType(language, serviceName, typeName string, schemas map[string]*op fieldSeparator = "?: " arrayPrefix = "" arrayPostfix = "[]" - objectOpen = "{\n" - objectClose = "}" + //objectOpen = "{\n" + //objectClose = "}" fieldDelimiter = ";" stringType = "string" numberType = "number" @@ -592,8 +603,8 @@ func schemaToType(language, serviceName, typeName string, schemas map[string]*op fieldSeparator = " " arrayPrefix = "[]" arrayPostfix = "" - objectOpen = "{" - objectClose = "}" + //objectOpen = "{" + // objectClose = "}" fieldDelimiter = "" stringType = "string" numberType = "int64" @@ -694,7 +705,14 @@ func schemaToType(language, serviceName, typeName string, schemas map[string]*op case "boolean": ret += k + fieldSeparator + arrayPrefix + boolType + arrayPostfix + fieldDelimiter case "object": - ret += k + fieldSeparator + arrayPrefix + objectOpen + recurse(v.Value.Items.Value.Properties, level+1) + strings.Repeat(" ", level) + objectClose + arrayPostfix + fieldDelimiter + // type is a dynamic map + // if additional properties is not present, it's an any type, + // like the proto struct type + if v.Value.AdditionalProperties != nil { + ret += k + fieldSeparator + arrayPrefix + fmt.Sprintf(mapType, valueToType(v.Value.AdditionalProperties)) + arrayPostfix + fieldDelimiter + } else { + ret += k + fieldSeparator + arrayPrefix + fmt.Sprintf(mapType, anyType) + arrayPostfix + fieldDelimiter + } } } case "string": diff --git a/db/examples.json b/db/examples.json index 647f273..ade3712 100644 --- a/db/examples.json +++ b/db/examples.json @@ -52,5 +52,15 @@ "id": "1" }, "response": {} + }], + "truncate": [{ + "title": "Truncate table", + "run_check": false, + "request": { + "table": "users" + }, + "response": { + + } }] } diff --git a/email/examples.json b/email/examples.json new file mode 100644 index 0000000..7fd878b --- /dev/null +++ b/email/examples.json @@ -0,0 +1,14 @@ +{ + "send": [ + { + "title": "Send email", + "run_check": false, + "request": { + "subject": "Email verification", + "textBody": "Hi there,\n\nPlease verify your email by clicking this link: $micro_verification_link", + "from": "Awesome Dot Com" + }, + "response": {} + } + ] +} diff --git a/emoji/examples.json b/emoji/examples.json new file mode 100644 index 0000000..eb76c83 --- /dev/null +++ b/emoji/examples.json @@ -0,0 +1,52 @@ +{ + "find": [ + { + "title": "Find emoji", + "run_check": false, + "request": { + "alias": ":beer:" + }, + "response": { + "emoji": "🍺" + } + } + ], + "flag": [ + { + "title": "Get flag by country code", + "run_check": false, + "request": { + "alias": "GB" + }, + "response": { + "flag": "🇬🇧" + } + } + ], + "print": [ + { + "title": "Print text including emoji", + "run_check": false, + "request": { + "text": "let's grab a :beer:" + }, + "response": { + "text": "let's grab a 🍺" + } + } + ], + "send": [ + { + "title": "Send a text containing an emoji to anyone via SMS.", + "run_check": false, + "request": { + "from": "Alice", + "to": "+44782669123", + "message": "let's grab a :beer:" + }, + "response": { + "text": "let's grab a 🍺" + } + } + ] +} diff --git a/go.mod b/go.mod index 44c5fcb..1a9dbb6 100644 --- a/go.mod +++ b/go.mod @@ -28,8 +28,10 @@ require ( github.com/kevinburke/twilio-go v0.0.0-20210327194925-1623146bcf73 github.com/lib/pq v1.9.0 // indirect github.com/m3o/goduckgo v0.0.0-20210630141545-c760fe67b945 + github.com/m3o/m3o-go/client v0.0.0-20210421144725-8bfd7992ada3 github.com/mattheath/base62 v0.0.0-20150408093626-b80cdc656a7a // indirect github.com/mattheath/kala v0.0.0-20171219141654-d6276794bf0e + github.com/micro/micro-go v0.0.0-20210909130028-36284fcb5def github.com/micro/micro/v3 v3.4.1-0.20210910132548-f8bfb12823c0 github.com/miekg/dns v1.1.31 // indirect github.com/oschwald/geoip2-golang v1.5.0 diff --git a/go.sum b/go.sum index 78b190b..13a3ec6 100644 --- a/go.sum +++ b/go.sum @@ -213,6 +213,7 @@ github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= @@ -340,6 +341,9 @@ github.com/linode/linodego v0.10.0/go.mod h1:cziNP7pbvE3mXIPneHj0oRY8L1WtGEIKlZ8 github.com/liquidweb/liquidweb-go v1.6.0/go.mod h1:UDcVnAMDkZxpw4Y7NOHkqoeiGacVLEIG/i5J9cyixzQ= github.com/m3o/goduckgo v0.0.0-20210630141545-c760fe67b945 h1:jcOqgh+pYNSaPoPOgDaaU5t9j45JzHG3wOBLXUMBfQ0= github.com/m3o/goduckgo v0.0.0-20210630141545-c760fe67b945/go.mod h1:wQOw7PY6509VQbepPrclbyXfbQ5lpOtIoHdBKbB+OGc= +github.com/m3o/m3o-go v0.0.0-20210819131318-0fe1baa5762a h1:u1PQADkmPOkQ2Ul91g9ow24YZlIW5dbFUr5Uf/SxvoQ= +github.com/m3o/m3o-go/client v0.0.0-20210421144725-8bfd7992ada3 h1:RVt7rqWl4al36BH9OY9k7IXnnooOP0Feanu1bed6X2s= +github.com/m3o/m3o-go/client v0.0.0-20210421144725-8bfd7992ada3/go.mod h1:vmeaYrKYpgVNhny/l7iH8mXS88S7ijUiYni3gZUrCq0= github.com/mattheath/base62 v0.0.0-20150408093626-b80cdc656a7a h1:rnrxZue85aKdMU4nJ50GgKA31lCaVbft+7Xl8OXj55U= github.com/mattheath/base62 v0.0.0-20150408093626-b80cdc656a7a/go.mod h1:hJJYoBMTZIONmUEpX3+9v2057zuRM0n3n77U4Ob4wE4= github.com/mattheath/kala v0.0.0-20171219141654-d6276794bf0e h1:cj+w63ez19o7y7vunA8Q3rUIWwKEOUx7foqjnr4qbtI= @@ -366,6 +370,8 @@ github.com/mattn/go-sqlite3 v1.14.5 h1:1IdxlwTNazvbKJQSxoJ5/9ECbEeaTTyeU7sEAZ5KK github.com/mattn/go-sqlite3 v1.14.5/go.mod h1:WVKg1VTActs4Qso6iwGbiFih2UIHo0ENGwNd0Lj+XmI= github.com/mattn/go-tty v0.0.0-20180219170247-931426f7535a/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/micro/micro-go v0.0.0-20210909130028-36284fcb5def h1:mvyIKMKL1zXfPLE8THrvK7BqP2K0TdO5WymaqCRgDn4= +github.com/micro/micro-go v0.0.0-20210909130028-36284fcb5def/go.mod h1:Jlbljy5hUymPXkB5M1hCPxtY6l64dkQRA/EvazcQoQM= github.com/micro/micro/v3 v3.4.1-0.20210910132548-f8bfb12823c0 h1:TNsE0OkoYpb3DTDBsTm7vUvKoyp8zkUuUprxhIpMjoM= github.com/micro/micro/v3 v3.4.1-0.20210910132548-f8bfb12823c0/go.mod h1:bkhxUsib0oX41JNr5qlxTt2LYzzGXJWet4d/Vwvb6Wg= github.com/miekg/dns v1.1.15/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= diff --git a/image/examples.json b/image/examples.json index 4d63a9e..6a58b38 100644 --- a/image/examples.json +++ b/image/examples.json @@ -1,45 +1,88 @@ { - "resize": [{ - "title": "Base64 to hosted image", - "description": "Resize an input base64 encoded image and store the resulting resized image on our CDN.", - "run_check": true, - "request": { - "base64": "data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==", - "outputURL": true, - "name": "cat.png", - "width": 100, - "height": 100 - }, - "response": { - "url": "cdn.images.m3o.com/your-account-id/cat.png" + "resize": [ + { + "title": "Base64 to hosted image", + "description": "Resize an input base64 encoded image and store the resulting resized image on our CDN.", + "run_check": true, + "request": { + "base64": "data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==", + "outputURL": true, + "name": "cat.png", + "width": 100, + "height": 100 + }, + "response": { + "url": "cdn.images.m3o.com/your-account-id/cat.png" + } + }, + { + "title": "Base64 to base64 image", + "description": "Resize a base64 encoded image on the fly without storing it anywhere", + "run_check": true, + "request": { + "base64": "data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==", + "width": 100, + "height": 100 + }, + "response": { + "base64": "data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" + } + }, + { + "title": "Base64 to base64 image with cropping", + "description": "Resize a base64 encoded image on the fly without storing it anywhere", + "run_check": true, + "request": { + "base64": "data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==", + "width": 100, + "height": 100, + "cropOptions": { + "width": 50, + "height": 50 } - }, { - "title": "Base64 to base64 image", - "description": "Resize a base64 encoded image on the fly without storing it anywhere", - "run_check": true, - "request": { - "base64": "data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==", - "width": 100, - "height": 100 - }, - "response": { - "base64": "data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" - } - },{ - "title": "Base64 to base64 image with cropping", - "description": "Resize a base64 encoded image on the fly without storing it anywhere", - "run_check": true, - "request": { - "base64": "data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==", - "width": 100, - "height": 100, - "cropOptions":{ - "width": 50, - "height": 50 - } - }, - "response": { - "base64": "data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAx0lEQVR4nOzaMaoDMQyE4ZHj+x82vVdhwQoTkzKQEcwP5r0ihT7sbjUTeAJ4HCegXQJYfOYefOyjDuBiz3yjwJBoCIl6QZOeUjTC1Ix1IxEJXF9+0KWsf2bD4bn37OO/c/wuQ9QyRC1D1DJELUPUMkQtQ9QyRC1D1DJELUPUMkQtQ9QyRC1D1DJELUPUMkQtQ9Sa/NG94Tf3j4WBdaxudMEkn4IM2rZBA0wBrvo7aOcpj2emXvLeVt0IGm0GVXUj91mvAAAA//+V2CZl+4AKXwAAAABJRU5ErkJggg==" - } - }] + }, + "response": { + "base64": "data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAx0lEQVR4nOzaMaoDMQyE4ZHj+x82vVdhwQoTkzKQEcwP5r0ihT7sbjUTeAJ4HCegXQJYfOYefOyjDuBiz3yjwJBoCIl6QZOeUjTC1Ix1IxEJXF9+0KWsf2bD4bn37OO/c/wuQ9QyRC1D1DJELUPUMkQtQ9QyRC1D1DJELUPUMkQtQ9QyRC1D1DJELUPUMkQtQ9Sa/NG94Tf3j4WBdaxudMEkn4IM2rZBA0wBrvo7aOcpj2emXvLeVt0IGm0GVXUj91mvAAAA//+V2CZl+4AKXwAAAABJRU5ErkJggg==" + } + } + ], + "convert": [ + { + "title": "Convert a png image to a jpeg, taken from a URL and saved to a URL on Micro's CDN", + "run_check": false, + "request": { + "url": "somewebsite.com/cat.png", + "name": "cat.jpeg", + "outputURL": true + }, + "response": { + "url": "cdn.images.m3o.com/your-account-id/cat.jpeg" + } + } + ], + "upload": [ + { + "title": "Upload a base64 image to Micro's CDN", + "run_check": false, + "request": { + "base64": "data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAx0lEQVR4nOzaMaoDMQyE4ZHj+x82vVdhwQoTkzKQEcwP5r0ihT7sbjUTeAJ4HCegXQJYfOYefOyjDuBiz3yjwJBoCIl6QZOeUjTC1Ix1IxEJXF9+0KWsf2bD4bn37OO/c/wuQ9QyRC1D1DJELUPUMkQtQ9QyRC1D1DJELUPUMkQtQ9QyRC1D1DJELUPUMkQtQ9Sa/NG94Tf3j4WBdaxudMEkn4IM2rZBA0wBrvo7aOcpj2emXvLeVt0IGm0GVXUj91mvAAAA//+V2CZl+4AKXwAAAABJRU5ErkJggg==", + "name": "cat.jpeg", + "outputURL": true + }, + "response": { + "url": "cdn.images.m3o.com/your-account-id/cat.jpeg" + } + }, + { + "title": "Upload an image from a URL to Micro's CDN", + "run_check": false, + "request": { + "url": "somewebsite.com/cat.png", + "name": "cat.jpeg" + }, + "response": { + "url": "cdn.images.m3o.com/your-account-id/cat.jpeg" + } + } + ] } diff --git a/postcode/examples.json b/postcode/examples.json new file mode 100644 index 0000000..5dbcc4a --- /dev/null +++ b/postcode/examples.json @@ -0,0 +1,48 @@ +{ + "lookup": [ + { + "title": "Lookup postcode", + "run_check": false, + "request": { + "postcode": "SW1A 2AA" + }, + "response": { + "postcode": "SW1A 2AA", + "country": "England", + "region": "London", + "district": "Westminster", + "ward": "St James's", + "latitude": 51.50354, + "longitude": -0.127695 + } + } + ], + "random": [ + { + "title": "Return a random postcode and its information", + "run_check": false, + "request": {}, + "response": { + "postcode": "OX26 2HA", + "country": "England", + "region": "South East", + "district": "Cherwell", + "ward": "Bicester West", + "latitude": 51.907678, + "longitude": -1.163954 + } + } + ], + "validate": [ + { + "title": "Return a random postcode and its information", + "run_check": false, + "request": { + "postcode": "SW1A 2AA" + }, + "response": { + "valid": true + } + } + ] +} diff --git a/sms/examples.json b/sms/examples.json new file mode 100644 index 0000000..cbfc779 --- /dev/null +++ b/sms/examples.json @@ -0,0 +1,14 @@ +{ + "send": [{ + "title": "Send SMS", + "run_check": false, + "request": { + "from": "Alice", + "message": "Hi there!", + "to": "+447681129" + }, + "response": { + "status": "ok" + } + }] +} \ No newline at end of file diff --git a/thumbnail/examples.json b/thumbnail/examples.json new file mode 100644 index 0000000..abb4ab0 --- /dev/null +++ b/thumbnail/examples.json @@ -0,0 +1,16 @@ +{ + "screenshot": [ + { + "title": "Take screenshot of a URL", + "run_check": true, + "request": { + "height": 600, + "url": "https://m3o.com", + "width": 600 + }, + "response": { + "imageURL": "https://cdn.m3ocontent.com/micro/images/micro/505237c9-f254-4014-9a4c-1ec7eac0882a/ef9749ef-40b0-4ba1-a413-6136a8b0924c.png" + } + } + ] +} diff --git a/time/examples.json b/time/examples.json new file mode 100644 index 0000000..9203f0c --- /dev/null +++ b/time/examples.json @@ -0,0 +1,36 @@ +{ + "now": [ + { + "title": "Returns current time, optionally with location", + "run_check": true, + "request": {}, + "response": { + "localtime": "14:35:44", + "timestamp": "2021-09-13T14:35:44.144293723Z", + "location": "Prime Meridian", + "timezone": "UTC", + "unix": "1631543744" + } + } + ], + "zone": [ + { + "title": "Get the timezone info for a specific location", + "run_check": false, + "request": { + "location": "London" + }, + "response": { + "location": "London", + "region": "City of London, Greater London", + "country": "United Kingdom", + "latitude": 51.52, + "longitude": -0.11, + "timezone": "Europe/London", + "abbreviation": "BST", + "localtime": "2021-09-13 15:37", + "dst": true + } + } + ] +} diff --git a/user/examples.json b/user/examples.json index 7053881..1dc1e55 100644 --- a/user/examples.json +++ b/user/examples.json @@ -1,75 +1,118 @@ { - "create": [{ - "title": "Create an account", - "run_check": true, - "request": { - "id": "usrid-1", - "username": "usrname-1", - "email": "joe@example.com", - "password": "mySecretPass123" - }, - "response": { + "create": [ + { + "title": "Create an account", + "run_check": true, + "request": { + "id": "usrid-1", + "username": "usrname-1", + "email": "joe@example.com", + "password": "mySecretPass123" + }, + "response": {} + } + ], + "read": [ + { + "title": "Read an account by id", + "run_check": true, + "request": { + "id": "usrid-1" + }, + "response": { + "account": { + "id": "fdf34f34f34-f34f34-f43f43f34-f4f34f", + "username": "usrname-1", + "email": "joe@example.com", + "created": "1623677579", + "updated": "1623677579" } - }], - "read": [{ - "title": "Read an account by id", - "run_check": true, - "request": { - "id": "usrid-1" - }, - "response": { - "account": { - "id": "fdf34f34f34-f34f34-f43f43f34-f4f34f", - "username": "usrname-1", - "email": "joe@example.com", - "created": "1623677579", - "updated": "1623677579" - } + } + }, + { + "title": "Read account by username or email", + "run_check": true, + "request": { + "username": "usrname-1" + }, + "response": { + "account": { + "id": "fdf34f34f34-f34f34-f43f43f34-f4f34f", + "username": "usrname-1", + "email": "joe@example.com", + "created": "1623677579", + "updated": "1623677579" } - },{ - "title": "Read account by username or email", - "run_check": true, - "request": { - "username": "usrname-1" - }, - "response": { - "account": { - "id": "fdf34f34f34-f34f34-f43f43f34-f4f34f", - "username": "usrname-1", - "email": "joe@example.com", - "created": "1623677579", - "updated": "1623677579" - } + } + }, + { + "title": "Read account by email", + "run_check": true, + "request": { + "email": "joe@example.com" + }, + "response": { + "account": { + "id": "fdf34f34f34-f34f34-f43f43f34-f4f34f", + "username": "usrname-1", + "email": "joe@example.com", + "created": "1623677579", + "updated": "1623677579" } - },{ - - "title": "Read account by email", - "run_check": true, - "request": { - "email": "joe@example.com" - }, - "response": { - "account": { - "id": "fdf34f34f34-f34f34-f43f43f34-f4f34f", - "username": "usrname-1", - "email": "joe@example.com", - "created": "1623677579", - "updated": "1623677579" - } + } + } + ], + "sendVerificationEmail": [ + { + "title": "Send verification email", + "run_check": true, + "request": { + "email": "joe@example.com", + "subject": "Email verification", + "redirectUrl": "https://m3o.com", + "failureRedirectUrl": "https://m3o.com/verification-failed", + "textContent": "Hi there,\n\nPlease verify your email by clicking this link: $micro_verification_link", + "fromName": "Awesome Dot Com" + }, + "response": {} + } + ], + "delete": [ + { + "title": "Delete user account", + "run_check": false, + "request": { + "id": "fdf34f34f34-f34f34-f43f43f34-f4f34f" + }, + "response": {} + } + ], + "login": [ + { + "title": "Log a user in", + "run_check": false, + "request": { + "email": "joe@example.com", + "password": "mySecretPass123" + }, + "response": { + "session": { + "id": "sds34s34s34-s34s34-s43s43s34-s4s34s", + "created": "1623677579", + "expires": "1623699579", + "userId": "fdf34f34f34-f34f34-f43f43f34-f4f34f" } - }], - "sendVerificationEmail": [{ - "title": "Send verification email", - "run_check": true, - "request": { - "email": "joe@example.com", - "subject": "Email verification", - "redirectUrl": "https://m3o.com", - "failureRedirectUrl": "https://m3o.com/verification-failed", - "textContent": "Hi there,\n\nPlease verify your email by clicking this link: $micro_verification_link", - "fromName": "Awesome Dot Com" - }, - "response": { - } - }] + } + } + ], + "logout": [ + { + "title": "Log a user out", + "run_check": false, + "request": { + "sessionId": "sds34s34s34-s34s34-s43s43s34-s4s34s" + }, + "response": {} + } + ] }