diff --git a/env/client/rest.http b/env/client/rest.http index 18dfc13..dd0aa3f 100644 --- a/env/client/rest.http +++ b/env/client/rest.http @@ -1,33 +1,37 @@ ### API v1 GET http://localhost:8080/api/v1/10000000-2000-4000-8000-160000000004 -Accept: text/html +Accept: text/html Authorization: Bearer 10000000-2000-4000-8000-160000000003 +X-Request-ID: 10000000-2000-4000-8000-160000000000 ### GET http://localhost:8080/api/v1/10000000-2000-4000-8000-160000000004 -Accept: application/json +Accept: application/json Authorization: Bearer 10000000-2000-4000-8000-160000000003 +X-Request-ID: 10000000-2000-4000-8000-160000000000 ### GET http://localhost:8080/api/v1/10000000-2000-4000-8000-160000000004 -Accept: application/xml +Accept: application/xml Authorization: Bearer 10000000-2000-4000-8000-160000000003 +X-Request-ID: 10000000-2000-4000-8000-160000000000 ### GET http://localhost:8080/api/v1/10000000-2000-4000-8000-160000000004 -Accept: text/plain +Accept: text/plain Authorization: Bearer 10000000-2000-4000-8000-160000000003 +X-Request-ID: 10000000-2000-4000-8000-160000000000 ### POST http://localhost:8080/api/v1/10000000-2000-4000-8000-160000000004 -Content-Type: application/x-www-form-urlencoded -Cookie: identifier=10000000-2000-4000-8000-160000000000 -X-Request-ID: 10000000-2000-4000-8000-160000000011 +Content-Type: application/x-www-form-urlencoded +X-Passport-ID: 10000000-2000-4000-8000-160000000000 +X-Request-ID: 10000000-2000-4000-8000-160000000000 email=test@my.email diff --git a/env/docker/compose/docker-compose.base.yml b/env/docker/compose/docker-compose.base.yml index 0caabd4..11e89ef 100644 --- a/env/docker/compose/docker-compose.base.yml +++ b/env/docker/compose/docker-compose.base.yml @@ -4,14 +4,14 @@ services: db: image: postgres:10-alpine # https://hub.docker.com/_/postgres/ - env_file: .env + env_file: ../../.env migration: image: kamilsk/form-api:3.x # https://hub.docker.com/r/kamilsk/form-api/ command: [ "migrate" ] depends_on: - db - env_file: .env + env_file: ../../.env restart: on-failure service: @@ -19,14 +19,13 @@ services: command: [ "run", "--with-profiling", "--with-monitoring" ] depends_on: - migration - env_file: .env + env_file: ../../.env server: image: kamilsk/nginx:alpine # https://hub.docker.com/r/kamilsk/nginx/ depends_on: - service - env_file: .env - restart: on-failure + env_file: ../../.env volumes: - ./etc/nginx.conf:/etc/nginx/nginx.conf:ro - ./etc/service.conf:/etc/nginx/conf.d/default.conf:ro diff --git a/pkg/domain/event_http.go b/pkg/domain/event_http.go index 7db0f3d..5bcdeac 100644 --- a/pkg/domain/event_http.go +++ b/pkg/domain/event_http.go @@ -6,10 +6,12 @@ import ( ) const ( - cookieHeader = "Cookie" - optionsHeader = "X-Forma-Options" - refererHeader = "Referer" - userAgentHeader = "User-Agent" + cookieHeader = "Cookie" + identifierHeader = "X-Passport-ID" + optionsHeader = "X-Forma-Options" + refererHeader = "Referer" + requestHeader = "X-Request-ID" + userAgentHeader = "User-Agent" ) // FromCookies returns converted value from request's cookies. @@ -44,6 +46,16 @@ func (context InputContext) Header(key string) string { return http.Header(context.Headers).Get(key) } +// Identifier TODO issue#173 +func (context InputContext) Identifier() *ID { + header := context.Header(identifierHeader) + if header != "" { + id := ID(header) + return &id + } + return nil +} + // Option TODO issue#173 func (context InputContext) Option() Option { split := func(str string) []string { @@ -74,6 +86,16 @@ func (context InputContext) Referer() string { return context.Header(refererHeader) } +// Request TODO issue#173 +func (context InputContext) Request() *ID { + header := context.Header(requestHeader) + if header != "" { + id := ID(header) + return &id + } + return nil +} + // UserAgent TODO issue#173 func (context InputContext) UserAgent() string { return context.Header(userAgentHeader) diff --git a/pkg/service/service.go b/pkg/service/service.go index b7d5636..fdc3204 100644 --- a/pkg/service/service.go +++ b/pkg/service/service.go @@ -94,7 +94,7 @@ func (service *Forma) HandleInput(ctx context.Context, req v1.PostRequest) (resp SchemaID: req.ID, InputID: input.ID, TemplateID: req.InputData.Template(), - Identifier: nil, // TODO issue#171 + Identifier: req.Context.Identifier(), Context: req.Context, Code: http.StatusFound, // TODO issue#design URL: resp.URL,