()
| 151 | this.parseObj.method = 'GET' |
| 152 | } |
| 153 | parseCurl() { |
| 154 | const result = this.parseObj |
| 155 | // 零宽空格(zero-width space) 需要去除掉 |
| 156 | this.curlStr = this.curlStr.replace(/\u200B/g, '') |
| 157 | const args = rewrite(split(this.curlStr)) |
| 158 | let state = '' |
| 159 | args.forEach((arg: string) => { |
| 160 | switch (true) { |
| 161 | case isURL(arg): |
| 162 | this.parseObj.url = arg |
| 163 | this.parseObj.query = parseUrl2QueryParams(arg) |
| 164 | break |
| 165 | |
| 166 | case arg === '-A' || arg === '--user-agent': |
| 167 | state = 'user-agent' |
| 168 | break |
| 169 | |
| 170 | case arg === '-H' || arg === '--header': |
| 171 | state = 'header' |
| 172 | break |
| 173 | |
| 174 | // 请求体 |
| 175 | case ['-d', '--data', '--data-ascii', '--data-raw', '--data-binary', '--data-urlencode'].includes(arg): |
| 176 | state = 'data' |
| 177 | break |
| 178 | |
| 179 | case arg === '-u' || arg === '--user': |
| 180 | state = 'user' |
| 181 | break |
| 182 | |
| 183 | case arg === '-I' || arg === '--head': |
| 184 | result.method = 'HEAD' |
| 185 | break |
| 186 | |
| 187 | case arg === '-X' || arg === '--request': |
| 188 | state = 'method' |
| 189 | break |
| 190 | |
| 191 | case arg === '-b' || arg === '--cookie': |
| 192 | state = 'cookie' |
| 193 | break |
| 194 | |
| 195 | case arg === '--compressed': |
| 196 | result.headers['Accept-Encoding'] = result.headers['Accept-Encoding'] || 'deflate, gzip' |
| 197 | break |
| 198 | |
| 199 | /** |
| 200 | * State handler |
| 201 | */ |
| 202 | case !!arg: |
| 203 | switch (state) { |
| 204 | case 'header': { |
| 205 | const field = parseField(arg) |
| 206 | result.headers[field[0]] = field[1] |
| 207 | state = '' |
| 208 | break |
| 209 | } |
| 210 | case 'user-agent': |
no test coverage detected