http-requestor 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -2,28 +2,52 @@
2
2
 
3
3
  A Wrapper around Net/HTTP which allows you to perform HTTP Requests in a simple way.
4
4
 
5
- = Usage
6
-
7
- http = HttpRequestor.new("http://www.mydomain.com") # This will initialize the HttpRequestor class
8
-
9
- [Sending Calls to the initialized domain] response = http.get("/get_path")
10
-
11
- response = http.post("/post_path")
12
-
13
- response = http.put("/put_path")
14
-
15
- response = http.delete("/delete_path")
16
-
17
- The above methods also accept optional parameters, for
18
-
19
- * Parameters to be sent to the request
20
- * Headers to be sent to the request
21
-
22
- [Alternatively you can also use the method] HttpRequestor.request
23
-
24
- which takes the paramters in order
25
- * domain #=> for example: "http://www.some_domain.com"
26
- * request_type #=> GET|POST|PUT|DELETE
27
- * path #=> for example: "/some_path"
28
- * parameters #=> this is an optional parameter, if you want to send some parameters alongwith the request, you can pass a hash with
29
- * headers #=> this is also an optional parameter, you can pass a hash with stringified keys
5
+ == Installation
6
+
7
+ gem install http-requestor
8
+
9
+ == Usage
10
+
11
+
12
+ === Initialize a domain, and send request to multiple paths
13
+
14
+ http = HttpRequestor.new("http://www.mydomain.com")
15
+ # This will initialize the HttpRequestor class
16
+
17
+ get_request = http.get(path, parameters, headers)
18
+ post_request = http.post(path, parameters, headers)
19
+ put_request = http.put(path, parameters, headers)
20
+ delete_request = http.delete(path, parameters, headers)
21
+
22
+ # path => for example: "/some_path"
23
+ # parameters => this is an optional parameter, if you want to send some parameters alongwith the request, you can pass a hash with
24
+ # headers => this is also an optional parameter, you can pass a hash with stringified keys
25
+
26
+ === Get a response right away
27
+
28
+ HttpRequestor.request(domain, request_type, path, parameters, headers)
29
+ # domain => for example: "http://www.some_domain.com"
30
+ # request_type => GET|POST|PUT|DELETE
31
+ # path => for example: "/some_path"
32
+ # parameters => this is an optional parameter, if you want to send some parameters alongwith the request, you can pass a hash with
33
+ # headers => this is also an optional parameter, you can pass a hash with stringified keys
34
+
35
+ OR you can do it the other way
36
+
37
+ HttpRequestor.request_with_url(url, request_type, data, headers)
38
+ # url => for example: "http://www.some_domain.com/some_path_value"
39
+ # request_type => GET|POST|PUT|DELETE
40
+ # parameters => this is an optional parameter, if you want to send some parameters alongwith the request, you can pass a hash with
41
+ # headers => this is also an optional parameter, you can pass a hash with stringified keys
42
+
43
+ === HTTP Basic Authentication
44
+
45
+ HttpRequestor.send_basic_auth_request(url, username, password)
46
+ # url => for example: "http://www.some_domain.com/some_path_value" only GET URL's supported currently
47
+ # username => basic_auth_username
48
+ # password => basic_auth_password
49
+
50
+ == Issues and Suggestions
51
+
52
+ Please report all the issues in the Github Issues Page, suggestions are also welcome.
53
+ You can also mail me at rohit0981989[at]gmail[dot]com for the same.
@@ -3,8 +3,12 @@ require "net/https"
3
3
  require "uri"
4
4
 
5
5
  class HttpRequestor
6
- def initialize(domain)
6
+
7
+ #============== Instance Methods ===================
8
+
9
+ def initialize(domain, options={})
7
10
  raise InvalidURISchemeException, "Please send a valid URI scheme." if domain.match(/(http|https):\/\//).nil?
11
+
8
12
  @defaults = {:domain => domain}
9
13
  uri = URI.parse(@defaults[:domain])
10
14
  if uri.scheme == "http"
@@ -16,7 +20,8 @@ class HttpRequestor
16
20
  end
17
21
  end
18
22
 
19
- def get(path,data="",headers=nil)
23
+ def get(path,data={},headers=nil)
24
+ data = data_to_query(data)
20
25
  if headers == nil
21
26
  response = @http.send_request('GET',path,data)
22
27
  else
@@ -25,7 +30,8 @@ class HttpRequestor
25
30
  response
26
31
  end
27
32
 
28
- def post(path,data="",headers=nil)
33
+ def post(path,data={},headers=nil)
34
+ data = data_to_query(data)
29
35
  if headers == nil
30
36
  response = @http.send_request('POST',path,data)
31
37
  else
@@ -34,7 +40,8 @@ class HttpRequestor
34
40
  response
35
41
  end
36
42
 
37
- def put(path,data="",headers=nil)
43
+ def put(path,data={},headers=nil)
44
+ data = data_to_query(data)
38
45
  if headers == nil
39
46
  response = @http.send_request('PUT',path,data)
40
47
  else
@@ -43,7 +50,8 @@ class HttpRequestor
43
50
  response
44
51
  end
45
52
 
46
- def delete(path,data="",headers=nil)
53
+ def delete(path,data={},headers=nil)
54
+ data = data_to_query(data)
47
55
  if headers == nil
48
56
  response = @http.send_request('DELETE',path,data)
49
57
  else
@@ -51,12 +59,16 @@ class HttpRequestor
51
59
  end
52
60
  response
53
61
  end
62
+
63
+ def data_to_query(data)
64
+ return (data.nil? || data.empty?) ? "" : data.to_query
65
+ end
54
66
 
55
- def self.request(domain, request_type, request_path, data="", headers={})
67
+ #============== Class Methods ===================
68
+ def self.request(domain, request_type, request_path, data={}, headers={})
56
69
  request_type.upcase!
57
70
  raise InvalidRequestTypeException, "Please pass a valid request type." unless valid_request_types.include?(request_type)
58
71
  req = HttpRequestor.new(domain)
59
- data = data.empty? ? "" : data.to_query
60
72
  if request_type == "GET"
61
73
  return req.get(request_path, data, headers)
62
74
  elsif request_type == "POST"
@@ -67,12 +79,27 @@ class HttpRequestor
67
79
  return req.delete(request_path, data, headers)
68
80
  end
69
81
  end
82
+
83
+ def self.request_with_url(url, request_type, data={}, headers={})
84
+ uri = URI.parse(url)
85
+ return self.request("#{uri.scheme}://#{uri.host}:#{uri.port}", request_type, uri.request_uri, data, headers)
86
+ end
87
+
88
+ def self.send_basic_auth_request(url, username, password)
89
+ uri = URI.parse(url)
90
+
91
+ http = Net::HTTP.new(uri.host, uri.port)
92
+ request = Net::HTTP::Get.new(uri.request_uri)
93
+ request.basic_auth(username, password)
94
+ http.request(request)
95
+ end
70
96
 
71
97
  def self.valid_request_types
72
98
  ["GET", "POST", "UPDATE", "DELETE"]
73
99
  end
74
100
  end
75
101
 
102
+ #================ ActiveSupport Like object#to_query methods =========================
76
103
  class Hash
77
104
  def to_query(namespace = nil)
78
105
  collect do |key, value|
@@ -99,6 +126,7 @@ class String
99
126
  end
100
127
  end
101
128
 
129
+ #================= Exceptions ======================
102
130
  class InvalidRequestTypeException < Exception
103
131
  end
104
132
 
@@ -11,7 +11,7 @@ class HttpRequestorTest < Test::Unit::TestCase
11
11
  assert_nothing_raised(InvalidURISchemeException) { HttpRequestor.new("http://www.google.com") }
12
12
  assert_nothing_raised(InvalidURISchemeException) { HttpRequestor.new("https://www.yahoo.com") }
13
13
  end
14
-
14
+
15
15
  def test_should_raise_error_on_invalid_request_type
16
16
  assert_raise(InvalidRequestTypeException) { HttpRequestor.request("http://en.wikibooks.org", "OPTIONS", "/wiki/Ruby_Programming/Unit_testing#A_Simple_Introduction") }
17
17
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: http-requestor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-25 00:00:00.000000000Z
12
+ date: 2012-09-27 00:00:00.000000000Z
13
13
  dependencies: []
14
14
  description: A Wrapper around Net/HTTP which allows you to perform HTTP Requests.
15
15
  email: rohit0981989@gmail.com