Curl on Ruby on Rails
Just in case you don't know, it requires 'net/http'
require 'net/http'uri = URI.parse("http://example.org")# Shortcut#response = Net::HTTP.post_form(uri, {"user[name]" => "testusername", "user[email]" => "testemail@yahoo.com"})# Full controlhttp = Net::HTTP.new(uri.host, uri.port)request = Net::HTTP::Post.new(uri.request_uri)request.set_form_data({"user[name]" => "testusername", "user[email]" => "testemail@yahoo.com"})response = http.request(request)render :json => response.body
Hope it'll helps others.. :)
Here is a curl to ruby's net/http converter: https://jhawthorn.github.io/curl-to-ruby/
For instance, a curl -v www.google.com
command is equivalent in Ruby to:
require 'net/http'require 'uri'uri = URI.parse("http://www.google.com")response = Net::HTTP.get_response(uri)# response.code# response.body
The most basic example of what you are trying to do is to execute this with backticks like this
`curl -d 'params1[name]=name¶ms2[email]' 'http://mydomain.com/file.json'`
However this returns a string, which you would have to parse if you wanted to know anything about the reply from the server.
Depending on your situation I would recommend using Faraday. https://github.com/lostisland/faraday
The examples on the site are straight forward. Install the gem, require it, and do something like this:
conn = Faraday.new(:url => 'http://mydomain.com') do |faraday| faraday.request :url_encoded # form-encode POST params faraday.response :logger # log requests to STDOUT faraday.adapter Faraday.default_adapter # make requests with Net::HTTPendconn.post '/file.json', { :params1 => {:name => 'name'}, :params2 => {:email => nil} }
The post body will automatically be turned into a url encoded form string.But you can just post a string as well.
conn.post '/file.json', 'params1[name]=name¶ms2[email]'