Add ACTIONS_ORCHESTRATION_ID support to http-client user-agent
Co-authored-by: TingluoHuang <1750815+TingluoHuang@users.noreply.github.com>
This commit is contained in:
1 parent
5caed6375f
commit
06bfbce3a1
2 files changed
+40
-1
No files matched your search
@@ -374,4 +374,35 @@ describe('basics', () => {
|
|||||||
httpm.MediaTypes.ApplicationJson
|
httpm.MediaTypes.ApplicationJson
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('appends orchestration ID to user-agent when ACTIONS_ORCHESTRATION_ID is set', async () => {
|
||||||
|
const orchId = 'test-orch-id-12345'
|
||||||
|
process.env['ACTIONS_ORCHESTRATION_ID'] = orchId
|
||||||
|
|
||||||
|
const http: httpm.HttpClient = new httpm.HttpClient('http-client-tests')
|
||||||
|
const res: httpm.HttpClientResponse = await http.get(
|
||||||
|
'https://postman-echo.com/get'
|
||||||
|
)
|
||||||
|
expect(res.message.statusCode).toBe(200)
|
||||||
|
const body: string = await res.readBody()
|
||||||
|
const obj = JSON.parse(body)
|
||||||
|
expect(obj.headers['user-agent']).toBe(
|
||||||
|
`http-client-tests (gh_orch_id:${orchId})`
|
||||||
|
)
|
||||||
|
|
||||||
|
delete process.env['ACTIONS_ORCHESTRATION_ID']
|
||||||
|
})
|
||||||
|
|
||||||
|
it('does not modify user-agent when ACTIONS_ORCHESTRATION_ID is not set', async () => {
|
||||||
|
delete process.env['ACTIONS_ORCHESTRATION_ID']
|
||||||
|
|
||||||
|
const http: httpm.HttpClient = new httpm.HttpClient('http-client-tests')
|
||||||
|
const res: httpm.HttpClientResponse = await http.get(
|
||||||
|
'https://postman-echo.com/get'
|
||||||
|
)
|
||||||
|
expect(res.message.statusCode).toBe(200)
|
||||||
|
const body: string = await res.readBody()
|
||||||
|
const obj = JSON.parse(body)
|
||||||
|
expect(obj.headers['user-agent']).toBe('http-client-tests')
|
||||||
|
})
|
||||||
})
|
})
|
||||||
+9
-1
@@ -599,7 +599,7 @@ export class HttpClient {
|
|||||||
info.options.method = method
|
info.options.method = method
|
||||||
info.options.headers = this._mergeHeaders(headers)
|
info.options.headers = this._mergeHeaders(headers)
|
||||||
if (this.userAgent != null) {
|
if (this.userAgent != null) {
|
||||||
info.options.headers['user-agent'] = this.userAgent
|
info.options.headers['user-agent'] = this._getUserAgentWithOrchestrationId(this.userAgent)
|
||||||
}
|
}
|
||||||
|
|
||||||
info.options.agent = this._getAgent(info.parsedUrl)
|
info.options.agent = this._getAgent(info.parsedUrl)
|
||||||
@@ -816,6 +816,14 @@ export class HttpClient {
|
|||||||
return proxyAgent
|
return proxyAgent
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private _getUserAgentWithOrchestrationId(userAgent: string): string {
|
||||||
|
const orchId = process.env['ACTIONS_ORCHESTRATION_ID']
|
||||||
|
if (orchId) {
|
||||||
|
return `${userAgent} (gh_orch_id:${orchId})`
|
||||||
|
}
|
||||||
|
return userAgent
|
||||||
|
}
|
||||||
|
|
||||||
private async _performExponentialBackoff(retryNumber: number): Promise<void> {
|
private async _performExponentialBackoff(retryNumber: number): Promise<void> {
|
||||||
retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber)
|
retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber)
|
||||||
const ms: number = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber)
|
const ms: number = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber)
|
||||||
|
|||||||
Reference in new issue
Block a user