A simple url object to allow for object oriented based manipulation and usage of a url. It works with Typhoeus if it detects it’s installed or defaults back to Net::HTTP.
You can easily extract or change any part of the url
url = URL.new('https://mail.google.com/mail/?shva=1#mbox') url.params # => {:shva => '1'} url.scheme # => 'https' url.host # => 'mail.google.com' url.domain # => 'google.com' url.subdomain # => ['mail'] url.path # => '/mail/' url.hash # => 'mbox' url.subdomain = ['my','mail'] url.params[:foo] = 'bar' url.to_s # => 'https://my.mail.google.com/mail/?foo=bar&shva=1#mbox'
You can quickly and easily make requests from those urls without having to worry about whether they’re https or not.
url = URL.new('https://graph.facebook.com/37901410') response = url.get response # => "{"id":"37901410","name":"Tal Atlas","first_name":"Tal","last_name":"Atlas","link":"http:\\/\\/www.facebook.com\\/talatlas","gender":"male","locale":"en_US"}"
A {URL::Response} object is returned from {URL#post}, {URL#get}, or {URL#delete}. This is basically a string with a few additional methods including:
The time the request took in seconds The http code of the response and whether the request was successful or not (code == 2xx).
response.time # => 1.6 response.code # => 200 response.success? # => true
You can make GET, POST, or DELETE requests without doing any special formatting.
url.path << '/feed' url.params[:access_token] = '.....' url.params[:message] = "Hey I'm posting this message with ruby" json = url.post post_id = magic_method(json) url.path = "/#{post_id}" url.params.delete(:message) url.delete
If you’ve initialized the Yajl, JSON, or Active Service gems you can call .json on any response object.
url = URL.new('https://graph.facebook.com/37901410') url.get.json # => => {"name"=>"Tal Atlas", "gender"=>"male", "id"=>"37901410", "last_name"=>"Atlas", "locale"=>"en_US", "link"=>"http://www.facebook.com/talatlas", "first_name"=>"Tal"}
Make objects designed around specific urls
class FacebookURL < URL('http://www.facebook.com/__test_me__/foo/__test_again__') allow_changed :subdomain allow_params :foo, :bar end
This will create a FacebookURL object where you can only change the subdomain, the params foo and bar, and the parts of the paths tagged test_me and test_again. This object has the getters and setters: subdomain, foo, bar, test_me, and test_again. You can then call .to_s, .get, .post, or .delete.
The object has an instance variable defined as @url which is a url object you can manipulate.
-
Fast Dup method
-
More Documentation
-
More specs
-
Make faster
-
JSON support
-
More robust subdomain/path methods
-
Fork the project.
-
Make your feature addition or bug fix.
-
Add tests for it. This is important so I don’t break it in a future version unintentionally.
-
Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
-
Send me a pull request. Bonus points for topic branches.
Copyright © 2010 Tal Atlas. See LICENSE for details.