nifty-utils 1.1.4 → 1.1.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7861fedc957d1694081a793e3ae68e3098336ed6
4
- data.tar.gz: 08fcbd00f993d4af6416692a985e63a2fb70238d
3
+ metadata.gz: 4cd572d9cee5d232284ee6891b65d54322cc6e97
4
+ data.tar.gz: af7c8916f38893ca045c5fa08f68e3f282b1a973
5
5
  SHA512:
6
- metadata.gz: 0fe3ac954656f74a573d227b550f303b0a01c57b0b39d02678c84e2f8d3598bbcbfc4fdb68abcc6fdcd0375453c3237a9546ad68ce3c00ea2a32783d9edbb4aa
7
- data.tar.gz: 981b1c35bd0579fdd43d4e588ac45e9d7e56f6d19ed82c7a088acf2e0d0a43e03e8612a080fb7ddd3954d38c4196658b2c31c1e10e7a8807a4ce03a7298736d9
6
+ metadata.gz: 7dc0e5e08d837e9fc8bd9f41ab1f07d7d75b4cde6b113b08cfeca24154159cb94db5c35541fdeb5feaffc52e8c5528726a357309478725cd2693ff92cc01e00f
7
+ data.tar.gz: a40ba6cb5fc8cbb38508df409c6df1e748301f47ee93c37dc7609db300baf431b21a33a576aac1c4f2f23f3b23171fe30eda15f861970550f9d29e37a848c98a
@@ -0,0 +1,72 @@
1
+ require 'net/https'
2
+ require 'uri'
3
+
4
+ module Nifty
5
+ module Utils
6
+ module HTTP
7
+
8
+ def self.get(url, options = {})
9
+ request(Net::HTTP::Get, url, options)
10
+ end
11
+
12
+ def self.post(url, options = {})
13
+ request(Net::HTTP::Post, url, options)
14
+ end
15
+
16
+ def self.request(method, url, options = {})
17
+ options[:headers] ||= {}
18
+ uri = URI.parse(url)
19
+ request = method.new(uri.path.length == 0 ? "/" : uri.path)
20
+ options[:headers].each { |k,v| request.add_field k, v }
21
+
22
+ if options[:username]
23
+ request.basic_auth(options[:username], options[:password])
24
+ end
25
+
26
+ if options[:params].is_a?(Hash)
27
+ # If params has been provided, sent it them as form encoded values
28
+ request.set_form_data(options[:params])
29
+
30
+ elsif options[:json].is_a?(String)
31
+ # If we have a JSON string, set the content type and body to be the JSON
32
+ # data
33
+ request.add_field 'Content-Type', 'application/json'
34
+ request.body = options[:json]
35
+ end
36
+
37
+ if options[:user_agent]
38
+ request['User-Agent'] = options[:user_agent]
39
+ end
40
+
41
+ connection = Net::HTTP.new(uri.host, uri.port)
42
+
43
+ if uri.scheme == 'https'
44
+ connection.use_ssl = true
45
+ connection.verify_mode = OpenSSL::SSL::VERIFY_PEER
46
+ end
47
+
48
+ begin
49
+ timeout = options[:timeout] || 60
50
+ Timeout.timeout(timeout) do
51
+ result = connection.request(request)
52
+ {
53
+ :code => result.code.to_i,
54
+ :body => result.body
55
+ }
56
+ end
57
+ rescue SocketError, Errno::ECONNRESET, EOFError, Errno::EINVAL => e
58
+ {
59
+ :code => -2,
60
+ :body => e.message
61
+ }
62
+ rescue Timeout::Error => e
63
+ {
64
+ :code => -1,
65
+ :body => "Timed out after #{timeout}s"
66
+ }
67
+ end
68
+ end
69
+
70
+ end
71
+ end
72
+ end
@@ -1,5 +1,5 @@
1
1
  module Nifty
2
2
  module Utils
3
- VERSION = '1.1.4'
3
+ VERSION = '1.1.5'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nifty-utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.4
4
+ version: 1.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Cooke
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-09 00:00:00.000000000 Z
11
+ date: 2015-05-14 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A set of useful utilties for Rails applications.
14
14
  email:
@@ -25,6 +25,7 @@ files:
25
25
  - lib/nifty/utils/extensions/core.rb
26
26
  - lib/nifty/utils/extensions/object.rb
27
27
  - lib/nifty/utils/extensions/string.rb
28
+ - lib/nifty/utils/http.rb
28
29
  - lib/nifty/utils/networks.rb
29
30
  - lib/nifty/utils/railtie.rb
30
31
  - lib/nifty/utils/random_string.rb
@@ -57,3 +58,4 @@ signing_key:
57
58
  specification_version: 4
58
59
  summary: A collection of functions which expand upon ActiveRecord and ActionView.
59
60
  test_files: []
61
+ has_rdoc: