| 134 | } |
| 135 | |
| 136 | protected beforeFetch(item: VConsoleNetworkRequestItem, input: RequestInfo, init?: RequestInit) { |
| 137 | let url: URL, |
| 138 | method = 'GET', |
| 139 | requestHeader: HeadersInit = null; |
| 140 | |
| 141 | // handle `input` content |
| 142 | if (tool.isString(input)) { // when `input` is a string |
| 143 | method = init?.method || 'GET'; |
| 144 | url = Helper.getURL(<string>input); |
| 145 | requestHeader = init?.headers || null; |
| 146 | } else { // when `input` is a `Request` object |
| 147 | method = (<Request>input).method || 'GET'; |
| 148 | url = Helper.getURL((<Request>input).url); |
| 149 | requestHeader = (<Request>input).headers; |
| 150 | } |
| 151 | |
| 152 | item.method = <VConsoleRequestMethod>method; |
| 153 | item.requestType = 'fetch'; |
| 154 | item.requestHeader = requestHeader; |
| 155 | item.url = url.toString(); |
| 156 | item.name = (url.pathname.split('/').pop() || '') + url.search; |
| 157 | item.status = 0; |
| 158 | item.statusText = 'Pending'; |
| 159 | item.readyState = 1; |
| 160 | if (!item.startTime) { // UNSENT |
| 161 | item.startTime = Date.now(); |
| 162 | const sd = tool.getDate(item.startTime); |
| 163 | item.startTimeText = `${sd.year}-${sd.month}-${sd.day} ${sd.hour}:${sd.minute}:${sd.second}.${sd.millisecond}`; |
| 164 | } |
| 165 | |
| 166 | if (Object.prototype.toString.call(requestHeader) === '[object Headers]') { |
| 167 | item.requestHeader = {}; |
| 168 | for (const [key, value] of <Headers>requestHeader) { |
| 169 | item.requestHeader[key] = value; |
| 170 | } |
| 171 | } else { |
| 172 | item.requestHeader = requestHeader; |
| 173 | } |
| 174 | |
| 175 | // save GET data |
| 176 | if (url.search && url.searchParams) { |
| 177 | item.getData = {}; |
| 178 | for (const [key, value] of url.searchParams) { |
| 179 | item.getData[key] = value; |
| 180 | } |
| 181 | } |
| 182 | |
| 183 | // save POST data |
| 184 | if (init?.body) { |
| 185 | item.postData = Helper.genFormattedBody(init.body); |
| 186 | } |
| 187 | |
| 188 | this.onUpdateCallback(item); |
| 189 | } |
| 190 | |
| 191 | protected afterFetch(item) { |
| 192 | const then = (resp: Response) => { |