MCPcopy Create free account
hub / github.com/APIParkLab/APIPark / parseCurl

Method parseCurl

frontend/packages/common/src/utils/curl.ts:153–250  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

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':

Callers 1

constructorMethod · 0.95

Calls 5

rewriteFunction · 0.85
splitFunction · 0.85
isURLFunction · 0.85
parseUrl2QueryParamsFunction · 0.85
parseFieldFunction · 0.85

Tested by

no test coverage detected