Skip to content

Commit 7c38950

Browse files
schicklingwebpolis
authored andcommitted
Merge pull request schickling#325 from addnab/master
Allow setting of `headers`
2 parents 02c6fd0 + 745dc25 commit 7c38950

File tree

6 files changed

+51
-8
lines changed

6 files changed

+51
-8
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ const chromeless = new Chromeless({
157157
- [`scrollTo(x: number, y: number)`](docs/api.md#api-scrollto)
158158
- [`scrollToElement(selector: string)`](docs/api.md#api-scrolltoelement)
159159
- [`setHtml(html: string)`](docs/api.md#api-sethtml)
160+
- [`setExtraHTTPHeaders(headers: Headers)`](docs/api.md#api-setextrahttpheaders)
160161
- [`setViewport(options: DeviceMetrics)`](docs/api.md#api-setviewport)
161162
- [`evaluate<U extends any>(fn: (...args: any[]) => void, ...args: any[])`](docs/api.md#api-evaluate)
162163
- [`inputValue(selector: string)`](docs/api.md#api-inputvalue)

docs/api.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,26 @@ __Example__
376376
await chromeless.setHtml('<h1>Hello world!</h1>')
377377
```
378378

379+
---------------------------------------
380+
381+
<a name="api-setextrahttpheaders" />
382+
383+
### setExtraHTTPHeaders(headers: Headers): Chromeless<T>
384+
385+
Sets extra HTTP headers.
386+
387+
__Arguments__
388+
- `headers` - headers as keys / values of JSON object
389+
390+
__Example__
391+
392+
```js
393+
await chromeless.setExtraHTTPHeaders({
394+
'accept-language': 'en-US,en;q=0.8'
395+
})
396+
```
397+
398+
379399
---------------------------------------
380400

381401
<a name="api-setviewport" />

src/api.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import ChromeRemote from './chrome/remote'
33
import Queue from './queue'
44
import {
55
ChromelessOptions,
6+
Headers,
67
Cookie,
78
CookieQuery,
89
PdfOptions,
@@ -199,6 +200,12 @@ export default class Chromeless<T extends any> implements Promise<T> {
199200
return this
200201
}
201202

203+
setExtraHTTPHeaders(headers: Headers): Chromeless<T> {
204+
this.queue.enqueue({ type: 'setExtraHTTPHeaders', headers })
205+
206+
return this
207+
}
208+
202209
evaluate<U extends any>(
203210
fn: (...args: any[]) => void,
204211
...args: any[]

src/chrome/local-runtime.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {
33
Client,
44
Command,
55
ChromelessOptions,
6+
Headers,
67
Cookie,
78
CookieQuery,
89
PdfOptions,
@@ -22,6 +23,7 @@ import {
2223
scrollTo,
2324
scrollToElement,
2425
setHtml,
26+
setExtraHTTPHeaders,
2527
press,
2628
setViewport,
2729
clearCookies,
@@ -101,6 +103,8 @@ export default class LocalRuntime {
101103
return this.clearCookies()
102104
case 'setHtml':
103105
return this.setHtml(command.html)
106+
case 'setExtraHTTPHeaders':
107+
return this.setExtraHTTPHeaders(command.headers)
104108
case 'cookies':
105109
return this.cookies(command.nameOrQuery)
106110
case 'allCookies':
@@ -346,6 +350,10 @@ export default class LocalRuntime {
346350
return await getAllCookies(this.client)
347351
}
348352

353+
async setExtraHTTPHeaders(headers: Headers): Promise<void> {
354+
return await setExtraHTTPHeaders(this.client, headers)
355+
}
356+
349357
async setCookies(
350358
nameOrCookies: string | Cookie | Cookie[],
351359
value?: string,

src/types.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,10 @@ export type Command =
132132
type: 'setHtml'
133133
html: string
134134
}
135+
| {
136+
type: 'setExtraHTTPHeaders'
137+
headers: Headers
138+
}
135139
| {
136140
type: 'press'
137141
keyCode: number
@@ -189,6 +193,8 @@ export type Command =
189193
files: string[]
190194
}
191195

196+
export type Headers = Record<string, string>
197+
192198
export interface Cookie {
193199
url?: string
194200
domain?: string

src/util.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,7 @@ import * as fs from 'fs'
22
import * as os from 'os'
33
import * as path from 'path'
44
import * as cuid from 'cuid'
5-
import {
6-
Client,
7-
Cookie,
8-
DeviceMetrics,
9-
PdfOptions,
10-
BoxModel,
11-
Viewport,
12-
} from './types'
5+
import { Client, Cookie, DeviceMetrics, PdfOptions, BoxModel, Viewport, Headers } from './types'
136
import * as CDP from 'chrome-remote-interface'
147
import * as AWS from 'aws-sdk'
158

@@ -370,6 +363,14 @@ export async function setCookies(
370363
}
371364
}
372365

366+
export async function setExtraHTTPHeaders(
367+
client: Client,
368+
headers: Headers,
369+
): Promise<void> {
370+
const { Network } = client
371+
await Network.setExtraHTTPHeaders({ headers })
372+
}
373+
373374
export async function mousedown(
374375
client: Client,
375376
selector: string,

0 commit comments

Comments
 (0)