convert curl request in httparty - ruby-on-rails

how to convert below curl request in httparty
curl --noproxy localhost -k -d '{"username":"admin", "password":"adminpass"}' -H "Content-Type: application/json" https://localhost:8443/api/authentication

got it working
require "httparty"
options =
{
:http_proxyaddr => nil,
:headers => {"Content-Type" => "application/json"},
:verify => false,
:body => {"username":"admin", "password":"adminpass"}.to_json
}
response = HTTParty.post('https://localhost:8443/api/authentication', options)
puts response.body

Related

Using Rest Client to post a curl in rails

I want to traduce this curl into rest client sintax:
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/cards \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
"token_id":"tokgslwpdcrkhlgxqi9a",
"device_session_id":"8VIoXj0hN5dswYHQ9X1mVCiB72M7FY9o"
}'
The hash I already have it in a variable and the keys or id´s are static so I paste them wherever I need to. This is what I´ve done so far but it doesn't work:
response_hash=RestClient.post "https://sandbox-api.openpay.mx/v1/mdxnu1gfjwib8cmw1c7d/customers/#{current_user.customer_id}/cards \
-u sk_083fee2c29d94fad85d92c46cec26b5a:",
{params: request_hash},
content_type: :json, accept: :json
Can someone help me traduce it?
Try this:
begin
RestClient.post(
"https://sk_e568c42a6c384b7ab02cd47d2e407cab:#sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/cards",
{ token_id: 'tokgslwpdcrkhlgxqi9a', device_session_id: '8VIoXj0hN5dswYHQ9X1mVCiB72M7FY9o' }.to_json,
{ content_type: :json, accept: :json }
)
rescue RestClient::ExceptionWithResponse => e
# do something with e.response.body
end

Ruby Gem Rest-Client vs cURL, HTTP 415

I have a cURL call that works but when I translate it using the Ruby Gem rest-client I get:
RestClient::UnsupportedMediaType: 415 Unsupported Media Type
Here is the cURL I used that worked:
curl \
-X POST \
-H "Content-Type:application/json" \
-H "Authorization: Bearer MY_TOKEN" \
-H "Amazon-Advertising-API-Scope: MY_SCOPE" \
-d '{"campaignType":"sponsoredProducts","reportDate":"20161013","metrics":"impressions,clicks,cost"}' \
https://advertising-api.amazon.com/v1/productAds/report
Here is the Ruby that returns the HTTP 415 status:
yesterday = Date.today - 1
RestClient::Request.execute(
method: :post,
url: 'https://advertising-api.amazon.com/v1/productAds/report',
headers:
{
'Content-Type' => 'application/json',
'Authorization' => "Bearer #{ENV['AD_ACCESS_TOKEN']}",
'Amazon-Advertising-API-Scope' => ENV['AD_PROFILE_ID']
},
payload:
{
'campaignType' => 'sponsoredProducts',
'reportDate' => "#{yesterday.year}#{yesterday.month}#{yesterday.day}",
'metrics' => 'impressions,clicks,cost'
}
)
The payload hash needed to be converted to JSON.
...
payload:
{
...
}.to_json
...

Passing a curl argumet -T to rest-client

I have an API call for uploading a file and I came across -T option which does the same in curl call.
curl -X PUT "assetUrl" -H "authorization" -H
"x-amz-acl:amzAcl" -H "contentType" -H "x-amz-date:
amzDate" -T path/to/local/file
How can I pass that -T option to rest-client library?
Either of below should work fine
RestClient.post '/data', :myfile => File.new("/path/to/image.jpg",
'rb')
RestClient.post( url,
{
:transfer => {
:path => '/foo/bar',
:owner => 'that_guy',
:group => 'those_guys'
},
:upload => {
:file => File.new(path, 'rb')
}
})

Convert curl command to httparty

I am trying to add merge field in Mailchimp V3 list with HTTParty but not able to convert curl to HTTParty format.
Curl Request format which is working fine :
curl --request POST \
--url 'https://usxx.api.mailchimp.com/3.0/lists/17efad7sd4/merge-fields' \
--user '12:d1c1d99dr5000c63f0f73f64b88e852e-xx' \
--header 'content-type: application/json' \
--data '{"name":"FAVORITEJOKE", "type":"text"}' \
--include
Httparty format with error API key missing
response = HTTParty.post("https://us12.api.mailchimp.com/3.0/lists/17efad7sde/merge-fields",
:body => {
:user => '12:d1c1d99dr5000c63f0f73f64b88e852e-xx',
:data => '{"name":"FAVORITEJOKE", "type":"text"}',
:include => ''
}.to_json,
:headers => { 'Content-Type' => 'application/json' } )
I also try it without include option but not working
There are several errors in your code.
curl user is the basic auth user, but you are passing it in the payload of the request
data is the payload, instead you are passing it as a node in your payload and then you double serialize it
include makes no sense there, it's not a payload item
This should be the correct version. Please take a moment to read the HTTParty and curl documentation and understand the differences.
HTTParty.post(
"https://us12.api.mailchimp.com/3.0/lists/17efad7sde/merge-fields",
basic_auth: { username: "12", password: "d1c1d99dr5000c63f0f73f64b88e852e-xx" },
headers: { 'Content-Type' => 'application/json' },
body: {
name: "FAVORITEJOKE",
type: "text",
}.to_json
)

Convert Curl command line in Rails

This is my curl command which works nicely in Command line :
curl --data #order_new.json \
-H "X-Augury-Token:My_token_goes_here" \
-H "Content-Type:application/json" \
http://staging.hub.spreecommerce.com/api/stores/store_id_goes_here/messages
I need to implement the same in rails using any sort of Gem, Tried with HTTParty /rest_client / spree-api-client, but something wrong here :
require 'httparty'
result = HTTParty.post(
"http://staging.hub.spreecommerce.com/api/stores/52eb347f755b1c97e900001e/messages",
:body => JSON.parse(File.read("order_new.json")),
:header => {
"X-Augury-Token" => "UjjKsdxbrwjpAPx9Hiw4",
"Content-Type" => "application/json"
}
)
But I am getting Error,
"The page you were looking for doesn't exist (404)"
I need rails equivalent of above curl command, use of spree-api-client gem will be much helpful.
If you prefer to use the Spree::API::Client, could you post the results of your findings? Could you evaluate the output of the following commands and post back:
client = Spree::API::Client.new('http://staging.hub.spreecommerce.com/api/', 'UjjKsdxbrwjpAPx9Hiw4')
client.products.inspect
require 'httparty'
result = HTTParty.post(
"http://staging.hub.spreecommerce.com/api/stores/52eb347f755b1c97e900001e/messages",
:body => #order.to_json,
:header => {
"X-Augury-Token" => "UjjKsdxbrwjpAPx9Hiw4",
"Content-Type" => "application/json"
}
)
Don't parse json while passing to HTTParty body

Resources