Compare commits

...

87 Commits

Author SHA1 Message Date
Frank Jogeleit
6f415ec7c5 Support File Arrays
Signed-off-by: Frank Jogeleit <frank.jogeleit@lovoo.com>
2023-11-30 14:07:10 +01:00
Frank Jogeleit
25a5a55111 Merge pull request #119 from fjogeleit/dep-update
dependency updates
2023-11-20 21:42:34 +01:00
Frank Jogeleit
e1affb38cd dependency updates
Signed-off-by: Frank Jogeleit <frank.jogeleit@lovoo.com>
2023-11-20 21:40:45 +01:00
Frank Jogeleit
3abafba399 Merge pull request #118 from fjogeleit/dependabot/npm_and_yarn/axios-1.6.2
Bump axios from 1.6.0 to 1.6.2
2023-11-20 18:59:09 +01:00
dependabot[bot]
17b52dc74f Bump axios from 1.6.0 to 1.6.2
Bumps [axios](https://github.com/axios/axios) from 1.6.0 to 1.6.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.6.0...v1.6.2)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-20 17:56:02 +00:00
Frank Jogeleit
04de458128 Merge pull request #116 from fjogeleit/dependabot/github_actions/actions/setup-node-4
Bump actions/setup-node from 3 to 4
2023-11-02 01:05:16 +01:00
dependabot[bot]
6769207b0b Bump actions/setup-node from 3 to 4
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3 to 4.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-01 17:51:26 +00:00
Frank Jogeleit
37cfb73c02 Merge pull request #115 from fjogeleit/dependabot/npm_and_yarn/axios-1.6.0
Bump axios from 1.5.1 to 1.6.0
2023-10-30 23:27:22 +01:00
dependabot[bot]
7273a89218 Bump axios from 1.5.1 to 1.6.0
Bumps [axios](https://github.com/axios/axios) from 1.5.1 to 1.6.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.5.1...v1.6.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-30 17:14:42 +00:00
Frank Jogeleit
d08c0d1c88 Merge pull request #114 from fjogeleit/dependabot/npm_and_yarn/vercel/ncc-0.38.1
Bump @vercel/ncc from 0.38.0 to 0.38.1
2023-10-23 23:45:25 +02:00
dependabot[bot]
9580c192fd Bump @vercel/ncc from 0.38.0 to 0.38.1
Bumps [@vercel/ncc](https://github.com/vercel/ncc) from 0.38.0 to 0.38.1.
- [Release notes](https://github.com/vercel/ncc/releases)
- [Commits](https://github.com/vercel/ncc/compare/0.38.0...0.38.1)

---
updated-dependencies:
- dependency-name: "@vercel/ncc"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-23 17:52:07 +00:00
Frank Jogeleit
41c615e3c0 Merge pull request #113 from fjogeleit/dependabot/npm_and_yarn/axios-1.5.1
Bump axios from 1.5.0 to 1.5.1
2023-10-02 21:19:27 +02:00
dependabot[bot]
845e3400a7 Bump axios from 1.5.0 to 1.5.1
Bumps [axios](https://github.com/axios/axios) from 1.5.0 to 1.5.1.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.5.0...v1.5.1)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-02 17:41:00 +00:00
Frank Jogeleit
6871522388 Merge pull request #112 from fjogeleit/dependabot/github_actions/actions/checkout-4
Bump actions/checkout from 3 to 4
2023-10-01 20:49:06 +02:00
dependabot[bot]
17c1694300 Bump actions/checkout from 3 to 4
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-01 17:35:20 +00:00
Frank Jogeleit
baf3fe8b8b Merge pull request #110 from fjogeleit/dependabot/npm_and_yarn/actions/core-1.10.1
Bump @actions/core from 1.10.0 to 1.10.1
2023-09-11 20:43:19 +02:00
Frank Jogeleit
3d8af5c847 Merge pull request #111 from fjogeleit/dependabot/npm_and_yarn/vercel/ncc-0.38.0
Bump @vercel/ncc from 0.36.1 to 0.38.0
2023-09-11 20:42:51 +02:00
dependabot[bot]
35986be8f9 Bump @vercel/ncc from 0.36.1 to 0.38.0
Bumps [@vercel/ncc](https://github.com/vercel/ncc) from 0.36.1 to 0.38.0.
- [Release notes](https://github.com/vercel/ncc/releases)
- [Commits](https://github.com/vercel/ncc/compare/0.36.1...0.38.0)

---
updated-dependencies:
- dependency-name: "@vercel/ncc"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-11 17:07:30 +00:00
dependabot[bot]
3c98f6caf2 Bump @actions/core from 1.10.0 to 1.10.1
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.10.0 to 1.10.1.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

---
updated-dependencies:
- dependency-name: "@actions/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-11 17:07:23 +00:00
Frank Jogeleit
389f30ee3a Merge pull request #109 from fjogeleit/dependabot/npm_and_yarn/axios-1.5.0
Bump axios from 1.4.0 to 1.5.0
2023-08-28 21:05:35 +02:00
dependabot[bot]
e9345a1e67 Bump axios from 1.4.0 to 1.5.0
Bumps [axios](https://github.com/axios/axios) from 1.4.0 to 1.5.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.4.0...v1.5.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-28 17:50:48 +00:00
Frank Jogeleit
894ad39332 Merge pull request #108 from fjogeleit/mtls-cert-support
Add mTLS ClientCert support
2023-08-10 11:03:54 +02:00
Frank Jogeleit
25fb88fa43 Add mTLS ClientCert support
Signed-off-by: Frank Jogeleit <frank.jogeleit@lovoo.com>
2023-08-10 10:55:12 +02:00
Frank Jogeleit
eab8015483 Merge pull request #104 from fjogeleit/dependency-update
dependency update
2023-06-26 12:41:33 +02:00
Frank Jogeleit
f62db86b8d dependency update
Signed-off-by: Frank Jogeleit <frank.jogeleit@lovoo.com>
2023-06-26 12:40:30 +02:00
Frank Jogeleit
ef8ec33f46 Merge pull request #102 from fjogeleit/dependabot/npm_and_yarn/yargs-17.7.2
Bump yargs from 17.7.1 to 17.7.2
2023-05-01 21:57:46 +02:00
Frank Jogeleit
c431724973 Merge pull request #103 from fjogeleit/dependabot/npm_and_yarn/axios-1.4.0
Bump axios from 1.3.6 to 1.4.0
2023-05-01 21:57:38 +02:00
dependabot[bot]
a9fc010566 Bump axios from 1.3.6 to 1.4.0
Bumps [axios](https://github.com/axios/axios) from 1.3.6 to 1.4.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.3.6...v1.4.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-01 17:56:47 +00:00
dependabot[bot]
8cbbec6c93 Bump yargs from 17.7.1 to 17.7.2
Bumps [yargs](https://github.com/yargs/yargs) from 17.7.1 to 17.7.2.
- [Release notes](https://github.com/yargs/yargs/releases)
- [Changelog](https://github.com/yargs/yargs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/yargs/yargs/compare/v17.7.1...v17.7.2)

---
updated-dependencies:
- dependency-name: yargs
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-01 17:56:41 +00:00
Frank Jogeleit
20c7f757a1 Merge pull request #101 from fjogeleit/dependabot/npm_and_yarn/axios-1.3.6
Bump axios from 1.3.5 to 1.3.6
2023-04-24 21:07:08 +02:00
dependabot[bot]
5e4203c2ac Bump axios from 1.3.5 to 1.3.6
Bumps [axios](https://github.com/axios/axios) from 1.3.5 to 1.3.6.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.3.5...v1.3.6)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-24 17:56:35 +00:00
Frank Jogeleit
6659346e66 Merge pull request #100 from fjogeleit/dependabot/npm_and_yarn/axios-1.3.5
Bump axios from 1.3.4 to 1.3.5
2023-04-10 20:01:33 +02:00
dependabot[bot]
fc0207c5aa Bump axios from 1.3.4 to 1.3.5
Bumps [axios](https://github.com/axios/axios) from 1.3.4 to 1.3.5.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.3.4...v1.3.5)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-10 17:56:33 +00:00
Frank Jogeleit
394beeafea log customHeaders parse error
Signed-off-by: Frank Jogeleit <frank.jogeleit@lovoo.com>
2023-03-29 10:53:51 +02:00
Frank Jogeleit
e8dd067b83 adjust cli
Signed-off-by: Frank Jogeleit <frank.jogeleit@lovoo.com>
2023-03-07 11:00:52 +01:00
Frank Jogeleit
a7bd4f21e5 Merge pull request #96 from fjogeleit/develop
retry requests
2023-03-07 10:57:42 +01:00
Frank Jogeleit
2e2dec74b5 retry requests
Signed-off-by: Frank Jogeleit <frank.jogeleit@lovoo.com>
2023-03-06 16:07:02 +01:00
Frank Jogeleit
5f7d5f7c54 Merge pull request #94 from fjogeleit/dependabot/npm_and_yarn/yargs-17.7.1
Bump yargs from 17.7.0 to 17.7.1
2023-02-27 19:19:28 +01:00
Frank Jogeleit
991c07d6d9 Merge pull request #93 from fjogeleit/dependabot/npm_and_yarn/axios-1.3.4
Bump axios from 1.3.3 to 1.3.4
2023-02-27 19:19:13 +01:00
dependabot[bot]
5500a62817 Bump yargs from 17.7.0 to 17.7.1
Bumps [yargs](https://github.com/yargs/yargs) from 17.7.0 to 17.7.1.
- [Release notes](https://github.com/yargs/yargs/releases)
- [Changelog](https://github.com/yargs/yargs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/yargs/yargs/compare/v17.7.0...v17.7.1)

---
updated-dependencies:
- dependency-name: yargs
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-27 17:56:43 +00:00
dependabot[bot]
81ecdf1750 Bump axios from 1.3.3 to 1.3.4
Bumps [axios](https://github.com/axios/axios) from 1.3.3 to 1.3.4.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.3.3...v1.3.4)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-27 17:56:32 +00:00
Frank Jogeleit
04b426e25f Merge pull request #91 from fjogeleit/dependabot/npm_and_yarn/yargs-17.7.0
Bump yargs from 17.6.2 to 17.7.0
2023-02-20 19:12:20 +01:00
Frank Jogeleit
fc435761fc Merge pull request #90 from fjogeleit/dependabot/npm_and_yarn/axios-1.3.3
Bump axios from 1.3.2 to 1.3.3
2023-02-20 19:12:09 +01:00
dependabot[bot]
12f71e545a Bump yargs from 17.6.2 to 17.7.0
Bumps [yargs](https://github.com/yargs/yargs) from 17.6.2 to 17.7.0.
- [Release notes](https://github.com/yargs/yargs/releases)
- [Changelog](https://github.com/yargs/yargs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/yargs/yargs/compare/v17.6.2...v17.7.0)

---
updated-dependencies:
- dependency-name: yargs
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-20 17:56:42 +00:00
dependabot[bot]
edf33a9d70 Bump axios from 1.3.2 to 1.3.3
Bumps [axios](https://github.com/axios/axios) from 1.3.2 to 1.3.3.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.3.2...v1.3.3)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-20 17:56:36 +00:00
Frank Jogeleit
4ae1dfba85 Merge pull request #87 from fjogeleit/response-file
add persist handler
2023-02-04 13:30:30 +01:00
Frank Jogeleit
2c712a0557 add persist handler
Signed-off-by: Frank Jogeleit <frank.jogeleit@lovoo.com>
2023-02-04 13:28:08 +01:00
Frank Jogeleit
0f4905efb7 Merge pull request #86 from fjogeleit/dependabot/npm_and_yarn/vercel/ncc-0.36.1
Bump @vercel/ncc from 0.36.0 to 0.36.1
2023-01-30 18:30:18 +01:00
dependabot[bot]
dfc2f7ac6f Bump @vercel/ncc from 0.36.0 to 0.36.1
Bumps [@vercel/ncc](https://github.com/vercel/ncc) from 0.36.0 to 0.36.1.
- [Release notes](https://github.com/vercel/ncc/releases)
- [Commits](https://github.com/vercel/ncc/compare/0.36.0...0.36.1)

---
updated-dependencies:
- dependency-name: "@vercel/ncc"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-30 17:05:29 +00:00
Frank Jogeleit
52919e91b0 Merge pull request #85 from fjogeleit/dependabot/npm_and_yarn/axios-1.2.6
Bump axios from 1.2.3 to 1.2.6
2023-01-30 18:03:58 +01:00
dependabot[bot]
21b59cc25d Bump axios from 1.2.3 to 1.2.6
Bumps [axios](https://github.com/axios/axios) from 1.2.3 to 1.2.6.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.2.3...v1.2.6)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-30 17:00:41 +00:00
Frank Jogeleit
39d8207c44 Merge pull request #83 from fjogeleit/dependabot/npm_and_yarn/axios-1.2.3
Bump axios from 1.2.2 to 1.2.3
2023-01-23 18:01:44 +01:00
dependabot[bot]
74e83dd964 Bump axios from 1.2.2 to 1.2.3
Bumps [axios](https://github.com/axios/axios) from 1.2.2 to 1.2.3.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/1.2.2...v1.2.3)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-23 17:00:52 +00:00
Frank Jogeleit
00ffa5ecd5 Merge pull request #81 from fjogeleit/dependabot/npm_and_yarn/axios-1.2.2
Bump axios from 1.2.1 to 1.2.2
2023-01-02 18:23:58 +01:00
dependabot[bot]
d724e04050 Bump axios from 1.2.1 to 1.2.2
Bumps [axios](https://github.com/axios/axios) from 1.2.1 to 1.2.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.2.1...1.2.2)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-02 17:00:56 +00:00
Frank Jogeleit
cb13434243 Merge pull request #80 from fjogeleit/dependabot/npm_and_yarn/vercel/ncc-0.36.0
Bump @vercel/ncc from 0.34.0 to 0.36.0
2022-12-26 15:05:23 +01:00
dependabot[bot]
e7440a202a Bump @vercel/ncc from 0.34.0 to 0.36.0
Bumps [@vercel/ncc](https://github.com/vercel/ncc) from 0.34.0 to 0.36.0.
- [Release notes](https://github.com/vercel/ncc/releases)
- [Commits](https://github.com/vercel/ncc/compare/0.34.0...0.36.0)

---
updated-dependencies:
- dependency-name: "@vercel/ncc"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-26 14:05:17 +00:00
Frank Jogeleit
d06672e4c2 Merge pull request #79 from fjogeleit/dependabot/npm_and_yarn/axios-1.2.1
Bump axios from 1.2.0 to 1.2.1
2022-12-26 15:04:18 +01:00
dependabot[bot]
322dbb7bdb Bump axios from 1.2.0 to 1.2.1
Bumps [axios](https://github.com/axios/axios) from 1.2.0 to 1.2.1.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.2.0...v1.2.1)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-12 17:00:51 +00:00
Frank Jogeleit
3da643f26a Merge pull request #76 from fjogeleit/dependabot/npm_and_yarn/axios-1.2.0
Bump axios from 1.1.3 to 1.2.0
2022-11-28 19:28:28 +01:00
dependabot[bot]
a9b5bad232 Bump axios from 1.1.3 to 1.2.0
Bumps [axios](https://github.com/axios/axios) from 1.1.3 to 1.2.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.1.3...v1.2.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-28 17:00:46 +00:00
Frank Jogeleit
9e40d70ab2 Merge pull request #75 from fjogeleit/local-cli
Add CLI file for local testing
2022-11-14 11:26:59 +01:00
Frank Jogeleit
e55086ca3f Add CLI file for local testing
Signed-off-by: Frank Jogeleit <frank.jogeleit@lovoo.com>
2022-11-10 12:15:07 +01:00
Frank Jogeleit
86014825e9 Merge branch 'main' of github.com:fjogeleit/http-request-action 2022-11-07 11:45:05 +01:00
Frank Jogeleit
575a0b6560 Update README.md
Signed-off-by: Frank Jogeleit <frank.jogeleit@lovoo.com>
2022-11-07 11:44:46 +01:00
Frank Jogeleit
56da042223 Merge pull request #73 from fjogeleit/url-encoded-tests
Test cases for URLEncoded contentType
2022-11-07 11:11:18 +01:00
Frank Jogeleit
cc3aff9cbe Testcases for URLEncoded contentType 2022-11-07 11:08:34 +01:00
Frank Jogeleit
c4ec44ca3e Merge pull request #72 from Uzlopak/strict
use strict
2022-11-04 10:35:28 +01:00
uzlopak
b497d195dc use strict 2022-11-04 10:28:14 +01:00
Uzlopak
d00a8759d6 jsdoc: async functions should return Promise (#70)
* jsdoc: async functions should return Promise

* update dist/index.js

* improve ci

* run anyway

* update dist

* test if esbuild produces deterministic builds

* Update ci.yml

* Update ci.yml

* specify target to node16

* another try

* Check for empty dataJson

Signed-off-by: Frank Jogeleit <frank.jogeleit@lovoo.com>

* build dist

Signed-off-by: Frank Jogeleit <frank.jogeleit@lovoo.com>

* build latest

* modify test step

* avoid skipping

* go back to ncc

* add back github.ref

* remove  additional stuff

* build dist/index.js

Signed-off-by: Frank Jogeleit <frank.jogeleit@lovoo.com>
Co-authored-by: Frank Jogeleit <frank.jogeleit@lovoo.com>
2022-11-03 21:35:53 +01:00
Frank Jogeleit
05a08b70e2 build dist
Signed-off-by: Frank Jogeleit <frank.jogeleit@lovoo.com>
2022-11-03 20:46:35 +01:00
Frank Jogeleit
6c12bc1f79 Check for empty dataJson
Signed-off-by: Frank Jogeleit <frank.jogeleit@lovoo.com>
2022-11-03 20:24:38 +01:00
Frank Jogeleit
6796716641 Merge pull request #66 from Uzlopak/improve-ci
Improve ci
2022-11-03 14:41:00 +01:00
Frank Jogeleit
dac2a9ae42 Merge pull request #69 from Uzlopak/add-build-action
add build-action
2022-11-03 14:35:36 +01:00
Frank Jogeleit
79a8b8af48 Merge pull request #62 from fjogeleit/url-encoded
Use URLSearchParams for application/x-www-form-urlencoded
2022-11-03 14:33:24 +01:00
Uzlopak
5bbd839c3e Update ci.yml 2022-11-03 14:29:31 +01:00
Uzlopak
cf482a5e80 Update and rename test.yml to ci.yml 2022-11-03 14:19:36 +01:00
Frank Jogeleit
76415c3c59 Merge pull request #67 from fjogeleit/dependabot/github_actions/actions/checkout-3
Bump actions/checkout from 2 to 3
2022-11-03 14:17:11 +01:00
Frank Jogeleit
3a818e40e8 Merge pull request #68 from fjogeleit/dependabot/npm_and_yarn/axios-1.1.3
Bump axios from 0.21.4 to 1.1.3
2022-11-03 14:16:57 +01:00
dependabot[bot]
daa3a7f756 Bump axios from 0.21.4 to 1.1.3
Bumps [axios](https://github.com/axios/axios) from 0.21.4 to 1.1.3.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v0.21.4...v1.1.3)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-03 13:13:42 +00:00
dependabot[bot]
7f60d0a379 Bump actions/checkout from 2 to 3
Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-03 13:13:39 +00:00
Frank Jogeleit
9adf34b765 Merge pull request #64 from Uzlopak/add-dependabot
add dependabot.yml
2022-11-03 14:13:18 +01:00
Frank Jogeleit
0d5a8b7b31 Merge pull request #65 from Uzlopak/reorder-deps
reorder deps
2022-11-03 14:13:05 +01:00
uzlopak
a8547fbde9 add build-action 2022-11-03 12:06:20 +01:00
uzlopak
a8bcd97403 reorder deps 2022-11-03 12:01:52 +01:00
uzlopak
ce3525d612 add dependabot.yml 2022-11-03 11:56:13 +01:00
Frank Jogeleit
50750c1420 Use URLSearchParams for application/x-www-form-urlencoded 2022-11-01 10:01:33 +01:00
16 changed files with 34694 additions and 5750 deletions

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

@@ -0,0 +1,10 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "monthly"
- package-ecosystem: 'npm'
directory: '/'
schedule:
interval: 'weekly'

35
.github/workflows/build-action.yml vendored Normal file
View File

@@ -0,0 +1,35 @@
name: Build Action
on:
workflow_dispatch:
inputs:
ref:
description: The branch
type: string
default: main
required: true
jobs:
build:
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- name: checkout repo
uses: actions/checkout@v4
with:
ref: ${{ inputs.ref }}
- uses: actions/setup-node@v4
with:
node-version: '16'
- name: Install dependencies
run: |
npm ci
- name: Build Action
run: |
npm run build
- name: Update dist
run: |
git config user.name 'github-actions[bot]'
git config user.email 'github-actions[bot]@users.noreply.github.com'
git add ./dist &&
git commit -m "Update dist"
git push origin HEAD:${{ inputs.ref }}

184
.github/workflows/ci.yml vendored Normal file
View File

@@ -0,0 +1,184 @@
name: CI
on:
pull_request:
push:
branches:
- main
- 'releases/*'
jobs:
build:
if: >
github.event_name == 'pull_request' &&
github.event.pull_request.user.login == 'dependabot[bot]'
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- id: ref
run: |
if [[ -n '${{ github.event.ref }}' ]]; then
branch="${{ github.event.ref }}"
echo "branch=$branch" >> $GITHUB_OUTPUT
else
branch="${{ github.event.pull_request.head.ref }}"
echo "branch=$branch" >> $GITHUB_OUTPUT
fi
- name: checkout repo
uses: actions/checkout@v4
with:
ref: ${{ steps.ref.outputs.branch }}
- uses: actions/setup-node@v4
with:
node-version: '16'
- name: Install dependencies
run: |
npm ci
- name: Build Action
run: |
npm run build
- name: Update dist
run: |
git config user.name 'github-actions[bot]'
git config user.email 'github-actions[bot]@users.noreply.github.com'
git add ./dist
if ! git diff --quiet dist; then
git commit -m "Update dist"
git push origin HEAD:${{ steps.ref.outputs.branch }}
fi
integrity:
if: >
!failure() &&
!cancelled()
needs:
- build
runs-on: ubuntu-latest
steps:
- name: checkout repo
uses: actions/checkout@v4
with:
persist-credentials: false
- uses: actions/setup-node@v4
with:
node-version: '16.17.0'
- name: Build action
run: |
npm ci
npm run build
- name: Repository Integrity Check
run: |
git diff --quiet dist
test:
if: >
!failure() &&
!cancelled()
needs:
- integrity
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- name: Request Postman Echo GET
uses: ./
with:
url: 'https://postman-echo.com/get'
method: 'GET'
- name: Request Postman Echo POST
uses: ./
with:
url: 'https://postman-echo.com/post'
method: 'POST'
data: '{ "key": "value" }'
- name: Request Postman Echo POST with Unescaped Newline
uses: ./
with:
url: 'https://postman-echo.com/post'
method: 'POST'
escapeData: 'true'
data: >-
{
"key":"multi line\ntest
text"
}
- name: Request Postman Echo BasicAuth
uses: ./
with:
url: 'https://postman-echo.com/basic-auth'
method: 'GET'
username: 'postman'
password: 'password'
- name: Request Postman Echo with 404 Response and ignore failure code
uses: ./
with:
url: 'https://postman-echo.com/status/404'
method: 'GET'
ignoreStatusCodes: '404'
- name: Create Test File
run: |
echo "test" > testfile1.txt
echo "test" > testfile2.txt
- name: Request Postman Echo POST Multipart
uses: ./
with:
url: 'https://postman-echo.com/post'
method: 'POST'
data: '{ "key": "value" }'
files: '{ "file": "${{ github.workspace }}/testfile1.txt" }'
- name: Request Postman Echo POST Multipart File Array
uses: ./
with:
url: 'https://postman-echo.com/post'
method: 'POST'
data: '{ "key": "value" }'
files: '{ "file": ["${{ github.workspace }}/testfile1.txt", "${{ github.workspace }}/testfile2.txt"] }'
- name: Request Postman Echo POST and persist response
uses: ./
with:
url: 'https://postman-echo.com/post'
method: 'POST'
file: "${{ github.workspace }}/testfile1.txt"
responseFile: "${{ github.workspace }}/response.json"
- name: Output responseFile
run: |
cat "${{ github.workspace }}/response.json"
- name: Request Postman Echo POST Multipart without data
uses: ./
with:
url: 'https://postman-echo.com/post'
method: 'POST'
files: '{ "file": "${{ github.workspace }}/testfile1.txt" }'
- name: Request Postman Echo POST single file
uses: ./
with:
url: 'https://postman-echo.com/post'
method: 'POST'
file: "${{ github.workspace }}/testfile1.txt"
- name: Request Postman Echo POST URLEncoded string data
uses: ./
with:
url: 'https://postman-echo.com/post'
contentType : 'application/x-www-form-urlencoded'
method: 'POST'
data: 'key=value'
- name: Request Postman Echo POST URLEncoded json data
uses: ./
with:
url: 'https://postman-echo.com/post'
contentType : 'application/x-www-form-urlencoded'
method: 'POST'
data: '{"key":"value"}'

View File

@@ -1,77 +0,0 @@
name: Test
on: [push, pull_request]
jobs:
request:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.ref }}
- name: Request Postman Echo GET
uses: ./
with:
url: 'https://postman-echo.com/get'
method: 'GET'
- name: Request Postman Echo POST
uses: ./
with:
url: 'https://postman-echo.com/post'
method: 'POST'
data: '{ "key": "value" }'
- name: Request Postman Echo POST with Unescaped Newline
uses: ./
with:
url: 'https://postman-echo.com/post'
method: 'POST'
escapeData: 'true'
data: >-
{
"key":"multi line\ntest
text"
}
- name: Request Postman Echo BasicAuth
uses: ./
with:
url: 'https://postman-echo.com/basic-auth'
method: 'GET'
username: 'postman'
password: 'password'
- name: Request Postman Echo with 404 Response and ignore failure code
uses: ./
with:
url: 'https://postman-echo.com/status/404'
method: 'GET'
ignoreStatusCodes: '404'
- name: Create Test File
run: |
echo "test" > testfile.txt
- name: Request Postman Echo POST Multipart
uses: ./
with:
url: 'https://postman-echo.com/post'
method: 'POST'
data: '{ "key": "value" }'
files: '{ "file": "${{ github.workspace }}/testfile.txt" }'
- name: Request Postman Echo POST Multipart without data
uses: ./
with:
url: 'https://postman-echo.com/post'
method: 'POST'
files: '{ "file": "${{ github.workspace }}/testfile.txt" }'
- name: Request Postman Echo POST single file
uses: ./
with:
url: 'https://postman-echo.com/post'
method: 'POST'
file: "${{ github.workspace }}/testfile.txt"

1
.gitignore vendored
View File

@@ -1 +1,2 @@
node_modules
.vscode

View File

@@ -30,7 +30,7 @@ jobs:
|url | Request URL | _required_ Field |
|method | Request Method| POST |
|contentType | Request ContentType| application/json |
|data | Request Body Content:<br>- text content like JSON or XML<br>- key=value pairs separated by '&' and contentType: application/x-www-form-urlencoded<br><br>only for POST / PUT / PATCH Requests | '{}' |
|data | Request Body Content:<br>- text content like JSON or XML<br>- key=value pairs separated by '&' or JSON data and contentType: application/x-www-form-urlencoded<br><br>only for POST / PUT / PATCH Requests | '{}' |
|files | Map of key / absolute file paths send as multipart/form-data request to the API, if set the contentType is set to multipart/form-data, values provided by data will be added as additional FormData values, nested objects are not supported. **Example provided in the _test_ Workflow of this Action** | '{}' |
|file | Single absolute file path send as `application/octet-stream` request to the API, if set the contentType is set to `application/octet-stream`. This input will be ignored if either `data` or `files` input is present. **Example provided in the _test_ Workflow of this Action** ||
|timeout| Request Timeout in ms | 5000 (5s) |
@@ -42,6 +42,11 @@ jobs:
|preventFailureOnNoResponse| Prevent this Action to fail if the request respond without an response. Use 'true' (string) as value to enable it ||
|ignoreStatusCodes| Prevent this Action to fail if the request respond with one of the configured Status Codes. Example: '404,401' ||
|httpsCA| Certificate authority as string in PEM format ||
|httpsCert| Client Certificate as string ||
|httpsKey| Client Certificate Key as string ||
|responseFile| Persist the response data to the specified file path ||
|retry| optional amount of retries if the request is failing, does not retry if the status code is ignored ||
|retryWait| time between each retry in millseconds | 3000 |
### Response
@@ -73,3 +78,25 @@ Additional information is available if debug logging is enabled:
- Request Data (Body / Auth / Method)
To [enable debug logging in GitHub Actions](https://docs.github.com/en/actions/managing-workflow-runs/enabling-debug-logging) create a secret `ACTIONS_RUNNER_DEBUG` with a value of `true`
#### Local Usage
* You can execute this tool locally with the provided CLI `bin/http-action`.
```bash
bin/http-action --help
Positionals:
url request URL [string]
Optionen:
--help helper text [boolean]
-d, --data request body data [string] [default: "{}"]
-f, --files request files, send as multipart/form-data [string] [default: "{}"]
--file single file, send as application/octet-stream [string]
-h, --customHeaders custom request headers [string] [default: "{}"]
-m, --method request method (GET, POST, PATCH, PUT, DELETE) [string] [default: "POST"]
-t, --contentType request content type [string] [default: "application/json"]
--bearerToken bearer token without Bearer prefix, added as
Authorization header [string]
--timeout request timeout [number] [default: 5000]
```

View File

@@ -50,6 +50,21 @@ inputs:
httpsCA:
description: 'Certificate authority as string in PEM format'
required: false
httpsCert:
description: 'Client Certificate as string'
required: false
httpsKey:
description: 'Client Certificate Key as string'
required: false
responseFile:
description: 'Persist the response data to the specified file path'
required: false
retry:
description: 'optional amount of retries if the request fails'
required: false
retryWait:
description: 'wait time between retries in milliseconds'
required: false
outputs:
response:
description: 'HTTP Response Content'

55
bin/http-action Executable file
View File

@@ -0,0 +1,55 @@
#!/usr/bin/env node
const yargs = require('yargs/yargs')
const { hideBin } = require('yargs/helpers')
const { LogActions } = require('../src/githubActions.js')
const { request } = require('../src/httpClient');
const argv = yargs(hideBin(process.argv))
.option('data', { alias: 'd', type: 'string', description: 'request body data', default: '{}' })
.option('files', { alias: 'f', type: 'string', description: 'request files, send as multipart/form-data', default: '{}' })
.option('file', { type: 'string', description: 'single file, send as application/octet-stream' })
.option('customHeaders', { alias: 'h', type: 'string', description: 'custom request headers', default: '{}' })
.option('method', { alias: 'm', type: 'string', description: 'request method (GET, POST, PATCH, PUT, DELETE)', default: 'POST' })
.option('contentType', { alias: 't', type: 'string', description: 'request content type', default: 'application/json' })
.option('bearerToken', { type: 'string', description: 'bearer token without Bearer prefix, added as Authorization header' })
.option('timeout', { type: 'number', description: 'request timeout', default: 5000 })
.positional('url', { type: 'string', description: 'URL', description: 'request URL' })
.parse()
let customHeaders = {}
if (!!argv.customHeaders) {
try {
customHeaders = JSON.parse(argv.customHeaders);
} catch(error) {
console.error('Could not parse customHeaders string value')
}
}
const headers = { 'Content-Type': argv.contentType || 'application/json' }
if (!!argv.bearerToken) {
headers['Authorization'] = `Bearer ${argv.bearerToken}`;
}
const instanceConfig = {
baseURL: argv._[0],
timeout: parseInt(argv.timeout || 5000, 10),
headers: { ...headers, ...customHeaders }
}
request({
data: argv.data,
method: argv.method,
instanceConfig,
files: argv.files,
file: argv.file,
actions: new LogActions(),
options: {
ignoredCodes: [],
escapeData: false,
preventFailureOnNoResponse: false,
retry: 0,
retryWait: 0
}
})

36626
dist/index.js vendored

File diff suppressed because one or more lines are too long

3104
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "http-request-action",
"version": "1.9.0",
"version": "1.14.2",
"description": "",
"main": "src/index.js",
"private": false,
@@ -19,11 +19,17 @@
},
"homepage": "https://github.com/fjogeleit/http-request-action#readme",
"devDependencies": {
"@actions/core": "^1.9.1"
"@vercel/ncc": "^0.38.1",
"axios": "^1.6",
"form-data": "^4.0.0",
"yargs": "^17.7.2"
},
"dependencies": {
"@zeit/ncc": "^0.22",
"axios": "^0.21.4",
"form-data": "^4.0.0"
"@actions/core": "^1.10.1",
"install": "^0.13.0",
"npm": "^10.2.4"
},
"engines": {
"node": ">=16.0.0"
}
}

View File

@@ -1,3 +1,5 @@
'use strict'
const core = require("@actions/core");
class GithubActions {
@@ -5,6 +7,10 @@ class GithubActions {
core.debug(message)
}
info(message) {
core.info(message)
}
warning(message) {
core.warning(message)
}
@@ -19,6 +25,10 @@ class GithubActions {
}
class LogActions {
info(message) {
console.info(message)
}
debug(message) {
console.info(message)
}

30
src/handler/persist.js Normal file
View File

@@ -0,0 +1,30 @@
'use strict'
const axios = require('axios');
const fs = require('fs');
const { GithubActions } = require('../githubActions');
/**
* @param {string} filePath
* @param {GithubActions} actions
*
* @returns {(response: axios.AxiosResponse) => void}
*/
const createPersistHandler = (filePath, actions) => (response) => {
let data = response.data
if (typeof data == 'object') {
data = JSON.stringify(data)
}
fs.writeFile(filePath, data, err => {
if (!err) {
actions.info(`response persisted successfully at ${filePath}`)
return
}
actions.warning(JSON.stringify({ message: error.message, data: response.data }))
})
}
module.exports = { createPersistHandler }

81
src/helper.js Normal file
View File

@@ -0,0 +1,81 @@
'use strict';
const { GithubActions } = require('./githubActions');
const FormData = require('form-data');
const fs = require('fs');
/**
* @param {string} value
*
* @returns {Object}
*/
const convertToJSON = (value) => {
try {
return JSON.parse(value) || {};
} catch (e) {
return {};
}
};
/**
* @param {{ [key: string]: string }} data
* @param {{ [key: string]: string }} files
* @param {boolean} convertPaths
*
* @returns {FormData}
*/
const convertToFormData = async (data, files, convertPaths) => {
const formData = new FormData();
for (const [key, value] of Object.entries(data)) {
formData.append(key, value);
}
for (const [key, value] of Object.entries(files)) {
if (Array.isArray(value)) {
value.forEach(v => formData.append(key, fs.createReadStream(v)))
} else {
formData.append(key, fs.createReadStream(value));
}
}
return formData;
};
/**
* @param {() => Promise} callback
* @param {{ retry: number; sleep: number; actions: GithubActions }} options
*
* @returns {Promise}
*/
const retry = async (callback, options) => {
let lastErr = null;
let i = 0;
do {
try {
return await callback();
} catch (err) {
lastErr = err;
}
if (i < options.retries) {
options.actions.warning(`#${i + 1} request failed: ${err}`);
await sleep(options.sleep);
}
i++;
} while (i <= options.retry);
throw lastErr;
};
function sleep(milliseconds) {
return new Promise((resolve) => setTimeout(resolve, milliseconds));
}
module.exports = {
convertToJSON,
convertToFormData,
retry,
};

View File

@@ -1,10 +1,19 @@
'use strict'
const axios = require('axios');
const FormData = require('form-data')
const fs = require('fs')
const FormData = require('form-data');
const fs = require('fs');
const url = require('url');
const { GithubActions } = require('./githubActions');
const { convertToJSON, convertToFormData, retry } = require('./helper');
const METHOD_GET = 'GET'
const METHOD_POST = 'POST'
const HEADER_CONTENT_TYPE = 'Content-Type'
const CONTENT_TYPE_URLENCODED = 'application/x-www-form-urlencoded'
/**
* @param {Object} param0
* @param {string} param0.method HTTP Method
@@ -12,16 +21,22 @@ const METHOD_POST = 'POST'
* @param {string} param0.data Request Body as string, default {}
* @param {string} param0.files Map of Request Files (name: absolute path) as JSON String, default: {}
* @param {string} param0.file Single request file (absolute path)
* @param {*} param0.actions
* @param {number[]} param0.ignoredCodes Prevent Action to fail if the API response with one of this StatusCodes
* @param {boolean} param0.preventFailureOnNoResponse Prevent Action to fail if the API respond without Response
* @param {boolean} param0.escapeData Escape unescaped JSON content in data
* @param {GithubActions} param0.actions
* @param {{
* ignoredCodes: number[];
* preventFailureOnNoResponse: boolean,
* escapeData: boolean;
* retry: number;
* retryWait: number;
* }} param0.options
*
* @returns {void}
* @returns {Promise<axios.AxiosResponse>}
*/
const request = async({ method, instanceConfig, data, files, file, actions, ignoredCodes, preventFailureOnNoResponse, escapeData }) => {
const request = async({ method, instanceConfig, data, files, file, actions, options }) => {
actions.debug(`options: ${JSON.stringify(options)}`)
try {
if (escapeData) {
if (options.escapeData) {
data = data.replace(/"[^"]*"/g, (match) => {
return match.replace(/[\n\r]\s*/g, "\\n");
});
@@ -40,7 +55,7 @@ const request = async({ method, instanceConfig, data, files, file, actions, igno
data = convertToFormData(dataJson, filesJson)
instanceConfig = await updateConfig(instanceConfig, data, actions)
} catch(error) {
actions.setFailed({ message: `Unable to convert Data and Files into FormData: ${error.message}`, data: dataJson, files: filesJson })
actions.setFailed(JSON.stringify({ message: `Unable to convert Data and Files into FormData: ${error.message}`, data: dataJson, files: filesJson }))
return
}
}
@@ -52,6 +67,13 @@ const request = async({ method, instanceConfig, data, files, file, actions, igno
updateConfigForFile(instanceConfig, file, actions)
}
if (instanceConfig.headers[HEADER_CONTENT_TYPE] === CONTENT_TYPE_URLENCODED) {
let dataJson = convertToJSON(data)
if (typeof dataJson === 'object' && Object.keys(dataJson).length) {
data = (new url.URLSearchParams(dataJson)).toString();
}
}
const requestData = {
method,
data,
@@ -61,74 +83,68 @@ const request = async({ method, instanceConfig, data, files, file, actions, igno
actions.debug('Instance Configuration: ' + JSON.stringify(instanceConfig))
/** @type {axios.AxiosInstance} */
const instance = axios.create(instanceConfig);
actions.debug('Request Data: ' + JSON.stringify(requestData))
const response = await instance.request(requestData)
const execRequest = async () => {
try {
return await instance.request(requestData)
} catch(error) {
if (error.response && options.ignoredCodes.includes(error.response.status)) {
actions.warning(`ignored status code: ${JSON.stringify({ code: error.response.status, message: error.response.data })}`)
return null
}
if (!error.response && error.request && options.preventFailureOnNoResponse) {
actions.warning(`no response received: ${JSON.stringify(error)}`);
return null
}
throw error
}
}
/** @type {axios.AxiosResponse|null} */
const response = await retry(execRequest, {
actions,
retry: options.retry || 0,
sleep: options.retryWait // wait time after each retry
})
if (!response) {
return null
}
actions.setOutput('response', JSON.stringify(response.data))
actions.setOutput('headers', response.headers)
return response
} catch (error) {
if ((typeof error === 'object') && (error.isAxiosError === true)) {
const { name, message, code, response } = error
actions.setOutput('requestError', JSON.stringify({ name, message, code, status: response && response.status ? response.status : null }));
}
if (error.response && ignoredCodes.includes(error.response.status)) {
actions.warning(JSON.stringify({ code: error.response.status, message: error.response.data }))
} else if (error.response) {
if (error.response) {
actions.setFailed(JSON.stringify({ code: error.response.status, message: error.response.data }))
} else if (error.request && !preventFailureOnNoResponse) {
} else if (error.request) {
actions.setFailed(JSON.stringify({ error: "no response received" }));
} else if (error.request && preventFailureOnNoResponse) {
actions.warning(JSON.stringify(error));
} else {
actions.setFailed(JSON.stringify({ message: error.message, data }));
}
}
}
/**
* @param {string} value
*
* @returns {Object}
*/
const convertToJSON = (value) => {
try {
return JSON.parse(value) || {}
} catch(e) {
return {}
}
}
/**
* @param {Object} data
* @param {Object} files
*
* @returns {FormData}
*/
const convertToFormData = (data, files) => {
formData = new FormData()
for (const [key, value] of Object.entries(data)) {
formData.append(key, value)
}
for (const [key, value] of Object.entries(files)) {
formData.append(key, fs.createReadStream(value))
}
return formData
}
/**
* @param {{ baseURL: string; timeout: number; headers: { [name: string]: string } }} instanceConfig
* @param {FormData} formData
* @param {*} actions
*
* @returns {{ baseURL: string; timeout: number; headers: { [name: string]: string } }}
* @returns {Promise<{ baseURL: string; timeout: number; headers: { [name: string]: string } }>}
*/
const updateConfig = async (instanceConfig, formData, actions) => {
try {

View File

@@ -1,17 +1,20 @@
'use strict'
const core = require('@actions/core');
const axios = require('axios');
const https = require('https');
const { request, METHOD_POST } = require('./httpClient');
const { GithubActions } = require('./githubActions');
const { createPersistHandler } = require('./handler/persist');
let auth = undefined
let customHeaders = {}
if (!!core.getInput('customHeaders')) {
try {
customHeaders = JSON.parse(core.getInput('customHeaders'));
} catch(error) {
core.error('Could not parse customHeaders string value')
core.debug(`Invalid customHeaders string: ${core.getInput('customHeaders')}`)
core.error(`Could not parse customHeaders string value: ${error}`)
}
}
@@ -28,8 +31,12 @@ const instanceConfig = {
headers: { ...headers, ...customHeaders }
}
if (!!core.getInput('httpsCA')) {
instanceConfig.httpsAgent = new https.Agent({ ca: core.getInput('httpsCA') })
if (!!core.getInput('httpsCA') || !!core.getInput('httpsCert')) {
instanceConfig.httpsAgent = new https.Agent({
ca: core.getInput('httpsCA') || undefined,
cert: core.getInput('httpsCert') || undefined,
key: core.getInput('httpsKey') || undefined
})
}
if (!!core.getInput('username') || !!core.getInput('password')) {
@@ -41,18 +48,48 @@ if (!!core.getInput('username') || !!core.getInput('password')) {
}
}
let retry = 0
if (!!core.getInput('retry')) {
retry = parseInt(core.getInput('retry'))
}
let retryWait = 3000
if (!!core.getInput('retryWait')) {
retry = parseInt(core.getInput('retryWait'))
}
const data = core.getInput('data') || '{}';
const files = core.getInput('files') || '{}';
const file = core.getInput('file')
const responseFile = core.getInput('responseFile')
const method = core.getInput('method') || METHOD_POST;
const preventFailureOnNoResponse = core.getInput('preventFailureOnNoResponse') === 'true';
const escapeData = core.getInput('escapeData') === 'true';
const ignoreStatusCodes = core.getInput('ignoreStatusCodes')
let ignoredCodes = []
const ignoreStatusCodes = core.getInput('ignoreStatusCodes');
let ignoredCodes = [];
if (typeof ignoreStatusCodes === 'string' && ignoreStatusCodes.length > 0) {
ignoredCodes = ignoreStatusCodes.split(',').map(statusCode => parseInt(statusCode.trim()))
}
request({ data, method, instanceConfig, preventFailureOnNoResponse, escapeData, files, file, ignoredCodes, actions: new GithubActions() })
const handler = [];
const actions = new GithubActions();
if (!!responseFile) {
handler.push(createPersistHandler(responseFile, actions))
}
const options = {
ignoredCodes,
preventFailureOnNoResponse,
escapeData,
retry,
retryWait
}
request({ data, method, instanceConfig, files, file, actions, options }).then(response => {
if (typeof response == 'object') {
handler.forEach(h => h(response))
}
})