This is an automated email from the ASF dual-hosted git repository.

smihaylov pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/incubator-milagro-dta.git


The following commit(s) were added to refs/heads/develop by this push:
     new 3655030  Add methods to set client http headers
3655030 is described below

commit 3655030073e4b9b8358f64e33fbe8955af46e846
Author: Stanislav Mihaylov <[email protected]>
AuthorDate: Sun Sep 15 17:34:14 2019 +0300

    Add methods to set client http headers
    
    Add transport.AddClientHeader to set custom http client headers
    Add transport.SetJWTAuthHeader to set a bearer auth header to the http 
client
---
 go.mod                       |  16 ++-----
 go.sum                       |  33 ++++++++++++++
 libs/transport/authorizer.go |   7 +++
 libs/transport/http.go       | 101 ++++++++++++++++++++++++++++---------------
 pkg/api/client.go            |   8 +++-
 5 files changed, 115 insertions(+), 50 deletions(-)

diff --git a/go.mod b/go.mod
index 4e49a25..5fc13eb 100644
--- a/go.mod
+++ b/go.mod
@@ -32,21 +32,13 @@ require (
        github.com/stretchr/testify v1.3.0
        github.com/tyler-smith/go-bip39 v1.0.0
        go.etcd.io/bbolt v1.3.3
-       golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 // indirect
        gopkg.in/go-playground/assert.v1 v1.2.1 // indirect
        gopkg.in/go-playground/validator.v9 v9.29.1
        gopkg.in/square/go-jose.v2 v2.3.1 // indirect
 )
 
-replace (
-       github.com/go-critic/go-critic v0.0.0-20181204210945-c3db6069acc5 => 
github.com/go-critic/go-critic v0.3.5-0.20190210220443-ee9bf5809ead
-       github.com/go-critic/go-critic v0.0.0-20181204210945-ee9bf5809ead => 
github.com/go-critic/go-critic v0.3.5-0.20190210220443-ee9bf5809ead
-       github.com/golangci/errcheck v0.0.0-20181003203344-ef45e06d44b6 => 
github.com/golangci/errcheck v0.0.0-20181223084120-ef45e06d44b6
-       github.com/golangci/go-tools v0.0.0-20180109140146-af6baa5dc196 => 
github.com/golangci/go-tools v0.0.0-20190318060251-af6baa5dc196
-       github.com/golangci/gofmt v0.0.0-20181105071733-0b8337e80d98 => 
github.com/golangci/gofmt v0.0.0-20181222123516-0b8337e80d98
-       github.com/golangci/gosec v0.0.0-20180901114220-66fb7fc33547 => 
github.com/golangci/gosec v0.0.0-20190211064107-66fb7fc33547
-       github.com/golangci/lint-1 v0.0.0-20180610141402-ee948d087217 => 
github.com/golangci/lint-1 v0.0.0-20190420132249-ee948d087217
-       mvdan.cc/unparam v0.0.0-20190124213536-fbb59629db34 => mvdan.cc/unparam 
v0.0.0-20190209190245-fbb59629db34
-)
+replace github.com/golangci/golangci-lint => github.com/golangci/golangci-lint 
v1.18.0
+
+replace github.com/go-critic/go-critic v0.0.0-20181204210945-ee9bf5809ead => 
github.com/go-critic/go-critic v0.3.5-0.20190526074819-1df300866540
 
-go 1.12
+go 1.13
diff --git a/go.sum b/go.sum
index a70d453..d5792b8 100644
--- a/go.sum
+++ b/go.sum
@@ -9,6 +9,7 @@ github.com/Kubuxu/go-os-helper v0.0.1/go.mod 
h1:N8B+I7vPCT80IcP58r50u4+gEEcsZETF
 github.com/Kubuxu/gocovmerge v0.0.0-20161216165753-7ecaa51963cd/go.mod 
h1:bqoB8kInrTeEtYAwaIXoSRqdwnjQmFhsfusnzyui6yY=
 github.com/OneOfOne/xxhash v1.2.2/go.mod 
h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
 github.com/OpenPeeDeeP/depguard v0.0.0-20180806142446-a69c782687b2/go.mod 
h1:7/4sitnI9YlQgTLLk734QlzXT8DuHVnAyztLplQjk+o=
+github.com/OpenPeeDeeP/depguard v1.0.0/go.mod 
h1:7/4sitnI9YlQgTLLk734QlzXT8DuHVnAyztLplQjk+o=
 github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod 
h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
 github.com/Stebalien/go-bitfield v0.0.0-20180330043415-076a62f9ce6e/go.mod 
h1:3oM7gXIttpYDAJXpVNnSCiUMYBLIZ6cb1t+Ip982MRo=
 github.com/Stebalien/go-bitfield v0.0.1 
h1:X3kbSSPUaJK60wV2hjOPZwmpljr6VGCqdq4cBLhbQBo=
@@ -82,8 +83,10 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod 
h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo
 github.com/go-check/check v0.0.0-20180628173108-788fd7840127 
h1:0gkP6mzaMqkmpcJYCFOLkIBwI7xFExG03bbkOkCvUPI=
 github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod 
h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98=
 github.com/go-critic/go-critic v0.3.5-0.20190210220443-ee9bf5809ead/go.mod 
h1:3MzXZKJdeXqdU9cj+rvZdNiN7SZ8V9OjybF8loZDmHU=
+github.com/go-critic/go-critic v0.3.5-0.20190526074819-1df300866540/go.mod 
h1:+sE8vrLDS2M0pZkBk0wy6+nLdKexVDrl/jBqQOTDThA=
 github.com/go-kit/kit v0.8.0 h1:Wz+5lgoB0kkuqLEc6NVmwRknTKP6dTGbSqvhZtBI/j0=
 github.com/go-kit/kit v0.8.0/go.mod 
h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
+github.com/go-kit/kit v0.9.0 h1:wDJmvq38kDhkVxi50ni9ykkdUr1PKgqKOoi01fa0Mdk=
 github.com/go-lintpack/lintpack v0.5.2/go.mod 
h1:NwZuYi2nUHho8XEIZ6SIxihrnPoqBTDqfpXvXAN0sXM=
 github.com/go-logfmt/logfmt v0.3.0/go.mod 
h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
 github.com/go-logfmt/logfmt v0.4.0 
h1:MP4Eh7ZCb31lleYCFuwm0oe4/YGak+5l1vA2NOE80nA=
@@ -98,13 +101,22 @@ github.com/go-stack/stack v1.8.0/go.mod 
h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/me
 github.com/go-test/deep v1.0.2 h1:onZX1rnHT3Wv6cqNgYyFOOlgVKJrksuCMCRvJStbMYw=
 github.com/go-test/deep v1.0.2/go.mod 
h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
 github.com/go-toolsmith/astcast v0.0.0-20181028201508-b7a89ed70af1/go.mod 
h1:TEo3Ghaj7PsZawQHxT/oBvo4HK/sl1RcuUHDKTTju+o=
+github.com/go-toolsmith/astcast v1.0.0/go.mod 
h1:mt2OdQTeAQcY4DQgPSArJjHCcOwlX+Wl/kwN+LbLGQ4=
 github.com/go-toolsmith/astcopy v0.0.0-20180903214859-79b422d080c4/go.mod 
h1:c9CPdq2AzM8oPomdlPniEfPAC6g1s7NqZzODt8y6ib8=
+github.com/go-toolsmith/astcopy v1.0.0/go.mod 
h1:vrgyG+5Bxrnz4MZWPF+pI4R8h3qKRjjyvV/DSez4WVQ=
 github.com/go-toolsmith/astequal v0.0.0-20180903214952-dcb477bfacd6/go.mod 
h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY=
+github.com/go-toolsmith/astequal v1.0.0/go.mod 
h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY=
 github.com/go-toolsmith/astfmt v0.0.0-20180903215011-8f8ee99c3086/go.mod 
h1:mP93XdblcopXwlyN4X4uodxXQhldPGZbcEJIimQHrkg=
+github.com/go-toolsmith/astfmt v1.0.0/go.mod 
h1:cnWmsOAuq4jJY6Ct5YWlVLmcmLMn1JUPuQIHCY7CJDw=
+github.com/go-toolsmith/astinfo v0.0.0-20180906194353-9809ff7efb21/go.mod 
h1:dDStQCHtmZpYOmjRP/8gHHnCCch3Zz3oEgCdZVdtweU=
 github.com/go-toolsmith/astp v0.0.0-20180903215135-0af7e3c24f30/go.mod 
h1:SV2ur98SGypH1UjcPpCatrV5hPazG6+IfNHbkDXBRrk=
+github.com/go-toolsmith/astp v1.0.0/go.mod 
h1:RSyrtpVlfTFGDYRbrjyWP1pYu//tSFcvdYrA8meBmLI=
 github.com/go-toolsmith/pkgload v0.0.0-20181119091011-e9e65178eee8/go.mod 
h1:WoMrjiy4zvdS+Bg6z9jZH82QXwkcgCBX6nOfnmdaHks=
+github.com/go-toolsmith/pkgload v1.0.0/go.mod 
h1:5eFArkbO80v7Z0kdngIxsRXRMTaX4Ilcwuh3clNrQJc=
 github.com/go-toolsmith/strparse v0.0.0-20180903215201-830b6daa1241/go.mod 
h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8=
+github.com/go-toolsmith/strparse v1.0.0/go.mod 
h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8=
 github.com/go-toolsmith/typep v0.0.0-20181030061450-d63dc7650676/go.mod 
h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU=
+github.com/go-toolsmith/typep v1.0.0/go.mod 
h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU=
 github.com/go-yaml/yaml v2.1.0+incompatible 
h1:RYi2hDdss1u4YE7GwixGzWwVo47T8UQwnTLB6vQiq+o=
 github.com/go-yaml/yaml v2.1.0+incompatible/go.mod 
h1:w2MrLa16VYP0jy6N7M5kHaCkaLENm+P+Tv+MfurjSw0=
 github.com/gobwas/glob v0.2.3/go.mod 
h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
@@ -112,6 +124,7 @@ github.com/gogo/protobuf v1.1.1/go.mod 
h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7a
 github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE=
 github.com/gogo/protobuf v1.2.1/go.mod 
h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod 
h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
+github.com/golang/mock v1.0.0/go.mod 
h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
 github.com/golang/mock v1.1.1/go.mod 
h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
 github.com/golang/mock v1.2.0 h1:28o5sBqPkBsMGnC6b4MvE2TzSr5/AT4c/1fLqVGIwlk=
 github.com/golang/mock v1.2.0/go.mod 
h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
@@ -125,13 +138,16 @@ github.com/golangci/check 
v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8ju
 github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod 
h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk=
 github.com/golangci/errcheck v0.0.0-20181223084120-ef45e06d44b6/go.mod 
h1:DbHgvLiFKX1Sh2T1w8Q/h4NAI8MHIpzCdnBUDTXU3I0=
 github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613/go.mod 
h1:SyvUF2NxV+sN8upjjeVYr5W7tyxaT1JVtvhKhOn2ii8=
+github.com/golangci/go-tools v0.0.0-20190318055746-e32c54105b7c/go.mod 
h1:unzUULGw35sjyOYjUt0jMTXqHlZPpPc6e+xfO4cd6mM=
 github.com/golangci/go-tools v0.0.0-20190318060251-af6baa5dc196/go.mod 
h1:unzUULGw35sjyOYjUt0jMTXqHlZPpPc6e+xfO4cd6mM=
 github.com/golangci/goconst v0.0.0-20180610141641-041c5f2b40f3/go.mod 
h1:JXrF4TWy4tXYn62/9x8Wm/K/dm06p8tCKwFRDPZG/1o=
 github.com/golangci/gocyclo v0.0.0-20180528134321-2becd97e67ee/go.mod 
h1:ozx7R9SIwqmqf5pRP90DhR2Oay2UIjGuKheCBCNwAYU=
 github.com/golangci/gofmt v0.0.0-20181222123516-0b8337e80d98/go.mod 
h1:9qCChq59u/eW8im404Q2WWTrnBUQKjpNYKMbU4M7EFU=
 github.com/golangci/golangci-lint v1.16.1-0.20190425135923-692dacb773b7/go.mod 
h1:kSe2pu2LlcsMT5Dr95yNKUT5RNfMkwif9MZqtOW5NEs=
+github.com/golangci/golangci-lint v1.18.0/go.mod 
h1:kaqo8l0OZKYPtjNmG4z4HrWLgcYNIJ9B9q3LWri9uLg=
 github.com/golangci/gosec v0.0.0-20190211064107-66fb7fc33547/go.mod 
h1:0qUabqiIQgfmlAmulqxyiGkkyF6/tOGSnY2cnPVwrzU=
 github.com/golangci/ineffassign v0.0.0-20180808204949-2ee8f2867dde/go.mod 
h1:e5tpTHCfVze+7EpLEozzMB3eafxo2KT5veNg1k6byQU=
+github.com/golangci/ineffassign v0.0.0-20190609212857-42439a7714cc/go.mod 
h1:e5tpTHCfVze+7EpLEozzMB3eafxo2KT5veNg1k6byQU=
 github.com/golangci/lint-1 v0.0.0-20190420132249-ee948d087217/go.mod 
h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg=
 github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod 
h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o=
 github.com/golangci/misspell v0.0.0-20180809174111-950f5d19e770/go.mod 
h1:dEbvlSfYbMQDtrpRMQU675gSDLDNa8sCPPChZ7PhiVA=
@@ -148,6 +164,7 @@ 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.0 
h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q=
 github.com/gorilla/websocket v1.4.0/go.mod 
h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
+github.com/gostaticanalysis/analysisutil 
v0.0.0-20190318220348-4088753ea4d3/go.mod 
h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE=
 github.com/gxed/go-shellwords v1.0.3/go.mod 
h1:N7paucT91ByIjmVJHhvoarjoQnmsi3Jd3vH7VqgtMxQ=
 github.com/gxed/hashland/keccakpg v0.0.1/go.mod 
h1:kRzw3HkwxFU1mpmPP8v1WyQzwdGfmKFJ6tItnhQ67kU=
 github.com/gxed/hashland/murmur3 v0.0.1/go.mod 
h1:KjXop02n4/ckmZSnY2+HKcLud/tcmvhST0bie/0lS48=
@@ -308,6 +325,10 @@ github.com/kisielk/errcheck v1.1.0/go.mod 
h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvW
 github.com/kisielk/gotool v0.0.0-20161130080628-0de1eaf82fa3/go.mod 
h1:jxZFDH7ILpTPQTk+E2s+z4CUas9lVNjIuKR4c5/zKgM=
 github.com/kisielk/gotool v1.0.0/go.mod 
h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
 github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod 
h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4=
+github.com/klauspost/compress v1.4.0/go.mod 
h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
+github.com/klauspost/compress v1.4.1/go.mod 
h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
+github.com/klauspost/cpuid v0.0.0-20180405133222-e7e905edc00e/go.mod 
h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
+github.com/klauspost/cpuid v1.2.0/go.mod 
h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
 github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod 
h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 github.com/koron/go-ssdp v0.0.0-20180514024734-4a0ed625a78b 
h1:wxtKgYHEncAU00muMD06dzLiahtGM1eouRNOzVV7tdQ=
 github.com/koron/go-ssdp v0.0.0-20180514024734-4a0ed625a78b/go.mod 
h1:5Ky9EC2xfoUKUor0Hjgi2BJhCSXJfMOFlmyYrVKGQMk=
@@ -582,6 +603,7 @@ github.com/prometheus/procfs 
v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7z
 github.com/prometheus/procfs v0.0.0-20190519111021-9935e8e0588d 
h1:Z5QMcUKnQw7ouB1wDuyZM6TL/rm+brJcNk6Ai8ut3zM=
 github.com/prometheus/procfs v0.0.0-20190519111021-9935e8e0588d/go.mod 
h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
 github.com/prometheus/tsdb v0.7.1/go.mod 
h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
+github.com/quasilyte/go-consistent v0.0.0-20190521200055-c6f3937de18c/go.mod 
h1:5STLWrekHfjyYwxBRVRXNOSewLJ3PWfDJd1VyTS21fI=
 github.com/rogpeppe/go-internal v1.1.0/go.mod 
h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
 github.com/rs/cors v1.6.0/go.mod 
h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
 github.com/russross/blackfriday v1.5.2/go.mod 
h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
@@ -624,10 +646,16 @@ github.com/stretchr/testify v1.3.0/go.mod 
h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV
 github.com/syndtr/goleveldb v1.0.0 
h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE=
 github.com/syndtr/goleveldb v1.0.0/go.mod 
h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ=
 github.com/texttheater/golang-levenshtein 
v0.0.0-20180516184445-d188e65d659e/go.mod 
h1:XDKHRm5ThF8YJjx001LtgelzsoaEcvnA7lVWz9EeX3g=
+github.com/timakin/bodyclose v0.0.0-20190721030226-87058b9bfcec/go.mod 
h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk=
 github.com/tyler-smith/go-bip39 v1.0.0 
h1:FOHg9gaQLeBBRbHE/QrTLfEiBHy5pQ/yXzf9JG5pYFM=
 github.com/tyler-smith/go-bip39 v1.0.0/go.mod 
h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs=
 github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod 
h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
+github.com/ultraware/funlen v0.0.1/go.mod 
h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA=
 github.com/urfave/cli v1.20.0/go.mod 
h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
+github.com/valyala/bytebufferpool v1.0.0/go.mod 
h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
+github.com/valyala/fasthttp v1.2.0/go.mod 
h1:4vX61m6KN+xDduDNwXrhIAVZaZaZiQ1luJk8LWSxF3s=
+github.com/valyala/quicktemplate v1.1.1/go.mod 
h1:EH+4AkTd43SvgIbQHYu59/cJyxDoOVRUAfrukLPuGJ4=
+github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod 
h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio=
 github.com/warpfork/go-wish v0.0.0-20180510122957-5ad1f5abf436 
h1:qOpVTI+BrstcjTZLm2Yz/3sOnqkzj3FQoh0g+E5s3Gc=
 github.com/warpfork/go-wish v0.0.0-20180510122957-5ad1f5abf436/go.mod 
h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw=
 github.com/whyrusleeping/base32 v0.0.0-20170828182744-c30ac30633cc 
h1:BCPnHtcboadS0DvysUuJXZ4lWVv5Bh5i7+tbIyi+ck4=
@@ -701,6 +729,7 @@ golang.org/x/net v0.0.0-20180524181706-dfa909b99c79/go.mod 
h1:mL1N/T3taQHkDXs73r
 golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod 
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod 
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod 
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20180911220305-26e67e76b6c3/go.mod 
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod 
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20181102091132-c10e9556a7bc/go.mod 
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod 
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -750,12 +779,16 @@ golang.org/x/tools 
v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGm
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod 
h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20181117154741-2ddaf7f79a09/go.mod 
h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20181205014116-22934f0fdb62/go.mod 
h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190110163146-51295c7ec13a/go.mod 
h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod 
h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190121143147-24cd39ecf745/go.mod 
h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod 
h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod 
h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190311215038-5c2858a9cfe5/go.mod 
h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190322203728-c1a832b0ad89/go.mod 
h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
 golang.org/x/tools v0.0.0-20190420000508-685fecacd0a0/go.mod 
h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
 golang.org/x/tools v0.0.0-20190521203540-521d6ed310dd/go.mod 
h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190909030654-5b82db07426d/go.mod 
h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/xerrors v0.0.0-20190212162355-a5947ffaace3/go.mod 
h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522 
h1:bhOzK9QyoD0ogCnFro1m2mz41+Ib0oOhfJnBp5MR4K4=
 golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod 
h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
diff --git a/libs/transport/authorizer.go b/libs/transport/authorizer.go
index 9484708..af4c043 100644
--- a/libs/transport/authorizer.go
+++ b/libs/transport/authorizer.go
@@ -143,6 +143,13 @@ func parseJWTToken(p string, v interface{}) error {
        return nil
 }
 
+// SetJWTAuthHeader sets the Bearer Authorization header to the http client 
context
+func SetJWTAuthHeader(ctx context.Context, jwtToken string) context.Context {
+       h := http.Header{}
+       h.Set("Authorization", "Bearer "+jwtToken)
+       return AddClientHeader(ctx, h)
+}
+
 // EmptyAuthorizer implements empty Authorizer
 type EmptyAuthorizer struct{}
 
diff --git a/libs/transport/http.go b/libs/transport/http.go
index f1590bb..14c8ab0 100644
--- a/libs/transport/http.go
+++ b/libs/transport/http.go
@@ -338,24 +338,6 @@ func parseHTTPHeaders(s *httptransport.Server) {
        )(s)
 }
 
-func encodeJSONRequest(_ context.Context, r *http.Request, request 
interface{}) error {
-       if request == nil {
-               return nil
-       }
-
-       if urlV, ok := request.(url.Values); ok {
-               r.URL.RawQuery = urlV.Encode()
-               return nil
-       }
-
-       var buf bytes.Buffer
-       if err := json.NewEncoder(&buf).Encode(request); err != nil {
-               return err
-       }
-       r.Body = ioutil.NopCloser(&buf)
-       return nil
-}
-
 func decodeJSONRequest(e HTTPEndpoint) httptransport.DecodeRequestFunc {
        return func(ctx context.Context, r *http.Request) (interface{}, error) {
                if e.Method != r.Method {
@@ -405,24 +387,6 @@ func decodeOptionsRequest(ctx context.Context, r 
*http.Request) (interface{}, er
        return nil, nil
 }
 
-func decodeJSONResponse(e HTTPEndpoint) httptransport.DecodeResponseFunc {
-       return func(_ context.Context, r *http.Response) (interface{}, error) {
-               if r.StatusCode != http.StatusOK {
-                       strBody, _ := ioutil.ReadAll(r.Body)
-                       defer r.Body.Close()
-
-                       return nil, errors.Wrapf(ErrHTTPClientError, "status: 
%v (%s)", r.Status, decodeError(string(strBody)))
-               }
-
-               if e.NewResponse == nil {
-                       return nil, nil
-               }
-               resp := e.NewResponse()
-               err := json.NewDecoder(r.Body).Decode(resp)
-               return resp, err
-       }
-}
-
 func errorEncoder(errorStatus ErrorStatus, logger *logger.Logger) 
httptransport.ErrorEncoder {
        return func(ctx context.Context, err error, w http.ResponseWriter) {
                statusCode, statusText := errorStatus.ResponseStatus(err)
@@ -497,6 +461,59 @@ type errorWrapper struct {
        Error string `json:"error"`
 }
 
+// HTTP Client
+
+// addHeader adds the content of http.Header to an existing http.Header
+// to ensure it keeps the headers that are already set
+func addHeader(dst, src http.Header) {
+       for k, v := range src {
+               for _, hv := range v {
+                       dst.Add(k, hv)
+               }
+       }
+}
+
+func encodeJSONRequest(ctx context.Context, r *http.Request, request 
interface{}) error {
+       headers, ok := ctx.Value(contextHTTPHeaders).(http.Header)
+       if ok {
+               addHeader(r.Header, headers)
+       }
+
+       if request == nil {
+               return nil
+       }
+
+       if urlV, ok := request.(url.Values); ok {
+               r.URL.RawQuery = urlV.Encode()
+               return nil
+       }
+
+       var buf bytes.Buffer
+       if err := json.NewEncoder(&buf).Encode(request); err != nil {
+               return err
+       }
+       r.Body = ioutil.NopCloser(&buf)
+       return nil
+}
+
+func decodeJSONResponse(e HTTPEndpoint) httptransport.DecodeResponseFunc {
+       return func(_ context.Context, r *http.Response) (interface{}, error) {
+               if r.StatusCode != http.StatusOK {
+                       strBody, _ := ioutil.ReadAll(r.Body)
+                       defer r.Body.Close()
+
+                       return nil, errors.Wrapf(ErrHTTPClientError, "status: 
%v (%s)", r.Status, decodeError(string(strBody)))
+               }
+
+               if e.NewResponse == nil {
+                       return nil, nil
+               }
+               resp := e.NewResponse()
+               err := json.NewDecoder(r.Body).Decode(resp)
+               return resp, err
+       }
+}
+
 // NewHTTPClient returns an HTTP handler that makes a set of endpoints
 func NewHTTPClient(instance string, endpoints HTTPEndpoints, logger 
*logger.Logger) (ClientEndpoints, error) {
        if !strings.HasPrefix(instance, "http") {
@@ -521,6 +538,18 @@ func NewHTTPClient(instance string, endpoints 
HTTPEndpoints, logger *logger.Logg
        return ce, nil
 }
 
+// AddClientHeader adds header to the http client context
+func AddClientHeader(ctx context.Context, header http.Header) context.Context {
+       currentHeader, ok := ctx.Value(contextHTTPHeaders).(http.Header)
+       if !ok {
+               currentHeader = http.Header{}
+       }
+
+       addHeader(currentHeader, header)
+
+       return context.WithValue(ctx, contextHTTPHeaders, currentHeader)
+}
+
 func copyURL(base *url.URL, path string) *url.URL {
        next := *base
        next.Path = path
diff --git a/pkg/api/client.go b/pkg/api/client.go
index 00d336d..162afc2 100644
--- a/pkg/api/client.go
+++ b/pkg/api/client.go
@@ -71,7 +71,9 @@ func NewHTTPClient(instance string, logger *logger.Logger) 
(ClientService, error
 //FulfillOrder -
 func (c MilagroClientService) FulfillOrder(req *FulfillOrderRequest) 
(*FulfillOrderResponse, error) {
        endpoint := c.endpoints["FulfillOrder"]
-       d, err := endpoint(context.Background(), req)
+       ctx := context.Background()
+
+       d, err := endpoint(ctx, req)
        if err != nil {
                return nil, err
        }
@@ -82,7 +84,9 @@ func (c MilagroClientService) FulfillOrder(req 
*FulfillOrderRequest) (*FulfillOr
 //FulfillOrderSecret -
 func (c MilagroClientService) FulfillOrderSecret(req 
*FulfillOrderSecretRequest) (*FulfillOrderSecretResponse, error) {
        endpoint := c.endpoints["FulfillOrderSecret"]
-       d, err := endpoint(context.Background(), req)
+       ctx := context.Background()
+
+       d, err := endpoint(ctx, req)
        if err != nil {
                return nil, err
        }

Reply via email to