Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

http_request.rb

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

http_request.rb

  • 1.1.14
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

== Introduction

The HttpRequest class is based on the 'net/http' and 'net/ftp' libraries, so the return type is Net::HTTPResponse or Net::FTP when you call get or post or other methods by HttpRequest.xxx or HttpRequest.ftp

== Options

you can call like HttpRequest.get(options), the options parameter is a hash, support following keys: :url => String, the url you want to request :parameters => String or Hash, parameters will send to the url :redirect => Boolean, whether support redirect to, default is true :redirect_limits => Fixnum, maximal times for redirect if enabled :ssl_port => Fixnum, ssl port, default is 443 :headers => Hash, you can add some custom http headers :files => for upload files :ajax or :xhr => send request looks like AJAX calling (since 1.0.5)

# proxy settings
:proxy_addr       =>   String, proxy address 
:proxy_port       =>   Fixnum, proxy port
:proxy_user       =>   String, proxy username
:proxy_pass       =>   String, proxy password

== Examples for your ruby program:

include http_request.rb first require '/path/to/http_request.rb' or install it gem install http_request.rb, then require 'http_request'

get puts HttpRequest.get('http://github.com').body puts HttpRequest.get('https://github.com').body

get with query string, 4 are same puts HttpRequest.get('http://www.google.com/search?hl=en&q=ruby&start=0&sa=N').body puts HttpRequest.get('http://www.google.com/search', :parameters => 'hl=en&q=ruby&start=0&sa=N').body puts HttpRequest.get(:url => 'http://www.google.com/search', :parameters => 'hl=en&q=ruby&start=0&sa=N').body puts HttpRequest.get({:url => 'http://www.google.com/search', :parameters => 'hl=en&q=ruby&start=0&sa=N'}).body puts HttpRequest.get({:url => 'http://www.google.com/search', :parameters => {:hl => 'en', :q => 'ruby', :start => 0, :sa => 'N'}}).body

post with some parameters puts HttpRequest.get('http://localhost/test.php', :parameters => 'from=http_request.rb').body puts HttpRequest.get(:url => 'http://localhost/test.php', :parameters => {:name => 'Ruby', :time => 'Now'}).body

also support other http methods, such as put, delete, trace, options, move etc. HttpRequest.put(:url => 'http://www.example.com', :parameters => 'some=vars') HttpRequest.delete('http://www.example.com/article/1') HttpRequest.trace('http://www.example.com/')

basic authorization HttpRequest.get('http://admin:pass@auth.cnzxh.net/secret/get/file')

proxy support HttpRequest.get(:url => 'http://www.example.com/', :proxy_addr => 'your.proxy.address', :proxy_port => 80) HttpRequest.get(:url => 'http://www.example.com/', :proxy_addr => 'your.proxy.address', :proxy_port => 80, :proxy_user => 'admin', :proxy_pass => '123123')

fetch headers HttpRequest.get('http://www.example.com/').each {|k, v| print "#{k} : #{v}" }

fetch cookies hr = HttpRequest.get('http://www.yahoo.com') hr.cookies.each {|k, v| puts "#{k} => #{v}" }

add cookies into header HttpRequest.get(:url => 'http://www.example.com/', :cookies => {:login => 'Yes', :userid => 101}) HttpRequest.get(:url => 'http://www.example.com/', :cookies => 'login=Yes; userId=101')

fetch cookies and add cookies hr = HttpRequest.get('http://www.example.com/homepage') hr = HttpRequest.post('http://www.example.com/login', :cookies => hr.cookies) hr = HttpRequest.get('http://www.example.com/logout', :cookies => hr.cookies)

store cookies with cookie jar (since v1.1.13) # default :cookie_jar is "default" hr1 = HttpRequest.post('http://hostname/request-cookies', :cookie_jar => 'user1') hr2 = HttpRequest.post('http://hostname/request-cookies', :cookie_jar => 'user2')

hr1 = HttpRequest.post('http://hostname/send-cookies', :cookie_jar => 'user1', :cookies => hr1.cookies)
hr2 = HttpRequest.post('http://hostname/send-cookies', :cookie_jar => 'user2', :cookies => hr2.cookies)

upload file by post method HttpRequest.post( :url => 'http://localhost/upload.php', :files => { :file_name => 'test.txt', # original file name, default is rand name such as 0cdex_0 :field_name => 'user_file', # input field name, default is "files[]" :content_type => 'text/plain', # content type, default is application/octet-stream :file_content => 'Have a nice day!' # file content } )

upload more than 1 file files = [ {:file_name => 'a.txt', :file_content => 'just for test'}, {:file_name => 'b.csv', :file_content => "a,b,c\nd,e,f"} ] HttpRequest.post( :url => 'http://localhost/upload.php', :files => files )

upload files with parameters HttpRequest.post( :url => 'http://localhost/upload.php', :parameters => {:name => 'zhou', :age => '?'}, :files => [{:file_content => 'so easy:-)'}] ) HttpRequest.post( :url => 'http://localhost/upload.php', :parameters => 'target=php&client=ruby', :files => [{:file_content => 'so easy:-)'}] )

want to upload a binary file such as photo? HttpRequest.post( :url => 'http://localhost/upload.php', :parameters => {:title => 'Nice photo', :description => 'some description here.'}, :files => [{:file_name => 'nice.jpg', :field_name => 'photo', :file_content => File.read('/path/to/nice.jpg')}] )

upload file by put method, more can check http://www.php.net/manual/en/features.file-upload.put-method.php HttpRequest.put( :url => 'http://localhost/upload.php', :parameters => 'file content here' )

== Examples in command line:

You need to do like "chmod +x http_request.rb" first. Usage: ./http_request.rb method url [parameters]

get a file and print the content $./http_request.rb get http://feeds.feedburner.com/RidingRails $./http_request.rb get 'http://www.google.com/search?hl=en&q=ruby&start=0&sa=N'

get but just print header $./http_request.rb get_only_header http://feeds.feedburner.com/RidingRails

get header and content $./http_request.rb get_with_header http://feeds.feedburner.com/RidingRails

download and save as a file $./http_request.rb http://rubyforge.org/frs/download.php/51094/RMagick-2.9.1.tar.bz2 > rmagick.tar.bz2

post $./http_request.rb post http://localhost/test.php 'name=Ruby&time=Now'

such as "get_only_header" and "get_with_header", post and other http methods also can do such as "post_only_header", "put_with_header" etc.

== Examples for FTP (since v1.0.1):

download and save to ftp = HttpRequest.ftp(:get, :url => 'ftp://user:pass@my.domain.name/path/to/hello.mp3', :to => '/tmp/hello.mp3')

# get as string (since v1.0.2)
puts HttpRequest.ftp(:get_as_string, 'ftp://user:pass@localhost/path/to/file.txt')

upload from local ftp = HttpRequest.ftp(:put, :url => 'ftp://user:pass@my.domain.name/path/to/hello.mp3', :from => '/tmp/hello.mp3')

get server info puts HttpRequest.ftp(:status, :url => 'ftp://user:pass@my.domain.name/')

create a new directory (only for last directory) HttpRequest.ftp(:mkdir, :url => 'ftp://user:pass@my.domain.name/path/to/newdir') HttpRequest.ftp(:mkdir, :url => 'ftp://user:pass@my.domain.name/newdir')

remove a directory (only for last directory) HttpRequest.ftp(:mkdir, :url => 'ftp://user:pass@my.domain.name/path/to/willbe_removed_dir')

list files puts HttpRequest.ftp(:list, :url => 'ftp://user:pass@my.domain.name/')

list files as array HttpRequest.ftp(:nlst, :url => 'ftp://my.domain.name/', :username => 'user', :password => 'pass').each {|f| puts f }

anonymous login puts HttpRequest.ftp(:status, :url => 'ftp://my.domain.name/')

working as the "net/ftp" style, need set :close to false ftp = HttpRequest.ftp(:status, :url => 'ftp://user:pass@my.domain.name/', :close => false) puts ftp.response # get status from the ftp server ftp.chdir('/musics') ftp.getbinaryfile('test.ogg', '/tmp/test.ogg') ftp.close

download multiple files from a directory ftp = HttpRequest.ftp('nlst', :url => 'ftp://user:pass@my.domain.name/mp3/', :close => false) ftp.response.each {|f| puts "downloading....#{f}" ftp.get(f, '/tmp/downloads/' + File.basename(f)) } ftp.close

== Proc.call style (since v1.0.2)

HttpRequest.get('http://www.example.com/') {|http|
  puts http.body
  http.each_header {|k, v| puts "#{k} => #{v}" }
  http.cookies.each {|k, v| puts "#{k} => #{v}" }
}

HttpRequest.ftp(:get, {"ftp://user:pass@localhost/soft.zip", :to => '/path/to/soft.zip'}) {|ftp|
   puts ftp.ls
   ftp.chdir('soft')
   ftp.getbinaryfile('ruby.exe', '/path/to/local/ruby.exe');
}

== check the http status (since v1.0.3)

HttpRequest.get('http://www.example.com/it_doesnot_exists.page').code_4xx? # true HttpRequest.get('http://www.example.com/it_doesnot_exists.page').code_404? # true HttpRequest.get('http://www.rubyonrails.com/').code_404? # false HttpRequest.head('http://www.rubyonrails.com/').code_2xx? # true HttpRequest.head('http://www.ruby-lang.org/').code_200? # true

supported methods: code_1xx? code_2xx? code_3xx? code_4xx? code_5xx? code_101? code_200? ... or status_1xx? statux_2xx? ...

== check whether or not the remote site is available (since v1.0.3)

return true if can access to the website with socket connection even it is a 500 or 404 page, otherwise, return false

HttpRequest.available?('http://www.github.com/')

== send XML data via the post method (since v1.0.4)

xml = ' item one item two ' HttpRequest.post(:url => 'http://localhost/xml.php', :parameters = xml)

== More examples please check the test directory

== TODO

bug fixing, testing and testing...

== LATEST VERSION 1.1.14

FAQs

Package last updated on 20 Dec 2012

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc