ez_http 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. data/README.md +11 -4
  2. data/ez_http.gemspec +15 -9
  3. data/lib/ez_http.rb +54 -22
  4. metadata +5 -3
data/README.md CHANGED
@@ -3,17 +3,24 @@
3
3
  A helper wrapper around net/http, supports http/https(with/without certificate), post/get requests, one method call does everything.
4
4
 
5
5
  ## How to use it
6
- response = EZHttp.Send("https://www.example.com:83/api", "post", {"key1"=>"value1"}, "application/json", nil)
6
+
7
+ # default it will send a post request to specified url with the hash object as json
8
+ response = EZHttp.Send("https://www.example.com:83/api", {"key1"=>"value1"})
9
+ # or
10
+ response = EZHttp.Send("https://www.example.com:83/api", {"key1"=>"value1"}, "post", "application/json")
11
+ # or with certificate
12
+ response = EZHttp.Send("https://www.example.com:83/api", {"key1"=>"value1"}, "post", "application/json", "/path_to_cert.pem")
13
+
7
14
  puts response.body
8
15
 
9
16
  ## Installation
10
17
 
11
- Add the following line to your "Gemfile"
12
- gem "ez_http"
18
+ Add the following line to your "Gemfile"
19
+ gem "ez_http"
13
20
  then execute bundle install
14
21
 
15
22
  See here for more details:
16
- RubyGem: [http://rubygems.org/gems/ez_http](http://rubygems.org/gems/ez_htt "EZHttp RubyGem Page")
23
+ [http://rubygems.org/gems/ez_http](http://rubygems.org/gems/ez_htt "EZHttp RubyGem Page")
17
24
 
18
25
  ## Author
19
26
 
data/ez_http.gemspec CHANGED
@@ -1,15 +1,21 @@
1
1
  Gem::Specification.new do |s|
2
- s.name = 'ez_http'
3
- s.version = '1.0.1'
2
+
3
+ # Basic info
4
+ s.name = "ez_http"
5
+ s.version = "1.0.2"
4
6
  s.platform = Gem::Platform::RUBY
5
- s.date = '2012-03-30'
7
+ s.date = "2012-04-04"
6
8
  s.summary = "Make http/https request easier"
7
9
  s.description = "A helper wrapper around net/http, supports http/https(with/without certificate), post/get requests, one method call does everything."
8
10
  s.authors = ["Tianyu Huang"]
9
- s.email = 'tianhsky@yahoo.com'
10
- s.files = `git ls-files`.split("\n")
11
- s.homepage = 'http://rubygems.org/gems/ez_http'
12
- s.extra_rdoc_files = ["doc/index.html"]
11
+ s.email = ["tianhsky@yahoo.com"]
12
+ s.homepage = "http://rubygems.org/gems/ez_http"
13
+
14
+ # Dependencies
15
+ # s.required_rubygems_version = ">= 1.3.6"
13
16
 
14
- #s.required_rubygems_version = ">= 1.3.6"
15
- end
17
+ # Files
18
+ s.files = `git ls-files`.split("\n")
19
+ s.extra_rdoc_files = ["README.md", "doc/index.html"]
20
+
21
+ end
data/lib/ez_http.rb CHANGED
@@ -4,7 +4,12 @@ require "openssl"
4
4
 
5
5
  # A helper wrapper around net/http, supports http/https(with/without certificate), post/get requests, one method call does everything.
6
6
  # How to use:
7
- # response = EZHttp.Send("https://www.example.com:83/api", "post", {"key1"=>"value1"}, "application/json", nil)
7
+ # response = EZHttp.Send("https://www.example.com:83/api", {"key1"=>"value1"})
8
+ # or
9
+ # response = EZHttp.Send("https://www.example.com:83/api", {"key1"=>"value1"}, "post", "application/json")
10
+ # or
11
+ # response = EZHttp.Send("https://www.example.com:83/api", {"key1"=>"value1"}, "post", "application/json", "/path_to_cert.pem")
12
+ #
8
13
  # puts response.body
9
14
  #
10
15
  # @author Tianyu Huang [tianhsky@yahoo.com]
@@ -13,48 +18,75 @@ module EZHttp
13
18
 
14
19
  # Send request to specified url and will return responses
15
20
  # @param [String] url: to send request to
16
- # @param [String] method: is "get" or "post", if nil default is "post"
17
21
  # @param [Hash] data: to send
22
+ # @param [String] method: can be "get"/"post"/"delete"/"put", if nil default is "post"
18
23
  # @param [String] content_type: if nil default is "application/json"
19
24
  # @param [String] cert_path: to the certificate file, set nil if none
20
25
  # @return [Net::HTTPResponse] response from remote server, example to access its fields: response.body, response.status
21
26
  #
22
- def self.Send(url, method, data, content_type, cert_path)
23
- # Parse url
24
- uri = URI.parse(url)
25
- http = Net::HTTP.new(uri.host, uri.port)
27
+ def self.Send(url, data, method="post", content_type="application/json", cert_path=nil)
28
+
29
+ # Hack to make it compatible with version <= 1.0.1
30
+ unless (method.class.to_s == "String")
31
+ if (method.respond_to?("merge"))
32
+ temp_data = method
33
+ method = data
34
+ data = temp_data
35
+ end
36
+ end
37
+
26
38
 
27
- if (url.match(/^https/))
28
- http.use_ssl = true
39
+ # Parse url
40
+ begin
41
+ uri = URI.parse(url)
42
+ http = Net::HTTP.new(uri.host, uri.port)
43
+ if (url.match(/^https/))
44
+ http.use_ssl = true
45
+ end
46
+ rescue
47
+ throw "Error in url"
29
48
  end
30
49
 
31
- # Create request obj
32
- request = nil
33
50
 
34
- method = method || "post"
35
- case method.downcase
51
+ # Create request
52
+ begin
53
+ method = method || "post"
54
+ case method.downcase
36
55
  when "post"
37
56
  request = Net::HTTP::Post.new(uri.request_uri)
38
57
  when "get"
39
58
  request = Net::HTTP::Get.new(uri.request_uri)
59
+ when "put"
60
+ request = Net::HTTP::Put.new(uri.request_uri)
61
+ when "delete"
62
+ request = Net::HTTP::Delete.new(uri.request_uri)
40
63
  else
41
64
  request = Net::HTTP::Post.new(uri.request_uri)
65
+ end
66
+
67
+ request.set_form_data(data)
68
+ request["Content-Type"] = content_type || "application/json"
69
+ rescue
70
+ throw "Error in creating request"
42
71
  end
43
72
 
44
- request.set_form_data(data)
45
- request["Content-Type"] = content_type || "application/json"
46
73
 
47
74
  # Add cert if any
48
- if (cert_path.nil?)
49
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
50
- else
51
- http.use_ssl = true
52
- pem = File.read(cert_path)
53
- http.cert = OpenSSL::X509::Certificate.new(pem)
54
- http.key = OpenSSL::PKey::RSA.new(pem)
55
- http.verify_mode = OpenSSL::SSL::VERIFY_PEER
75
+ begin
76
+ if (cert_path.nil?)
77
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
78
+ else
79
+ http.use_ssl = true
80
+ pem = File.read(cert_path)
81
+ http.cert = OpenSSL::X509::Certificate.new(pem)
82
+ http.key = OpenSSL::PKey::RSA.new(pem)
83
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
84
+ end
85
+ rescue
86
+ throw "Error in creating certificate"
56
87
  end
57
88
 
89
+
58
90
  # Send request and return response
59
91
  response = http.request(request)
60
92
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ez_http
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,14 +9,16 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-30 00:00:00.000000000 Z
12
+ date: 2012-04-04 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: A helper wrapper around net/http, supports http/https(with/without certificate),
15
15
  post/get requests, one method call does everything.
16
- email: tianhsky@yahoo.com
16
+ email:
17
+ - tianhsky@yahoo.com
17
18
  executables: []
18
19
  extensions: []
19
20
  extra_rdoc_files:
21
+ - README.md
20
22
  - doc/index.html
21
23
  files:
22
24
  - .gitignore