Compare commits

..

49 Commits

Author SHA1 Message Date
6be01f2cb2 Merge branch 'master' into v3 2022-01-12 17:48:26 +03:00
3829766afd update for latest micro
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2022-01-12 17:47:58 +03:00
a2939066a5 Merge pull request #41 from unistack-org/dependabot/go_modules/go.unistack.org/micro/v3-3.8.13
Bump go.unistack.org/micro/v3 from 3.8.12 to 3.8.13
2021-12-28 21:16:44 +03:00
dependabot[bot]
e6718f368a Bump go.unistack.org/micro/v3 from 3.8.12 to 3.8.13
Bumps [go.unistack.org/micro/v3](https://github.com/unistack-org/micro) from 3.8.12 to 3.8.13.
- [Release notes](https://github.com/unistack-org/micro/releases)
- [Commits](https://github.com/unistack-org/micro/compare/v3.8.12...v3.8.13)

---
updated-dependencies:
- dependency-name: go.unistack.org/micro/v3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-28 18:15:08 +00:00
381f3e051e Merge pull request #40 from unistack-org/master
merge master
2021-12-16 15:38:33 +03:00
757c458f60 fix for latest micro
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-12-16 15:37:49 +03:00
a2f089f890 Merge pull request #39 from unistack-org/dependabot/go_modules/go.unistack.org/micro/v3-3.8.11
Bump go.unistack.org/micro/v3 from 3.8.10 to 3.8.11
2021-11-24 21:19:29 +03:00
dependabot[bot]
d85e3fdce2 Bump go.unistack.org/micro/v3 from 3.8.10 to 3.8.11
Bumps [go.unistack.org/micro/v3](https://github.com/unistack-org/micro) from 3.8.10 to 3.8.11.
- [Release notes](https://github.com/unistack-org/micro/releases)
- [Commits](https://github.com/unistack-org/micro/compare/v3.8.10...v3.8.11)

---
updated-dependencies:
- dependency-name: go.unistack.org/micro/v3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-24 18:17:26 +00:00
5f370d1a31 Merge pull request #38 from unistack-org/dependabot/go_modules/go.unistack.org/micro/v3-3.8.10
Bump go.unistack.org/micro/v3 from 3.8.9 to 3.8.10
2021-11-19 21:17:58 +03:00
dependabot[bot]
2b47343e07 Bump go.unistack.org/micro/v3 from 3.8.9 to 3.8.10
Bumps [go.unistack.org/micro/v3](https://github.com/unistack-org/micro) from 3.8.9 to 3.8.10.
- [Release notes](https://github.com/unistack-org/micro/releases)
- [Commits](https://github.com/unistack-org/micro/compare/v3.8.9...v3.8.10)

---
updated-dependencies:
- dependency-name: go.unistack.org/micro/v3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-19 18:16:11 +00:00
00c1d3618f Merge pull request #37 from unistack-org/dependabot/go_modules/go.unistack.org/micro/v3-3.8.9
Bump go.unistack.org/micro/v3 from 3.8.7 to 3.8.9
2021-11-18 21:23:11 +03:00
dependabot[bot]
0f80c9f7ba Bump go.unistack.org/micro/v3 from 3.8.7 to 3.8.9
Bumps [go.unistack.org/micro/v3](https://github.com/unistack-org/micro) from 3.8.7 to 3.8.9.
- [Release notes](https://github.com/unistack-org/micro/releases)
- [Commits](https://github.com/unistack-org/micro/compare/v3.8.7...v3.8.9)

---
updated-dependencies:
- dependency-name: go.unistack.org/micro/v3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-18 18:21:19 +00:00
a275ffa001 Merge pull request #36 from unistack-org/dependabot/go_modules/go.unistack.org/micro/v3-3.8.7
Bump go.unistack.org/micro/v3 from 3.8.6 to 3.8.7
2021-10-28 21:22:57 +03:00
dependabot[bot]
2800d4c78b Bump go.unistack.org/micro/v3 from 3.8.6 to 3.8.7
Bumps [go.unistack.org/micro/v3](https://github.com/unistack-org/micro) from 3.8.6 to 3.8.7.
- [Release notes](https://github.com/unistack-org/micro/releases)
- [Commits](https://github.com/unistack-org/micro/compare/v3.8.6...v3.8.7)

---
updated-dependencies:
- dependency-name: go.unistack.org/micro/v3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-28 18:21:01 +00:00
a609f15425 Merge pull request #35 from unistack-org/dependabot/go_modules/go.unistack.org/micro/v3-3.8.6
Bump go.unistack.org/micro/v3 from 3.8.5 to 3.8.6
2021-10-27 16:34:53 +03:00
dependabot[bot]
83cc922771 Bump go.unistack.org/micro/v3 from 3.8.5 to 3.8.6
Bumps [go.unistack.org/micro/v3](https://github.com/unistack-org/micro) from 3.8.5 to 3.8.6.
- [Release notes](https://github.com/unistack-org/micro/releases)
- [Commits](https://github.com/unistack-org/micro/compare/v3.8.5...v3.8.6)

---
updated-dependencies:
- dependency-name: go.unistack.org/micro/v3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-27 13:29:38 +00:00
2bba395ba3 fixup
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-10-27 16:28:34 +03:00
a360ef0e8f fixup
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-10-27 16:25:28 +03:00
5f0e4915f6 fixup
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-10-27 16:18:11 +03:00
f02efaf18c fixup
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-10-27 16:08:18 +03:00
279d111d39 fixup
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-10-27 16:07:12 +03:00
928455a651 fixup
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-10-27 15:56:36 +03:00
6df77d317d update automerge 2021-10-27 15:56:06 +03:00
e8f7fab079 Merge branch 'v3' 2021-10-27 15:49:00 +03:00
ae6f29e540 update
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-10-27 15:44:35 +03:00
de6cdb4e4d update
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-10-27 15:37:42 +03:00
0398d969d5 github automerge
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-10-27 15:37:42 +03:00
10419bc74a github automerge
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-10-27 15:37:42 +03:00
93ce60f59c fix Header and Cookie fill
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-10-27 15:37:42 +03:00
61c082cb2f github automerge
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-10-27 15:24:55 +03:00
22f1b6551a github automerge
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-10-27 15:23:26 +03:00
73b7d998c0 fix Header and Cookie fill
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-10-27 13:13:33 +03:00
4aca8e1ce0 merge v3 branch (#34)
* guard import

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>

* Bump go.unistack.org/micro/v3 from 3.8.4 to 3.8.5 (#32)

Bumps [go.unistack.org/micro/v3](https://github.com/unistack-org/micro) from 3.8.4 to 3.8.5.
- [Release notes](https://github.com/unistack-org/micro/releases)
- [Commits](https://github.com/unistack-org/micro/compare/v3.8.4...v3.8.5)

---
updated-dependencies:
- dependency-name: go.unistack.org/micro/v3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-10-26 19:01:46 +00:00
3592052ac9 guard import
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-10-25 20:35:02 +03:00
fd5479f6e7 add ability to send headers and cookies
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-10-25 19:59:37 +03:00
4fe11b430e fix path query requests with templates
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-09-23 08:58:55 +03:00
5dc57579c3 update workflow
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-09-21 21:46:43 +03:00
dependabot[bot]
f974460ff3 Bump github.com/unistack-org/micro/v3 from 3.7.0 to 3.7.1 (#28)
Bumps [github.com/unistack-org/micro/v3](https://github.com/unistack-org/micro) from 3.7.0 to 3.7.1.
- [Release notes](https://github.com/unistack-org/micro/releases)
- [Commits](https://github.com/unistack-org/micro/compare/v3.7.0...v3.7.1)

---
updated-dependencies:
- dependency-name: github.com/unistack-org/micro/v3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-09-17 08:27:55 +03:00
5c54b82aaf fixup workflow
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-09-17 08:22:44 +03:00
a5bf3e2edc update workflows
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-09-17 07:47:48 +03:00
3a2bac8723 enable automerge
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-09-16 11:03:10 +03:00
dependabot[bot]
9a72dba9df Bump github.com/unistack-org/micro/v3 from 3.6.2 to 3.7.0 (#27) 2021-09-06 15:03:55 +00:00
00e853e3ee add github stuff
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-09-06 15:23:36 +03:00
5aff0014bb add github stuff
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-09-06 10:32:59 +03:00
807b4dc41a fix for url query params in url
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-09-01 02:25:29 +03:00
a1f432fac9 fix parsing of url query with all methods
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-09-01 02:06:01 +03:00
dd7e872858 update micro
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-08-17 01:23:04 +03:00
57c2a5b95f nolint
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-07-31 15:01:44 +03:00
73fc3d34f0 minor tweaks
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-07-31 14:59:09 +03:00
17 changed files with 423 additions and 112 deletions

19
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,19 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
# Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
# Maintain dependencies for Golang
- package-ecosystem: "gomod"
directory: "/"
schedule:
interval: "daily"

20
.github/renovate.json vendored
View File

@@ -1,20 +0,0 @@
{
"extends": [
"config:base"
],
"postUpdateOptions": ["gomodTidy"],
"packageRules": [
{
"matchUpdateTypes": ["minor", "patch", "pin", "digest"],
"automerge": true
},
{
"groupName": "all deps",
"separateMajorMinor": true,
"groupSlug": "all",
"packagePatterns": [
"*"
]
}
]
}

View File

@@ -3,6 +3,7 @@ on:
push: push:
branches: branches:
- master - master
- v3
jobs: jobs:
test: test:
name: test name: test
@@ -34,9 +35,10 @@ jobs:
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: lint - name: lint
uses: golangci/golangci-lint-action@v2 uses: golangci/golangci-lint-action@v2
continue-on-error: true
with: with:
# Required: the version of golangci-lint is required and must be specified without patch version: we always use the latest patch version. # Required: the version of golangci-lint is required and must be specified without patch version: we always use the latest patch version.
version: v1.39 version: v1.30
# Optional: working directory, useful for monorepos # Optional: working directory, useful for monorepos
# working-directory: somedir # working-directory: somedir
# Optional: golangci-lint command line arguments. # Optional: golangci-lint command line arguments.

78
.github/workflows/codeql-analysis.yml vendored Normal file
View File

@@ -0,0 +1,78 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "codeql"
on:
workflow_run:
workflows: ["prbuild"]
types:
- completed
push:
branches: [ master, v3 ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ master, v3 ]
schedule:
- cron: '34 1 * * 0'
jobs:
analyze:
name: analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'go' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
# Learn more:
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
steps:
- name: checkout
uses: actions/checkout@v2
- name: setup
uses: actions/setup-go@v2
with:
go-version: 1.16
# Initializes the CodeQL tools for scanning.
- name: init
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: autobuild
uses: github/codeql-action/autobuild@v1
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: analyze
uses: github/codeql-action/analyze@v1

View File

@@ -0,0 +1,31 @@
name: "prautomerge"
on:
pull_request_target:
types: [assigned, opened, synchronize, reopened]
permissions:
pull-requests: write
contents: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: ${{ github.actor == 'dependabot[bot]' }}
steps:
- name: metadata
id: metadata
uses: dependabot/fetch-metadata@v1.1.1
with:
github-token: "${{ secrets.TOKEN }}"
- name: approve
run: gh pr review --approve "$PR_URL"
env:
PR_URL: ${{github.event.pull_request.html_url}}
GITHUB_TOKEN: ${{secrets.TOKEN}}
- name: merge
if: ${{contains(steps.metadata.outputs.dependency-names, 'go.unistack.org')}}
run: gh pr merge --auto --merge "$PR_URL"
env:
PR_URL: ${{github.event.pull_request.html_url}}
GITHUB_TOKEN: ${{secrets.TOKEN}}

View File

@@ -3,6 +3,7 @@ on:
pull_request: pull_request:
branches: branches:
- master - master
- v3
jobs: jobs:
test: test:
name: test name: test
@@ -34,9 +35,10 @@ jobs:
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: lint - name: lint
uses: golangci/golangci-lint-action@v2 uses: golangci/golangci-lint-action@v2
continue-on-error: true
with: with:
# Required: the version of golangci-lint is required and must be specified without patch version: we always use the latest patch version. # Required: the version of golangci-lint is required and must be specified without patch version: we always use the latest patch version.
version: v1.39 version: v1.30
# Optional: working directory, useful for monorepos # Optional: working directory, useful for monorepos
# working-directory: somedir # working-directory: somedir
# Optional: golangci-lint command line arguments. # Optional: golangci-lint command line arguments.

View File

@@ -5,14 +5,14 @@ This plugin is a http client for micro.
## Overview ## Overview
The http client wraps `net/http` to provide a robust micro client with service discovery, load balancing and streaming. The http client wraps `net/http` to provide a robust micro client with service discovery, load balancing and streaming.
It complies with the [micro.Client](https://godoc.org/github.com/unistack-org/micro-client-http#Client) interface. It complies with the [micro.Client](https://godoc.org/go.unistack.org/micro-client-http/v3#Client) interface.
## Usage ## Usage
### Use directly ### Use directly
```go ```go
import "github.com/unistack-org/micro-client-http" import "go.unistack.org/micro-client-http/v3"
service := micro.NewService( service := micro.NewService(
micro.Name("my.service"), micro.Name("my.service"),

4
go.mod
View File

@@ -1,5 +1,5 @@
module github.com/unistack-org/micro-client-http/v3 module go.unistack.org/micro-client-http/v3
go 1.16 go 1.16
require github.com/unistack-org/micro/v3 v3.5.4 require go.unistack.org/micro/v3 v3.8.14

23
go.sum
View File

@@ -1,17 +1,26 @@
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
github.com/ef-ds/deque v1.0.4/go.mod h1:gXDnTC3yqvBcHbq2lcExjtAcVrOnJCbMcZXmuj8Z4tg= github.com/ef-ds/deque v1.0.4/go.mod h1:gXDnTC3yqvBcHbq2lcExjtAcVrOnJCbMcZXmuj8Z4tg=
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
github.com/silas/dag v0.0.0-20210121180416-41cf55125c34/go.mod h1:7RTUFBdIRC9nZ7/3RyRNH1bdqIShrDejd1YbLwgPS+I= github.com/silas/dag v0.0.0-20210626123444-3804bac2d6d4/go.mod h1:7RTUFBdIRC9nZ7/3RyRNH1bdqIShrDejd1YbLwgPS+I=
github.com/unistack-org/micro/v3 v3.5.4 h1:6nIljqND355f+Fhc2mtCxYb5IRwer6nsMoAXpN8kka0= go.unistack.org/micro-proto/v3 v3.1.1 h1:78qRmltwGek5kSQ9tNmDZ9TCRvZM7YDIOgzriKvabjA=
github.com/unistack-org/micro/v3 v3.5.4/go.mod h1:1ZkwpEqpiHiVhM2hiF9DamtpsF04oFybFhEQ4zEMcro= go.unistack.org/micro-proto/v3 v3.1.1/go.mod h1:DpRhYCBXlmSJ/AAXTmntvlh7kQkYU6eFvlmYAx4BQS8=
golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= go.unistack.org/micro/v3 v3.8.14 h1:gvGAh11n484XuJFt+YFUvDJUwbn/a/6/NdTdTqeUnis=
go.unistack.org/micro/v3 v3.8.14/go.mod h1:zEbgew93bFhU+gANJubbbnPP1LtDTQRbM/17QXTbTrY=
golang.org/x/net v0.0.0-20210928044308-7d9f5e0b762b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=

145
http.go
View File

@@ -1,5 +1,5 @@
// Package http provides a http client // Package http provides a http client
package http package http // import "go.unistack.org/micro-client-http/v3"
import ( import (
"bufio" "bufio"
@@ -15,11 +15,12 @@ import (
"sync" "sync"
"time" "time"
"github.com/unistack-org/micro/v3/broker" "go.unistack.org/micro/v3/broker"
"github.com/unistack-org/micro/v3/client" "go.unistack.org/micro/v3/client"
"github.com/unistack-org/micro/v3/codec" "go.unistack.org/micro/v3/codec"
"github.com/unistack-org/micro/v3/errors" "go.unistack.org/micro/v3/errors"
"github.com/unistack-org/micro/v3/metadata" "go.unistack.org/micro/v3/metadata"
rutil "go.unistack.org/micro/v3/util/reflect"
) )
var DefaultContentType = "application/json" var DefaultContentType = "application/json"
@@ -40,6 +41,7 @@ type httpClient struct {
func newRequest(ctx context.Context, addr string, req client.Request, ct string, cf codec.Codec, msg interface{}, opts client.CallOptions) (*http.Request, error) { func newRequest(ctx context.Context, addr string, req client.Request, ct string, cf codec.Codec, msg interface{}, opts client.CallOptions) (*http.Request, error) {
var tags []string var tags []string
var parameters map[string]map[string]string
scheme := "http" scheme := "http"
method := http.MethodPost method := http.MethodPost
body := "*" // as like google api http annotation body := "*" // as like google api http annotation
@@ -55,6 +57,7 @@ func newRequest(ctx context.Context, addr string, req client.Request, ct string,
u = &url.URL{Scheme: scheme, Path: path, Host: host} u = &url.URL{Scheme: scheme, Path: path, Host: host}
} }
// nolint: nestif
if opts.Context != nil { if opts.Context != nil {
if m, ok := opts.Context.Value(methodKey{}).(string); ok { if m, ok := opts.Context.Value(methodKey{}).(string); ok {
method = m method = m
@@ -68,6 +71,32 @@ func newRequest(ctx context.Context, addr string, req client.Request, ct string,
if t, ok := opts.Context.Value(structTagsKey{}).([]string); ok && len(t) > 0 { if t, ok := opts.Context.Value(structTagsKey{}).([]string); ok && len(t) > 0 {
tags = t tags = t
} }
if k, ok := opts.Context.Value(headerKey{}).([]string); ok && len(k) > 0 {
if parameters == nil {
parameters = make(map[string]map[string]string)
}
m, ok := parameters["header"]
if !ok {
m = make(map[string]string)
parameters["header"] = m
}
for idx := 0; idx < len(k)/2; idx += 2 {
m[k[idx]] = k[idx+1]
}
}
if k, ok := opts.Context.Value(cookieKey{}).([]string); ok && len(k) > 0 {
if parameters == nil {
parameters = make(map[string]map[string]string)
}
m, ok := parameters["cookie"]
if !ok {
m = make(map[string]string)
parameters["cookie"] = m
}
for idx := 0; idx < len(k)/2; idx += 2 {
m[k[idx]] = k[idx+1]
}
}
} }
if len(tags) == 0 { if len(tags) == 0 {
@@ -88,7 +117,13 @@ func newRequest(ctx context.Context, addr string, req client.Request, ct string,
return nil, errors.BadRequest("go.micro.client", err.Error()) return nil, errors.BadRequest("go.micro.client", err.Error())
} }
path, nmsg, err := newPathRequest(u.Path, method, body, msg, tags) var nmsg interface{}
if len(u.Query()) > 0 {
path, nmsg, err = newPathRequest(u.Path+"?"+u.RawQuery, method, body, msg, tags, parameters)
} else {
path, nmsg, err = newPathRequest(u.Path, method, body, msg, tags, parameters)
}
if err != nil { if err != nil {
return nil, errors.BadRequest("go.micro.client", err.Error()) return nil, errors.BadRequest("go.micro.client", err.Error())
} }
@@ -98,6 +133,59 @@ func newRequest(ctx context.Context, addr string, req client.Request, ct string,
return nil, errors.BadRequest("go.micro.client", err.Error()) return nil, errors.BadRequest("go.micro.client", err.Error())
} }
var cookies []*http.Cookie
header := make(http.Header)
if opts.Context != nil {
if md, ok := opts.Context.Value(metadataKey{}).(metadata.Metadata); ok {
for k, v := range md {
header.Set(k, v)
}
}
}
if opts.AuthToken != "" {
header.Set(metadata.HeaderAuthorization, opts.AuthToken)
}
if md, ok := metadata.FromOutgoingContext(ctx); ok {
for k, v := range md {
header.Set(k, v)
}
}
// set timeout in nanoseconds
if opts.StreamTimeout > time.Duration(0) {
header.Set(metadata.HeaderTimeout, fmt.Sprintf("%d", opts.StreamTimeout))
}
if opts.RequestTimeout > time.Duration(0) {
header.Set(metadata.HeaderTimeout, fmt.Sprintf("%d", opts.RequestTimeout))
}
// set the content type for the request
header.Set(metadata.HeaderContentType, ct)
var v interface{}
for km, vm := range parameters {
for k, required := range vm {
v, err = rutil.StructFieldByPath(msg, k)
if err != nil {
return nil, errors.BadRequest("go.micro.client", err.Error())
}
if rutil.IsZero(v) {
if required == "true" {
return nil, errors.BadRequest("go.micro.client", fmt.Sprintf("required field %s not set", k))
}
continue
}
switch km {
case "header":
header.Set(k, fmt.Sprintf("%v", v))
case "cookie":
cookies = append(cookies, &http.Cookie{Name: k, Value: fmt.Sprintf("%v", v)})
}
}
}
b, err := cf.Marshal(nmsg) b, err := cf.Marshal(nmsg)
if err != nil { if err != nil {
return nil, errors.BadRequest("go.micro.client", err.Error()) return nil, errors.BadRequest("go.micro.client", err.Error())
@@ -107,6 +195,7 @@ func newRequest(ctx context.Context, addr string, req client.Request, ct string,
if len(b) > 0 { if len(b) > 0 {
hreq, err = http.NewRequestWithContext(ctx, method, u.String(), ioutil.NopCloser(bytes.NewBuffer(b))) hreq, err = http.NewRequestWithContext(ctx, method, u.String(), ioutil.NopCloser(bytes.NewBuffer(b)))
hreq.ContentLength = int64(len(b)) hreq.ContentLength = int64(len(b))
header.Set("Content-Length", fmt.Sprintf("%d", hreq.ContentLength))
} else { } else {
hreq, err = http.NewRequestWithContext(ctx, method, u.String(), nil) hreq, err = http.NewRequestWithContext(ctx, method, u.String(), nil)
} }
@@ -115,37 +204,11 @@ func newRequest(ctx context.Context, addr string, req client.Request, ct string,
return nil, errors.BadRequest("go.micro.client", err.Error()) return nil, errors.BadRequest("go.micro.client", err.Error())
} }
header := make(http.Header) hreq.Header = header
for _, cookie := range cookies {
if opts.Context != nil { hreq.AddCookie(cookie)
if md, ok := opts.Context.Value(metadataKey{}).(metadata.Metadata); ok {
for k, v := range md {
header.Set(k, v)
}
}
} }
if opts.AuthToken != "" {
hreq.Header.Set(metadata.HeaderAuthorization, opts.AuthToken)
}
if md, ok := metadata.FromOutgoingContext(ctx); ok {
for k, v := range md {
hreq.Header.Set(k, v)
}
}
// set timeout in nanoseconds
if opts.StreamTimeout > time.Duration(0) {
hreq.Header.Set(metadata.HeaderTimeout, fmt.Sprintf("%d", opts.StreamTimeout))
}
if opts.RequestTimeout > time.Duration(0) {
hreq.Header.Set(metadata.HeaderTimeout, fmt.Sprintf("%d", opts.RequestTimeout))
}
// set the content type for the request
hreq.Header.Set(metadata.HeaderContentType, ct)
return hreq, nil return hreq, nil
} }
@@ -549,13 +612,15 @@ func (h *httpClient) publish(ctx context.Context, ps []client.Message, opts ...c
exchange = v exchange = v
} }
omd, ok := metadata.FromOutgoingContext(ctx)
if !ok {
omd = metadata.New(2)
}
msgs := make([]*broker.Message, 0, len(ps)) msgs := make([]*broker.Message, 0, len(ps))
for _, p := range ps { for _, p := range ps {
md, ok := metadata.FromOutgoingContext(ctx) md := metadata.Copy(omd)
if !ok {
md = metadata.New(2)
}
md[metadata.HeaderContentType] = p.ContentType() md[metadata.HeaderContentType] = p.ContentType()
md[metadata.HeaderTopic] = p.Topic() md[metadata.HeaderTopic] = p.Topic()

View File

@@ -7,15 +7,57 @@ import (
) )
type Request struct { type Request struct {
Name string `json:"name"` Name string `json:"name"`
Field1 string Field1 string `json:"field1"`
Field2 string ClientID string
Field3 int64 Field2 string
Field3 int64
}
func TestPathWithHeader(t *testing.T) {
req := &Request{Name: "vtolstov", Field1: "field1", ClientID: "1234567890"}
p, m, err := newPathRequest(
"/api/v1/test?Name={name}&Field1={field1}",
"POST",
"*",
req,
nil,
map[string]map[string]string{"header": {"ClientID": "true"}},
)
if err != nil {
t.Fatal(err)
}
u, err := url.Parse(p)
if err != nil {
t.Fatal(err)
}
if m != nil {
t.Fatal("new struct must be nil")
}
if u.Query().Get("Name") != "vtolstov" || u.Query().Get("Field1") != "field1" {
t.Fatalf("invalid values %v", u.Query())
}
}
func TestPathValues(t *testing.T) {
req := &Request{Name: "vtolstov", Field1: "field1"}
p, m, err := newPathRequest("/api/v1/test?Name={name}&Field1={field1}", "POST", "*", req, nil, nil)
if err != nil {
t.Fatal(err)
}
u, err := url.Parse(p)
if err != nil {
t.Fatal(err)
}
_ = m
if u.Query().Get("Name") != "vtolstov" || u.Query().Get("Field1") != "field1" {
t.Fatalf("invalid values %v", u.Query())
}
} }
func TestValidPath(t *testing.T) { func TestValidPath(t *testing.T) {
req := &Request{Name: "vtolstov", Field1: "field1", Field2: "field2", Field3: 10} req := &Request{Name: "vtolstov", Field1: "field1", Field2: "field2", Field3: 10}
p, m, err := newPathRequest("/api/v1/{name}/list", "GET", "", req, nil) p, m, err := newPathRequest("/api/v1/{name}/list", "GET", "", req, nil, nil)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -32,9 +74,8 @@ func TestValidPath(t *testing.T) {
func TestInvalidPath(t *testing.T) { func TestInvalidPath(t *testing.T) {
req := &Request{Name: "vtolstov", Field1: "field1", Field2: "field2", Field3: 10} req := &Request{Name: "vtolstov", Field1: "field1", Field2: "field2", Field3: 10}
p, m, err := newPathRequest("/api/v1/{xname}/list", "GET", "", req, nil) _, _, err := newPathRequest("/api/v1/{xname}/list", "GET", "", req, nil, nil)
if err == nil { if err == nil {
t.Fatalf("path param must not be filled") t.Fatal("path param must not be filled")
} }
_, _ = p, m
} }

View File

@@ -1,25 +1,29 @@
package http package http
import ( import (
"github.com/unistack-org/micro/v3/client" "go.unistack.org/micro/v3/client"
"go.unistack.org/micro/v3/metadata"
) )
type httpMessage struct { type httpMessage struct {
payload interface{} payload interface{}
topic string topic string
contentType string contentType string
opts client.MessageOptions
} }
func newHTTPMessage(topic string, payload interface{}, contentType string, opts ...client.MessageOption) client.Message { func newHTTPMessage(topic string, payload interface{}, contentType string, opts ...client.MessageOption) client.Message {
options := client.NewMessageOptions(opts...) options := client.NewMessageOptions(opts...)
if len(options.ContentType) == 0 {
options.ContentType = contentType if len(options.ContentType) > 0 {
contentType = options.ContentType
} }
return &httpMessage{ return &httpMessage{
payload: payload, payload: payload,
topic: topic, topic: topic,
contentType: options.ContentType, contentType: contentType,
opts: options,
} }
} }
@@ -34,3 +38,7 @@ func (h *httpMessage) Topic() string {
func (h *httpMessage) Payload() interface{} { func (h *httpMessage) Payload() interface{} {
return h.payload return h.payload
} }
func (h *httpMessage) Metadata() metadata.Metadata {
return h.opts.Metadata
}

View File

@@ -4,8 +4,8 @@ import (
"net" "net"
"net/http" "net/http"
"github.com/unistack-org/micro/v3/client" "go.unistack.org/micro/v3/client"
"github.com/unistack-org/micro/v3/metadata" "go.unistack.org/micro/v3/metadata"
) )
var ( var (
@@ -57,6 +57,7 @@ func MaxSendMsgSize(s int) client.Option {
type httpClientKey struct{} type httpClientKey struct{}
// nolint: golint // nolint: golint
// HTTPClient pass http.Client option to client Call
func HTTPClient(c *http.Client) client.Option { func HTTPClient(c *http.Client) client.Option {
return client.SetOption(httpClientKey{}, c) return client.SetOption(httpClientKey{}, c)
} }
@@ -64,24 +65,28 @@ func HTTPClient(c *http.Client) client.Option {
type httpDialerKey struct{} type httpDialerKey struct{}
// nolint: golint // nolint: golint
// HTTPDialer pass net.Dialer option to client
func HTTPDialer(d *net.Dialer) client.Option { func HTTPDialer(d *net.Dialer) client.Option {
return client.SetOption(httpDialerKey{}, d) return client.SetOption(httpDialerKey{}, d)
} }
type methodKey struct{} type methodKey struct{}
// Method pass method option to client Call
func Method(m string) client.CallOption { func Method(m string) client.CallOption {
return client.SetCallOption(methodKey{}, m) return client.SetCallOption(methodKey{}, m)
} }
type pathKey struct{} type pathKey struct{}
// Path spcecifies path option to client Call
func Path(p string) client.CallOption { func Path(p string) client.CallOption {
return client.SetCallOption(pathKey{}, p) return client.SetCallOption(pathKey{}, p)
} }
type bodyKey struct{} type bodyKey struct{}
// Body specifies body option to client Call
func Body(b string) client.CallOption { func Body(b string) client.CallOption {
return client.SetCallOption(bodyKey{}, b) return client.SetCallOption(bodyKey{}, b)
} }
@@ -94,12 +99,28 @@ func ErrorMap(m map[string]interface{}) client.CallOption {
type structTagsKey struct{} type structTagsKey struct{}
// StructTags pass tags slice option to client Call
func StructTags(tags []string) client.CallOption { func StructTags(tags []string) client.CallOption {
return client.SetCallOption(structTagsKey{}, tags) return client.SetCallOption(structTagsKey{}, tags)
} }
type metadataKey struct{} type metadataKey struct{}
// Metadata pass metadata to client Call
func Metadata(md metadata.Metadata) client.CallOption { func Metadata(md metadata.Metadata) client.CallOption {
return client.SetCallOption(metadataKey{}, md) return client.SetCallOption(metadataKey{}, md)
} }
type cookieKey struct{}
// Cookie pass cookie to client Call
func Cookie(cookies ...string) client.CallOption {
return client.SetCallOption(cookieKey{}, cookies)
}
type headerKey struct{}
// Header pass cookie to client Call
func Header(headers ...string) client.CallOption {
return client.SetCallOption(headerKey{}, headers)
}

View File

@@ -1,8 +1,8 @@
package http package http
import ( import (
"github.com/unistack-org/micro/v3/client" "go.unistack.org/micro/v3/client"
"github.com/unistack-org/micro/v3/codec" "go.unistack.org/micro/v3/codec"
) )
type httpRequest struct { type httpRequest struct {

View File

@@ -9,9 +9,9 @@ import (
"net/http" "net/http"
"sync" "sync"
"github.com/unistack-org/micro/v3/client" "go.unistack.org/micro/v3/client"
"github.com/unistack-org/micro/v3/codec" "go.unistack.org/micro/v3/codec"
"github.com/unistack-org/micro/v3/errors" "go.unistack.org/micro/v3/errors"
) )
// Implements the streamer interface // Implements the streamer interface
@@ -52,6 +52,10 @@ func (h *httpStream) Response() client.Response {
return nil return nil
} }
func (h *httpStream) SendMsg(msg interface{}) error {
return h.Send(msg)
}
func (h *httpStream) Send(msg interface{}) error { func (h *httpStream) Send(msg interface{}) error {
h.Lock() h.Lock()
defer h.Unlock() defer h.Unlock()
@@ -69,6 +73,10 @@ func (h *httpStream) Send(msg interface{}) error {
return hreq.Write(h.conn) return hreq.Write(h.conn)
} }
func (h *httpStream) RecvMsg(msg interface{}) error {
return h.Recv(msg)
}
func (h *httpStream) Recv(msg interface{}) error { func (h *httpStream) Recv(msg interface{}) error {
h.Lock() h.Lock()
defer h.Unlock() defer h.Unlock()
@@ -93,6 +101,10 @@ func (h *httpStream) Error() error {
return h.err return h.err
} }
func (h *httpStream) CloseSend() error {
return h.Close()
}
func (h *httpStream) Close() error { func (h *httpStream) Close() error {
select { select {
case <-h.closed: case <-h.closed:

77
util.go
View File

@@ -10,10 +10,10 @@ import (
"strings" "strings"
"sync" "sync"
"github.com/unistack-org/micro/v3/client" "go.unistack.org/micro/v3/client"
"github.com/unistack-org/micro/v3/errors" "go.unistack.org/micro/v3/errors"
"github.com/unistack-org/micro/v3/logger" "go.unistack.org/micro/v3/logger"
rutil "github.com/unistack-org/micro/v3/util/reflect" rutil "go.unistack.org/micro/v3/util/reflect"
) )
var ( var (
@@ -38,7 +38,7 @@ func GetError(err error) interface{} {
return err return err
} }
func newPathRequest(path string, method string, body string, msg interface{}, tags []string) (string, interface{}, error) { func newPathRequest(path string, method string, body string, msg interface{}, tags []string, parameters map[string]map[string]string) (string, interface{}, error) {
// parse via https://github.com/googleapis/googleapis/blob/master/google/api/http.proto definition // parse via https://github.com/googleapis/googleapis/blob/master/google/api/http.proto definition
tpl, err := newTemplate(path) tpl, err := newTemplate(path)
if err != nil { if err != nil {
@@ -52,10 +52,20 @@ func newPathRequest(path string, method string, body string, msg interface{}, ta
fieldsmapskip := make(map[string]struct{}) fieldsmapskip := make(map[string]struct{})
fieldsmap := make(map[string]string, len(tpl)) fieldsmap := make(map[string]string, len(tpl))
for _, v := range tpl { for _, v := range tpl {
if v[0] != '{' || v[len(v)-1] != '}' { var vs, ve int
continue for i := 0; i < len(v); i++ {
switch v[i] {
case '{':
vs = i + 1
case '}':
ve = i
}
if ve != 0 {
fieldsmap[v[vs:ve]] = ""
vs = 0
ve = 0
}
} }
fieldsmap[v[1:len(v)-1]] = ""
} }
nmsg, err := rutil.Zero(msg) nmsg, err := rutil.Zero(msg)
@@ -107,10 +117,18 @@ func newPathRequest(path string, method string, body string, msg interface{}, ta
} }
} }
if t.name == "" { cname := t.name
if cname == "" {
cname = fld.Name
// fallback to lowercase // fallback to lowercase
t.name = strings.ToLower(fld.Name) t.name = strings.ToLower(fld.Name)
} }
if _, ok := parameters["header"][cname]; ok {
continue
}
if _, ok := parameters["cookie"][cname]; ok {
continue
}
if !val.IsValid() || val.IsZero() { if !val.IsValid() || val.IsZero() {
continue continue
@@ -151,17 +169,36 @@ func newPathRequest(path string, method string, body string, msg interface{}, ta
} }
var b strings.Builder var b strings.Builder
for _, fld := range tpl { for _, fld := range tpl {
_, _ = b.WriteRune('/') _, _ = b.WriteRune('/')
if fld[0] == '{' && fld[len(fld)-1] == '}' { // nolint: nestif
if v, ok := fieldsmap[fld[1:len(fld)-1]]; ok { var vs, ve, vf int
if v != "" { var pholder bool
_, _ = b.WriteString(v) for i := 0; i < len(fld); i++ {
} switch fld[i] {
} else { case '{':
_, _ = b.WriteString(fld) vs = i + 1
case '}':
ve = i
} }
} else { // nolint: nestif
if vs > 0 && ve != 0 {
if vm, ok := fieldsmap[fld[vs:ve]]; ok {
if vm != "" {
_, _ = b.WriteString(fld[vf : vs-1])
_, _ = b.WriteString(vm)
vf = ve + 1
}
} else {
_, _ = b.WriteString(fld)
}
vs = 0
ve = 0
pholder = true
}
}
if !pholder {
_, _ = b.WriteString(fld) _, _ = b.WriteString(fld)
} }
} }
@@ -171,6 +208,12 @@ func newPathRequest(path string, method string, body string, msg interface{}, ta
_, _ = b.WriteString(values.Encode()) _, _ = b.WriteString(values.Encode())
} }
/*
if err = rutil.ZeroFieldByPath(nmsg, k); err != nil {
return nil, errors.BadRequest("go.micro.client", err.Error())
}
*/
if rutil.IsZero(nmsg) { if rutil.IsZero(nmsg) {
return b.String(), nil, nil return b.String(), nil, nil
} }

View File

@@ -14,7 +14,7 @@ func TestParsing(t *testing.T) {
for _, m := range []string{"POST"} { for _, m := range []string{"POST"} {
body := "" body := ""
path, nmsg, err := newPathRequest("/users/iin/{iin}/push-notifications", m, body, omsg, []string{"protobuf", "json"}) path, nmsg, err := newPathRequest("/users/iin/{iin}/push-notifications", m, body, omsg, []string{"protobuf", "json"}, nil)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -44,7 +44,7 @@ func TestNewPathRequest(t *testing.T) {
for _, m := range []string{"POST", "PUT", "PATCH", "GET", "DELETE"} { for _, m := range []string{"POST", "PUT", "PATCH", "GET", "DELETE"} {
body := "" body := ""
path, nmsg, err := newPathRequest("/v1/test", m, body, omsg, []string{"protobuf", "json"}) path, nmsg, err := newPathRequest("/v1/test", m, body, omsg, []string{"protobuf", "json"}, nil)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -74,7 +74,7 @@ func TestNewPathVarRequest(t *testing.T) {
if m != "GET" { if m != "GET" {
body = "*" body = "*"
} }
path, nmsg, err := newPathRequest("/v1/test/{val1}", m, body, omsg, []string{"protobuf", "json"}) path, nmsg, err := newPathRequest("/v1/test/{val1}", m, body, omsg, []string{"protobuf", "json"}, nil)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }