Alain Goldman
Alain Goldman

Reputation: 2908

Ruby: POST data to a url

In a rails app I want to be able to post some information to another website inside a method without visiting the website. I'm fairly new to the topic so act as if I’m 5 years old.

My idea so far:

def create_button
  button = {
    :name => 'test',
    :type => 'buy_now',
    :callback_url => 'http://www.example.com/my_custom_button_callback',
    :description => 'sample description',
    :include_email => true
  }
  "https://thesite.com/api/v1" + button.to_query
  # post logic here

end

Upvotes: 1

Views: 6001

Answers (3)

shweta
shweta

Reputation: 8169

Try: Net::HTTP

uri = URI.parse("https://thesite.com/api/v1")
button = {
 :name => 'test',
 :type => 'buy_now',
 :callback_url => 'http://www.example.com/my_custom_button_callback',
 :description => 'sample description',
 :include_email => true
}
res = Net::HTTP.post_form(uri,button)
res.code 
res.body  # response from api

Upvotes: 1

sunnyrjuneja
sunnyrjuneja

Reputation: 6123

There are a lots of gems that do this for free but if you only want to use the standard library, try something like this:

require "net/http"
require 'net/https'
require "uri"

uri = URI.parse("https://thesite.com/api/v1")
https = Net::HTTP.new(uri.host,uri.port)
https.use_ssl = true
req = Net::HTTP::Post.new(uri.path)

# I'm unsure if symbols will work
button = {
  "name" => 'test',
  "type" => 'buy_now',
  "callback_url" => 'http://www.example.com/my_custom_button_callback',
  "description"  => 'sample description',
  "include_email" => true
}
req.set_form_data(button)
res = https.request(req)

Upvotes: 1

Logan Serman
Logan Serman

Reputation: 29870

Ruby ships with the Net::HTTP library for making HTTP requests. There are a lot of gems that wrap HTTP as well, my favorite is Faraday. Look into those libraries, it is pretty straightforward how to make a POST request with them.

Upvotes: 1

Related Questions