MCPcopy Create free account
hub / github.com/deta/surf / register

Method register

app/src/main/webRequestManager.ts:28–104  ·  view source on GitHub ↗
(session: Electron.Session)

Source from the content-addressed store, hash-verified

26 private headersReceived = new Map<Electron.Session, HeadersReceivedCallback[]>()
27
28 register(session: Electron.Session) {
29 if (this.beforeRequest.has(session)) return
30
31 this.beforeRequest.set(session, [])
32 this.beforeSendHeaders.set(session, [])
33 this.headersReceived.set(session, [])
34
35 session.webRequest.onBeforeRequest((details, callback) => {
36 const handlers = this.beforeRequest.get(session)!
37 if (handlers.length === 0) return callback({})
38
39 let response = {}
40 for (const handler of handlers) {
41 handler(details, (res) => {
42 response = { ...response, ...res }
43 if (res.cancel || res.redirectURL) return
44 })
45 }
46 callback(response)
47 })
48
49 session.webRequest.onBeforeSendHeaders((details, callback) => {
50 const handlers = this.beforeSendHeaders.get(session)!
51 if (handlers.length === 0) return callback({})
52
53 const currentDetails = { ...details }
54 const response: Electron.BeforeSendResponse = {
55 requestHeaders: details.requestHeaders ? { ...details.requestHeaders } : {}
56 }
57
58 for (const handler of handlers) {
59 handler(currentDetails, (res) => {
60 if (res.requestHeaders) {
61 response.requestHeaders = { ...response.requestHeaders, ...res.requestHeaders }
62 }
63 response.cancel = res.cancel || response.cancel
64 if (currentDetails.requestHeaders && response.requestHeaders) {
65 currentDetails.requestHeaders = Object.fromEntries(
66 Object.entries(response.requestHeaders).map(([k, v]) => [k, [v].flat().join(' ')])
67 )
68 }
69 })
70 if (response.cancel) break
71 }
72 callback(response)
73 })
74
75 session.webRequest.onHeadersReceived((details, callback) => {
76 const handlers = this.headersReceived.get(session)!
77 if (handlers.length === 0) return callback({})
78
79 const currentDetails = { ...details }
80 const response: Electron.HeadersReceivedResponse = {
81 responseHeaders: details.responseHeaders ? { ...details.responseHeaders } : {}
82 }
83
84 for (const handler of handlers) {
85 handler(currentDetails, (res) => {

Callers 4

addBeforeRequestMethod · 0.95
addBeforeSendHeadersMethod · 0.95
addHeadersReceivedMethod · 0.95
registerShortcutsFunction · 0.45

Calls 3

hasMethod · 0.80
entriesMethod · 0.80
getMethod · 0.65

Tested by

no test coverage detected