mirror of https://github.com/actions/toolkit
takost/addfetchmethod
parent
6d37c6eb2b
commit
9f29c14937
|
@ -1,6 +1,7 @@
|
|||
import * as http from 'http'
|
||||
import * as https from 'https'
|
||||
import { createProxy } from 'proxy'
|
||||
import { ProxyServer, createProxy } from "proxy";
|
||||
import { ProxyAgent, fetch as undiciFetch } from "undici";
|
||||
|
||||
// Default values are set when the module is imported, so we need to set proxy first.
|
||||
const proxyUrl = 'http://127.0.0.1:8081'
|
||||
|
@ -22,7 +23,7 @@ describe('@actions/github', () => {
|
|||
proxyServer.listen(port, () => resolve())
|
||||
})
|
||||
proxyServer.on('connect', req => {
|
||||
console.log('connect', req.url)
|
||||
console.log("Connect to proxy server")
|
||||
proxyConnects.push(req.url ?? '')
|
||||
})
|
||||
})
|
||||
|
@ -49,7 +50,23 @@ describe('@actions/github', () => {
|
|||
return
|
||||
}
|
||||
|
||||
const octokit = getOctokit(token)
|
||||
const myFetch: typeof undiciFetch = (url, opts) => {
|
||||
return undiciFetch(url, {
|
||||
...opts,
|
||||
dispatcher: new ProxyAgent({
|
||||
uri: proxyUrl,
|
||||
keepAliveTimeout: 10,
|
||||
keepAliveMaxTimeout: 10,
|
||||
}),
|
||||
});
|
||||
};
|
||||
|
||||
const octokit = getOctokit(token, {
|
||||
request: {
|
||||
fetch: myFetch
|
||||
}
|
||||
})
|
||||
|
||||
const branch = await octokit.rest.repos.getBranch({
|
||||
owner: 'actions',
|
||||
repo: 'toolkit',
|
||||
|
@ -65,7 +82,22 @@ describe('@actions/github', () => {
|
|||
return
|
||||
}
|
||||
process.env['https_proxy'] = proxyUrl
|
||||
const octokit = getOctokit(token)
|
||||
const myFetch: typeof undiciFetch = (url, opts) => {
|
||||
return undiciFetch(url, {
|
||||
...opts,
|
||||
dispatcher: new ProxyAgent({
|
||||
uri: proxyUrl,
|
||||
keepAliveTimeout: 10,
|
||||
keepAliveMaxTimeout: 10,
|
||||
}),
|
||||
});
|
||||
};
|
||||
|
||||
const octokit = getOctokit(token, {
|
||||
request: {
|
||||
fetch: myFetch
|
||||
}
|
||||
})
|
||||
|
||||
const repository = await octokit.graphql(
|
||||
'{repository(owner:"actions", name:"toolkit"){name}}'
|
||||
|
|
|
@ -12,7 +12,8 @@
|
|||
"@actions/http-client": "^2.1.1",
|
||||
"@octokit/core": "^4.2.4",
|
||||
"@octokit/plugin-paginate-rest": "^6.1.2",
|
||||
"@octokit/plugin-rest-endpoint-methods": "^7.2.3"
|
||||
"@octokit/plugin-rest-endpoint-methods": "^7.2.3",
|
||||
"undici": "^5.25.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/proxy": "^1.0.1",
|
||||
|
@ -215,6 +216,17 @@
|
|||
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.1.tgz",
|
||||
"integrity": "sha512-/6FKxSTWoJdbsLDF8tdIjaRiFXiE6UHsEHE3OPI/cwPURCVi1ukP0gmLn7XWEiFk5TcwQjjY5PWsU+j+tgXgmw=="
|
||||
},
|
||||
"node_modules/busboy": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
|
||||
"integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
|
||||
"dependencies": {
|
||||
"streamsearch": "^1.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.16.0"
|
||||
}
|
||||
},
|
||||
"node_modules/camelcase": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz",
|
||||
|
@ -366,6 +378,14 @@
|
|||
"node": ">= 14"
|
||||
}
|
||||
},
|
||||
"node_modules/streamsearch": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
|
||||
"integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/supports-color": {
|
||||
"version": "5.5.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
||||
|
@ -391,6 +411,17 @@
|
|||
"node": ">=0.6.11 <=0.7.0 || >=0.7.3"
|
||||
}
|
||||
},
|
||||
"node_modules/undici": {
|
||||
"version": "5.25.1",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-5.25.1.tgz",
|
||||
"integrity": "sha512-nTw6b2G2OqP6btYPyghCgV4hSwjJlL/78FMJatVLCa3otj6PCOQSt6dVtYt82OtNqFz8XsnJ+vsXLADPXjPhqw==",
|
||||
"dependencies": {
|
||||
"busboy": "^1.6.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0"
|
||||
}
|
||||
},
|
||||
"node_modules/universal-user-agent": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
|
||||
|
@ -579,6 +610,14 @@
|
|||
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.1.tgz",
|
||||
"integrity": "sha512-/6FKxSTWoJdbsLDF8tdIjaRiFXiE6UHsEHE3OPI/cwPURCVi1ukP0gmLn7XWEiFk5TcwQjjY5PWsU+j+tgXgmw=="
|
||||
},
|
||||
"busboy": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
|
||||
"integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
|
||||
"requires": {
|
||||
"streamsearch": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"camelcase": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz",
|
||||
|
@ -687,6 +726,11 @@
|
|||
"debug": "^4.3.4"
|
||||
}
|
||||
},
|
||||
"streamsearch": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
|
||||
"integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg=="
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "5.5.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
||||
|
@ -706,6 +750,14 @@
|
|||
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
|
||||
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg=="
|
||||
},
|
||||
"undici": {
|
||||
"version": "5.25.1",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-5.25.1.tgz",
|
||||
"integrity": "sha512-nTw6b2G2OqP6btYPyghCgV4hSwjJlL/78FMJatVLCa3otj6PCOQSt6dVtYt82OtNqFz8XsnJ+vsXLADPXjPhqw==",
|
||||
"requires": {
|
||||
"busboy": "^1.6.0"
|
||||
}
|
||||
},
|
||||
"universal-user-agent": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
|
||||
|
|
|
@ -41,7 +41,8 @@
|
|||
"@actions/http-client": "^2.1.1",
|
||||
"@octokit/core": "^4.2.4",
|
||||
"@octokit/plugin-paginate-rest": "^6.1.2",
|
||||
"@octokit/plugin-rest-endpoint-methods": "^7.2.3"
|
||||
"@octokit/plugin-rest-endpoint-methods": "^7.2.3",
|
||||
"undici": "^5.25.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/proxy": "^1.0.1",
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
import * as http from 'http'
|
||||
import * as httpClient from '@actions/http-client'
|
||||
import {OctokitOptions} from '@octokit/core/dist-types/types'
|
||||
import { ProxyServer, createProxy } from "proxy";
|
||||
import { ProxyAgent, fetch as undiciFetch } from "undici";
|
||||
|
||||
export function getAuthString(
|
||||
token: string,
|
||||
|
@ -20,6 +22,20 @@ export function getProxyAgent(destinationUrl: string): http.Agent {
|
|||
return hc.getAgent(destinationUrl)
|
||||
}
|
||||
|
||||
export function getProxyFetchAgent(destinationUrl): any {
|
||||
const myFetch: typeof undiciFetch = (url, opts) => {
|
||||
return undiciFetch(url, {
|
||||
...opts,
|
||||
dispatcher: new ProxyAgent({
|
||||
uri: destinationUrl,
|
||||
keepAliveTimeout: 10,
|
||||
keepAliveMaxTimeout: 10,
|
||||
}),
|
||||
});
|
||||
};
|
||||
return myFetch;
|
||||
}
|
||||
|
||||
export function getApiBaseUrl(): string {
|
||||
return process.env['GITHUB_API_URL'] || 'https://api.github.com'
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ const baseUrl = Utils.getApiBaseUrl()
|
|||
export const defaults: OctokitOptions = {
|
||||
baseUrl,
|
||||
request: {
|
||||
agent: Utils.getProxyAgent(baseUrl)
|
||||
fetch: Utils.getProxyFetchAgent(baseUrl)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue