From afa1d89a23dfb78b3f0211f6c6ec011bdd89e9ac Mon Sep 17 00:00:00 2001 From: "Gerasimos (Makis) Maropoulos" Date: Wed, 25 Nov 2020 04:47:36 +0200 Subject: [PATCH] update deps --- _examples/auth/basicauth/basic/main.go | 1 + _examples/auth/basicauth/database/main.go | 5 +- _examples/database/mysql/README.md | 12 +- .../database/mysql/api/category_handler.go | 7 +- _examples/database/mysql/go.mod | 2 +- _examples/database/mysql/main.go | 4 +- .../database/mysql/migration/api_postman.json | 121 +++++++++++++++--- go.mod | 10 +- 8 files changed, 125 insertions(+), 37 deletions(-) diff --git a/_examples/auth/basicauth/basic/main.go b/_examples/auth/basicauth/basic/main.go index 12406578..36465501 100644 --- a/_examples/auth/basicauth/basic/main.go +++ b/_examples/auth/basicauth/basic/main.go @@ -69,6 +69,7 @@ func handler(ctx iris.Context) { // makes sure for that, otherwise this handler will not be executed. // OR: user := ctx.User() + // OR ctx.User().GetRaw() to get the underline value. username, _ := user.GetUsername() password, _ := user.GetPassword() ctx.Writef("%s %s:%s", ctx.Path(), username, password) diff --git a/_examples/auth/basicauth/database/main.go b/_examples/auth/basicauth/database/main.go index 5e1b218b..e8e439e9 100644 --- a/_examples/auth/basicauth/database/main.go +++ b/_examples/auth/basicauth/database/main.go @@ -1,4 +1,4 @@ -package main +package main // Look README.md import ( "context" @@ -65,7 +65,8 @@ func main() { } func index(ctx iris.Context) { - user := ctx.User() + user, _ := ctx.User().GetRaw() + // user is a type of main.User ctx.JSON(user) } diff --git a/_examples/database/mysql/README.md b/_examples/database/mysql/README.md index fce6b39c..b11b92fd 100644 --- a/_examples/database/mysql/README.md +++ b/_examples/database/mysql/README.md @@ -5,19 +5,19 @@ | Method | Path | Description | URL Parameters | Body | Auth Required | |--------|---------------------|------------------------|--------------- |----------------------------|---------------| | ANY | /token | Prints a new JWT Token | - | - | - | -| GET | /category | Lists a set of Categories | offset, limit, order | - | - | +| GET | /category | Lists a set of Categories | offset, limit, order | - | Token | | POST | /category | Creates a Category | - | JSON [Full Category](migration/api_category/create_category.json) | Token | | PUT | /category | Fully-Updates a Category | - | JSON [Full Category](migration/api_category/update_category.json) | Token | | PATCH | /category/{id} | Partially-Updates a Category | - | JSON [Partial Category](migration/api_category/update_partial_category.json) | Token | -| GET | /category/{id} | Prints a Category | - | - | - | +| GET | /category/{id} | Prints a Category | - | - | Token | | DELETE | /category/{id} | Deletes a Category | - | - | Token | -| GET | /category/{id}/products | Lists all Products from a Category | offset, limit, order | - | - | +| GET | /category/{id}/products | Lists all Products from a Category | offset, limit, order | - | Token | | POST | /category/{id}/products | (Batch) Assigns one or more Products to a Category | - | JSON [Products](migration/api_category/insert_products_category.json) | Token | -| GET | /product | Lists a set of Products (cache) | offset, limit, order | - | - | +| GET | /product | Lists a set of Products (cache) | offset, limit, order | - | Token | | POST | /product | Creates a Product | - | JSON [Full Product](migration/api_product/create_product.json) | Token | | PUT | /product | Fully-Updates a Product | - | JSON [Full Product](migration/api_product/update_product.json) | Token | | PATCH | /product/{id} | Partially-Updates a Product | - | JSON [Partial Product](migration/api_product/update_partial_product.json) | Token | -| GET | /product/{id} | Prints a Product (cache) | - | - | - | +| GET | /product/{id} | Prints a Product (cache) | - | - | Token | | DELETE | /product/{id} | Deletes a Product | - | - | Token | @@ -71,7 +71,7 @@ Download the folder. Install [Docker](https://www.docker.com/) and execute the command below ```sh -$ docker-compose up +$ docker-compose up --build ``` ### Install (Manually) diff --git a/_examples/database/mysql/api/category_handler.go b/_examples/database/mysql/api/category_handler.go index 7e8c3f84..fcddbd95 100644 --- a/_examples/database/mysql/api/category_handler.go +++ b/_examples/database/mysql/api/category_handler.go @@ -168,6 +168,11 @@ func (h *CategoryHandler) Delete(ctx iris.Context) { affected, err := h.service.DeleteByID(ctx.Request().Context(), id) if err != nil { + if err == sql.ErrNoRows { + writeEntityNotFound(ctx) + return + } + debugf("CategoryHandler.Delete(DB): %v", err) writeInternalServerError(ctx) return @@ -201,7 +206,7 @@ func (h *CategoryHandler) ListProducts(ctx iris.Context) { var products entity.Products err := h.service.List(ctx.Request().Context(), &products, opts) - if err != nil { + if err != nil && err != sql.ErrNoRows { debugf("CategoryHandler.ListProducts(DB) (table=%s where=%s=%v limit=%d offset=%d): %v", opts.Table, opts.WhereColumn, opts.WhereValue, opts.Limit, opts.Offset, err) diff --git a/_examples/database/mysql/go.mod b/_examples/database/mysql/go.mod index 123be2ac..8129ff16 100644 --- a/_examples/database/mysql/go.mod +++ b/_examples/database/mysql/go.mod @@ -4,6 +4,6 @@ go 1.15 require ( github.com/go-sql-driver/mysql v1.5.0 - github.com/kataras/iris/v12 v12.2.0-alpha.0.20201117050536-962ffd67721a + github.com/kataras/iris/v12 master github.com/mailgun/groupcache/v2 v2.1.0 ) diff --git a/_examples/database/mysql/main.go b/_examples/database/mysql/main.go index 19088767..a135a317 100644 --- a/_examples/database/mysql/main.go +++ b/_examples/database/mysql/main.go @@ -1,4 +1,4 @@ -package main +package main // Look README.md import ( "fmt" @@ -11,8 +11,6 @@ import ( "github.com/kataras/iris/v12" ) -// $ go build . - func main() { dsn := fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?parseTime=true&charset=utf8mb4&collation=utf8mb4_unicode_ci", getenv("MYSQL_USER", "user_myapp"), diff --git a/_examples/database/mysql/migration/api_postman.json b/_examples/database/mysql/migration/api_postman.json index 1ef1eba0..dfdd84d1 100644 --- a/_examples/database/mysql/migration/api_postman.json +++ b/_examples/database/mysql/migration/api_postman.json @@ -1,6 +1,6 @@ { "info": { - "_postman_id": "d3a2fdf6-9ebd-4e85-827d-385592a71fd6", + "_postman_id": "7b8b53f8-859a-425a-aa9c-28bc2a2d5ef7", "name": "myapp (api-test)", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" }, @@ -15,8 +15,9 @@ "header": [ { "key": "Authorization", - "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1ODk2MzkzNjd9.cYohwgUpe-Z7ac0LPpz4Adi5QXJmtwD1ZRpXrMUMPN0", - "type": "text" + "value": "Bearer {{token}}", + "type": "text", + "disabled": true } ], "body": { @@ -47,7 +48,14 @@ "name": "Get By ID", "request": { "method": "GET", - "header": [], + "header": [ + { + "key": "Authorization", + "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lyaXMtZ28uY29tIiwiYXVkIjpbIjljOTY5ZDg5LTBkZGYtNDlkMC1hYzcxLTI3MmU3YmY5NjkwMCJdLCJpYXQiOjE2MDYyNzE1NDYsImV4cCI6MTYwNjI3MjQ0Nn0.l2_5iqfEaC68UySTQNoDx2sfzn031tHiTdm2kZoNkWQ", + "type": "text", + "disabled": true + } + ], "url": { "raw": "http://localhost:8080/category/1", "protocol": "http", @@ -71,7 +79,14 @@ }, "request": { "method": "GET", - "header": [], + "header": [ + { + "key": "Authorization", + "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lyaXMtZ28uY29tIiwiYXVkIjpbIjljOTY5ZDg5LTBkZGYtNDlkMC1hYzcxLTI3MmU3YmY5NjkwMCJdLCJpYXQiOjE2MDYyNzE1NDYsImV4cCI6MTYwNjI3MjQ0Nn0.l2_5iqfEaC68UySTQNoDx2sfzn031tHiTdm2kZoNkWQ", + "type": "text", + "disabled": true + } + ], "body": { "mode": "raw", "raw": "" @@ -113,7 +128,8 @@ { "key": "Authorization", "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1ODk1ODU1NjN9.PtfDS1niGoZ7pV6kplI-_q1fVKLnknQ3IwcrLZhoVCU", - "type": "text" + "type": "text", + "disabled": true } ], "body": { @@ -150,7 +166,8 @@ { "key": "Authorization", "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1ODk1ODU1NjN9.PtfDS1niGoZ7pV6kplI-_q1fVKLnknQ3IwcrLZhoVCU", - "type": "text" + "type": "text", + "disabled": true } ], "url": { @@ -177,7 +194,8 @@ { "key": "Authorization", "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1ODk1ODU1NjN9.PtfDS1niGoZ7pV6kplI-_q1fVKLnknQ3IwcrLZhoVCU", - "type": "text" + "type": "text", + "disabled": true } ], "body": { @@ -185,7 +203,7 @@ "raw": "{\r\n \"title\": \"computers-technology\"\r\n}" }, "url": { - "raw": "http://localhost:8080/category/1", + "raw": "http://localhost:8080/category/3", "protocol": "http", "host": [ "localhost" @@ -204,7 +222,14 @@ "name": "List Products", "request": { "method": "GET", - "header": [], + "header": [ + { + "key": "Authorization", + "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lyaXMtZ28uY29tIiwiYXVkIjpbIjljOTY5ZDg5LTBkZGYtNDlkMC1hYzcxLTI3MmU3YmY5NjkwMCJdLCJpYXQiOjE2MDYyNzE1NDYsImV4cCI6MTYwNjI3MjQ0Nn0.l2_5iqfEaC68UySTQNoDx2sfzn031tHiTdm2kZoNkWQ", + "type": "text", + "disabled": true + } + ], "url": { "raw": "http://localhost:8080/category/1/products?offset=0&limit=30&by=price&order=asc", "protocol": "http", @@ -214,7 +239,7 @@ "port": "8080", "path": [ "category", - "3", + "1", "products" ], "query": [ @@ -248,7 +273,8 @@ { "key": "Authorization", "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1ODk1ODU1NjN9.PtfDS1niGoZ7pV6kplI-_q1fVKLnknQ3IwcrLZhoVCU", - "type": "text" + "type": "text", + "disabled": true } ], "body": { @@ -256,7 +282,7 @@ "raw": "[{\r\n \"title\": \"product-1\",\r\n \"image_url\": \"https://images.product1.png\",\r\n \"price\": 42.42,\r\n \"description\": \"a description for product-1\"\r\n}, {\r\n \"title\": \"product-2\",\r\n \"image_url\": \"https://images.product2.png\",\r\n \"price\": 32.1,\r\n \"description\": \"a description for product-2\"\r\n}, {\r\n \"title\": \"product-3\",\r\n \"image_url\": \"https://images.product3.png\",\r\n \"price\": 52321321.32,\r\n \"description\": \"a description for product-3\"\r\n}, {\r\n \"title\": \"product-4\",\r\n \"image_url\": \"https://images.product4.png\",\r\n \"price\": 77.4221,\r\n \"description\": \"a description for product-4\"\r\n}, {\r\n \"title\": \"product-5\",\r\n \"image_url\": \"https://images.product5.png\",\r\n \"price\": 55.1,\r\n \"description\": \"a description for product-5\"\r\n}, {\r\n \"title\": \"product-6\",\r\n \"image_url\": \"https://images.product6.png\",\r\n \"price\": 53.32,\r\n \"description\": \"a description for product-6\"\r\n}]" }, "url": { - "raw": "http://localhost:8080/category/1/products", + "raw": "http://localhost:8080/category/3/products", "protocol": "http", "host": [ "localhost" @@ -282,7 +308,14 @@ "name": "List", "request": { "method": "GET", - "header": [], + "header": [ + { + "key": "Authorization", + "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lyaXMtZ28uY29tIiwiYXVkIjpbIjljOTY5ZDg5LTBkZGYtNDlkMC1hYzcxLTI3MmU3YmY5NjkwMCJdLCJpYXQiOjE2MDYyNzE1NDYsImV4cCI6MTYwNjI3MjQ0Nn0.l2_5iqfEaC68UySTQNoDx2sfzn031tHiTdm2kZoNkWQ", + "type": "text", + "disabled": true + } + ], "url": { "raw": "http://localhost:8080/product?offset=0&limit=30&by=price&order=asc", "protocol": "http", @@ -320,7 +353,14 @@ "name": "Get By ID", "request": { "method": "GET", - "header": [], + "header": [ + { + "key": "Authorization", + "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lyaXMtZ28uY29tIiwiYXVkIjpbIjljOTY5ZDg5LTBkZGYtNDlkMC1hYzcxLTI3MmU3YmY5NjkwMCJdLCJpYXQiOjE2MDYyNzE1NDYsImV4cCI6MTYwNjI3MjQ0Nn0.l2_5iqfEaC68UySTQNoDx2sfzn031tHiTdm2kZoNkWQ", + "type": "text", + "disabled": true + } + ], "url": { "raw": "http://localhost:8080/product/1", "protocol": "http", @@ -345,7 +385,8 @@ { "key": "Authorization", "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1ODk1ODU1NjN9.PtfDS1niGoZ7pV6kplI-_q1fVKLnknQ3IwcrLZhoVCU", - "type": "text" + "type": "text", + "disabled": true } ], "url": { @@ -372,7 +413,8 @@ { "key": "Authorization", "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1ODk1ODU1NjN9.PtfDS1niGoZ7pV6kplI-_q1fVKLnknQ3IwcrLZhoVCU", - "type": "text" + "type": "text", + "disabled": true } ], "body": { @@ -402,7 +444,8 @@ { "key": "Authorization", "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1ODk1ODU1NjN9.PtfDS1niGoZ7pV6kplI-_q1fVKLnknQ3IwcrLZhoVCU", - "type": "text" + "type": "text", + "disabled": true } ], "body": { @@ -432,7 +475,8 @@ { "key": "Authorization", "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1ODk1ODU1NjN9.PtfDS1niGoZ7pV6kplI-_q1fVKLnknQ3IwcrLZhoVCU", - "type": "text" + "type": "text", + "disabled": true } ], "body": { @@ -480,5 +524,44 @@ "response": [] } ], + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lyaXMtZ28uY29tIiwiYXVkIjpbIjljOTY5ZDg5LTBkZGYtNDlkMC1hYzcxLTI3MmU3YmY5NjkwMCJdLCJpYXQiOjE2MDYyNzE1NDYsImV4cCI6MTYwNjI3MjQ0Nn0.l2_5iqfEaC68UySTQNoDx2sfzn031tHiTdm2kZoNkWQ", + "type": "string" + } + ] + }, + "event": [ + { + "listen": "prerequest", + "script": { + "id": "f27c3c2d-efdc-4922-b70c-258784a1d59b", + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "id": "44d94797-9cc6-4ecd-adc5-7ad5329d79c4", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "variable": [ + { + "id": "38156b9f-e623-4974-a315-51c931670f23", + "key": "token", + "value": "token" + } + ], "protocolProfileBehavior": {} } \ No newline at end of file diff --git a/go.mod b/go.mod index 6c51a433..93e5e106 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385 github.com/fatih/structs v1.1.0 github.com/flosch/pongo2/v4 v4.0.0 - github.com/go-redis/redis/v8 v8.3.3 + github.com/go-redis/redis/v8 v8.4.0 github.com/google/uuid v1.1.2 github.com/hashicorp/go-version v1.2.1 github.com/iris-contrib/httpexpect/v2 v2.0.5 @@ -32,12 +32,12 @@ require ( github.com/russross/blackfriday/v2 v2.1.0 github.com/schollz/closestmatch v2.1.0+incompatible github.com/tdewolff/minify/v2 v2.9.10 - github.com/vmihailenco/msgpack/v5 v5.0.0-rc.3 + github.com/vmihailenco/msgpack/v5 v5.0.0 github.com/yosssi/ace v0.0.5 go.etcd.io/bbolt v1.3.5 - golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897 - golang.org/x/net v0.0.0-20201027133719-8eef5233e2a1 - golang.org/x/sys v0.0.0-20201028094953-708e7fb298ac + golang.org/x/crypto v0.0.0-20201124201722-c8d3bf9c5392 + golang.org/x/net v0.0.0-20201110031124-69a78807bb2b + golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 golang.org/x/text v0.3.4 golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e google.golang.org/protobuf v1.25.0