Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[bug]: Import cUrl failed #3967

Open
1 task done
AlexNeAuto opened this issue Apr 8, 2024 · 4 comments
Open
1 task done

[bug]: Import cUrl failed #3967

AlexNeAuto opened this issue Apr 8, 2024 · 4 comments
Labels
bug Something isn't working need testing Needs to be tested before merging onto production

Comments

@AlexNeAuto
Copy link

AlexNeAuto commented Apr 8, 2024

Is there an existing issue for this?

  • I have searched the existing issues

Current behavior

When i try to import cUrl with escape symbols
curl -X POST 'https://example.com' -H "User-Agent: loadmill/v9.92.0" -H "content-type: application/json" -d "{ \"API_KEY\": \"api_key\", \"API_SECRET\": \"secret\", \"Device\": {\"id\": \"1234567890\"} ,\"messageIds\": [\"message_1234567890\"], \"action\": \"accept\", \"raw\": \"{ \\\"test\\\": \\\"test\\\"}\" }"
i've doesn't get any error message, but if i cover safeParseJSOn function from ImportCurl component by try catch the error message is

Screenshot 2024-04-08 at 17 14 13
Error SyntaxError: Unterminated string in JSON at position 173 (line 1 column 174)
    at JSON.parse (<anonymous>)
    at json.ts:17:25
    at Module.tryCatch (chunk-7GXFONRI.js?v=4d8dafc1:400:18)
    at safeParseJSON (json.ts:15:5)
    at chunk-N5YTPUBR.js?v=4d8dafc1:144:25
    at parseBody (contentParser.ts:192:21)
    at body.ts:46:11
    at chunk-7GXFONRI.js?v=4d8dafc1:222:25
    at chunk-N5YTPUBR.js?v=4d8dafc1:259:19
    at pipe (chunk-N5YTPUBR.js?v=4d8dafc1:212:14)

I guess the problem is somewhere in FE side, it's serialized string again and i got something like this:
"curl -X POST 'https://example.com' -H \"User-Agent: loadmill/v9.92.0\" -H \"content-type: application/json\" -d \"{ \\\"API_KEY\\\": \\\"api_key\\\", \\\"API_SECRET\\\": \\\"secret\\\", \\\"Device\\\": {\\\"id\\\": \\\"1234567890\\\"} ,\\\"messageIds\\\": [\\\"message_1234567890\\\"], \\\"action\\\": \\\"accept\\\", \\\"raw\\\": \\\"{ \\\\\\\"test\\\\\\\": \\\\\\\"test\\\\\\\"}\\\" }\""

Steps to reproduce

Import cUrl
curl -X POST 'https://example.com' -H "User-Agent: loadmill/v9.92.0" -H "content-type: application/json" -d "{ \"API_KEY\": \"api_key\", \"API_SECRET\": \"secret\", \"Device\": {\"id\": \"1234567890\"} ,\"messageIds\": [\"message_1234567890\"], \"action\": \"accept\", \"raw\": \"{ \\\"test\\\": \\\"test\\\"}\" }"

Environment

Production

Version

Self-hosted

@AlexNeAuto AlexNeAuto added bug Something isn't working need testing Needs to be tested before merging onto production labels Apr 8, 2024
@shipko
Copy link
Contributor

shipko commented Apr 11, 2024

Hi!
I confirmed this bug. Also I can add another failed use case.

curl -X POST 'http://example.com:30101/api?external_postprocessing=true' -F 'images=@"/C:/test2.png"' -F 'metadata="{\"application\": \"app\", \"sessionId\": \"559b9fad-5dd2-4bd8-a071-6f07b7bbb7b3\"}";type=application/json'

Parameter metadata is not imported as json object, because not to checked type args.

@AlexNeAuto
Copy link
Author

@shipko is there will be any actions from the team about this issue?

@liyasthomas
Copy link
Member

We'll get this issue fixed in the next immediate release candidate. Could you subscribe to this issue thread to get notified once the fix is live?

Meanwhile, if anyone would like to try this, feel free to open up a PR.

@shipko
Copy link
Contributor

shipko commented Apr 17, 2024

@liyasthomas
I want to try fix this issue. But when I started a solving the problem I noticed that the problem lies in the yargs-parser/browser library.
After parse @AlexNeAuto curl command I get
"{ \"API_KEY\": \"api_key\", \"API_SECRET\": \"secret\", \"Device\": {\"id\": \"1234567890\"} ,\"messageIds\": [\"message_1234567890\"], \"action\": \"accept\", \"raw\": \"{ value of d parameter.

Also we have another failed curl command:
curl -X POST 'http://example.com:30101/api?external_postprocessing=true' -F 'images=@"/C:/test2.png"' -F 'metadata="{\"application\": \"app\", \"sessionId\": \"559b9fad-5dd2-4bd8-a071-6f07b7bbb7b3\"}";type=application/json'

And another issue #3901

I think this library is not suitable for us. A curl contains a lot of arguments with subtle logic, you can't just parse the arguments here.

Maybe we should start looking for an alternative library?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working need testing Needs to be tested before merging onto production
Projects
None yet
Development

No branches or pull requests

3 participants