twurl icon indicating copy to clipboard operation
twurl copied to clipboard

How do I post the json file using twurl?

Open selvipt opened this issue 5 years ago • 3 comments

I am getting The JSON string format is invalid error, When I tried to add the tailored audience user via JSON file. When I tried using the actual payload and it was successful. Does the twurl support file upload? I am expecting something similar the curl has the support like [curl -vX POST http://server/api/v1/places.json -d @testplace.json
--header "Content-Type: application/json"]

URL: twurl --header 'Content-Type: application/json' -X POST -H "https://ads-api.twitter.com" "/7/accounts/ddg12333/tailored_audiences/33444/users" -r "@/home/k/Downloads/2020-06-30_emails.json"

Response: { "errors": [ { "code": "INVALID", "message": "The JSON string format is invalid" } ], "request": [], "operation_errors": [] }

selvipt avatar Jul 14 '20 12:07 selvipt

The syntax here is not exactly the same as that used by curl (there's a good opportunity to improve the documentation here!).

As described in this forum post, you can try using a subshell to cat the file contents into your command using the -d option instead of -r

Trying something like

twurl --header 'Content-Type: application/json' -X POST -H "https://ads-api.twitter.com" "/7/accounts/ddg12333/tailored_audiences/33444/users" -d "$(/home/k/Downloads/2020-06-30_emails.json)"

andypiper avatar Jul 15 '20 11:07 andypiper

@andypiper I tried the above command still getting the same error

Command: twurl --header 'Content-Type: application/json' -X POST -H "https://ads-api.twitter.com" "/7/accounts/ddg12333/tailored_audiences/333444/users" -d "$(home/k/Downloads/2020-06-30-50K_emails.json)"

Response: {"errors":[{"code":"INVALID","message":"The JSON string format is invalid"}],"request":[],"operation_errors":[]

selvipt avatar Jul 15 '20 13:07 selvipt

I'm not sure it will work with a large file (if you have 50K emails there...) but I'm using zsh and was able to get the contents of a JSON file passed to the command using

-d "$(</home/myuser/file.json)"

If you add the -t option to the twurl command, can you see the contents of the file being picked up and passed to the command?

andypiper avatar Jul 15 '20 14:07 andypiper