moesif_unirest 1.1.4

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 28968cd5012a5c282924eeecc27a37a1d514137371dbf3cecaca08a5da470457
4
+ data.tar.gz: 635b928a41248f99dae50b1192ee8e2c02454fdedf65a8872fa123489d408655
5
+ SHA512:
6
+ metadata.gz: a703291640be82fbf4e279982f5ef9ceb4a449cefe24937ca7feb462eefe624dac425d48c574332801b9e7c7a424717089171950c3eded93ed49a498f8dde777
7
+ data.tar.gz: 6184175c1ce0186f9878aa6c03e80d53e606b404b846538272128eb5af602091fa6e01231b53a9b36da79475d7a58badb1ee0af937c1719f969e524a2be80607
data/.editorconfig ADDED
@@ -0,0 +1,16 @@
1
+ # http://editorconfig.org
2
+ root = true
3
+
4
+ [*]
5
+ indent_style = space
6
+ indent_size = 4
7
+ end_of_line = lf
8
+ charset = utf-8
9
+ trim_trailing_whitespace = true
10
+ insert_final_newline = true
11
+
12
+ [*.yml]
13
+ indent_size = 2
14
+
15
+ [*.{md,yml}]
16
+ trim_trailing_whitespace = false
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ .DS_Store
2
+ *.gem
data/.travis.yml ADDED
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License
2
+
3
+ Copyright (c) 2013-2015 Mashape (https://www.mashape.com)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,174 @@
1
+ # Unirest for Ruby [![Build Status][travis-image]][travis-url] [![version][gem-version]][gem-url]
2
+
3
+ [![License][license-image]][license-url]
4
+ [![Downloads][gem-downloads]][gem-url]
5
+ [![Code Climate][codeclimate-quality]][codeclimate-url]
6
+ [![Gitter][gitter-image]][gitter-url]
7
+
8
+ ![][unirest-logo]
9
+
10
+
11
+ [Unirest](http://unirest.io) is a set of lightweight HTTP libraries available in multiple languages, built and maintained by [Mashape](https://github.com/Mashape), who also maintain the open-source API Gateway [Kong](https://github.com/Mashape/kong).
12
+
13
+ ## Features
14
+
15
+ * Make `GET`, `POST`, `PUT`, `PATCH`, `DELETE` requests
16
+ * Both syncronous and asynchronous (non-blocking) requests
17
+ * Supports form parameters, file uploads and custom body entities
18
+ * Supports gzip
19
+ * Supports Basic Authentication natively
20
+ * Customizable timeout
21
+ * Customizable default headers for every request (DRY)
22
+ * Automatic JSON parsing into a native object for JSON responses
23
+
24
+ ## Installing
25
+
26
+ Requirements: **Ruby >= 2.0**
27
+
28
+ To utilize unirest, install the `unirest` gem:
29
+
30
+ ```bash
31
+ gem install unirest
32
+ ```
33
+
34
+ After installing the gem package you can now begin to simplifying requests by requiring `unirest`:
35
+
36
+ ```ruby
37
+ require 'unirest'
38
+ ```
39
+
40
+ ## Creating Requests
41
+
42
+ So you're probably wondering how using Unirest makes creating requests in Ruby easier, let's start with a working example:
43
+
44
+ ```ruby
45
+ response = Unirest.post "http://httpbin.org/post",
46
+ headers:{ "Accept" => "application/json" },
47
+ parameters:{ :age => 23, :foo => "bar" }
48
+
49
+ response.code # Status code
50
+ response.headers # Response headers
51
+ response.body # Parsed body
52
+ response.raw_body # Unparsed body
53
+ ```
54
+
55
+ ## Asynchronous Requests
56
+ Unirest-Ruby also supports asynchronous requests with a callback function specified inside a block, like:
57
+
58
+ ```ruby
59
+ response = Unirest.post "http://httpbin.org/post",
60
+ headers:{ "Accept" => "application/json" },
61
+ parameters:{ :age => 23, :foo => "bar" } {|response|
62
+ response.code # Status code
63
+ response.headers # Response headers
64
+ response.body # Parsed body
65
+ response.raw_body # Unparsed body
66
+ }
67
+ ```
68
+
69
+ ## File Uploads
70
+ ```ruby
71
+ response = Unirest.post "http://httpbin.org/post",
72
+ headers:{ "Accept" => "application/json" },
73
+ parameters:{ :age => 23, :file => File.new("/path/to/file", 'rb') }
74
+ ```
75
+
76
+ ## Custom Entity Body
77
+ ```ruby
78
+ response = Unirest.post "http://httpbin.org/post",
79
+ headers:{ "Accept" => "application/json" },
80
+ parameters:{ :age => "value", :foo => "bar" }.to_json # Converting the Hash to a JSON string
81
+ ```
82
+
83
+ ### Basic Authentication
84
+
85
+ Authenticating the request with basic authentication can be done by providing an `auth` Hash with `:user` and `:password` keys like:
86
+
87
+ ```ruby
88
+ response = Unirest.get "http://httpbin.org/get", auth:{:user=>"username", :password=>"password"}
89
+ ```
90
+
91
+ # Request
92
+ ```ruby
93
+ Unirest.get(url, headers: {}, parameters: nil, auth:nil, &callback)
94
+ Unirest.post(url, headers: {}, parameters: nil, auth:nil, &callback)
95
+ Unirest.delete(url, headers: {}, parameters: nil, auth:nil, &callback)
96
+ Unirest.put(url, headers: {}, parameters: nil, auth:nil, &callback)
97
+ Unirest.patch(url, headers: {}, parameters: nil, auth:nil, &callback)
98
+ ```
99
+
100
+ - `url` (`String`) - Endpoint, address, or uri to be acted upon and requested information from.
101
+ - `headers` (`Object`) - Request Headers as associative array or object
102
+ - `parameters` (`Array` | `Object` | `String`) - Request Body associative array or object
103
+ - `callback` (`Function`) - _Optional_; Asychronous callback method to be invoked upon result.
104
+
105
+ # Response
106
+ Upon receiving a response Unirest returns the result in the form of an Object, this object should always have the same keys for each language regarding to the response details.
107
+
108
+ - `code` - HTTP Response Status Code (Example `200`)
109
+ - `headers` - HTTP Response Headers
110
+ - `body` - Parsed response body where applicable, for example JSON responses are parsed to Objects / Associative Arrays.
111
+ - `raw_body` - Un-parsed response body
112
+
113
+ # Advanced Configuration
114
+
115
+ You can set some advanced configuration to tune Unirest-Ruby:
116
+
117
+ ### Timeout
118
+
119
+ You can set a custom timeout value (in **seconds**):
120
+
121
+ ```ruby
122
+ Unirest.timeout(5) # 5s timeout
123
+ ```
124
+
125
+ ### Default Request Headers
126
+
127
+ You can set default headers that will be sent on every request:
128
+
129
+ ```ruby
130
+ Unirest.default_header('Header1','Value1')
131
+ Unirest.default_header('Header2','Value2')
132
+ ```
133
+
134
+ You can clear the default headers anytime with:
135
+
136
+ ```ruby
137
+ Unirest.clear_default_headers()
138
+ ```
139
+
140
+ ### User-Agent
141
+
142
+ The default User-Agent string is `unirest-ruby/1.1`. You can customize
143
+ it like this:
144
+
145
+ ```ruby
146
+ Unirest.user_agent("custom_user_agent")
147
+ ```
148
+
149
+ ----
150
+
151
+ Made with ♥ from the [Mashape](https://www.mashape.com/) team
152
+
153
+ [unirest-logo]: http://cl.ly/image/2P373Y090s2O/Image%202015-10-12%20at%209.48.06%20PM.png
154
+
155
+
156
+ [license-url]: https://github.com/Mashape/unirest-ruby/blob/master/LICENSE
157
+ [license-image]: https://img.shields.io/badge/license-MIT-blue.svg?style=flat
158
+
159
+ [gitter-url]: https://gitter.im/Mashape/unirest-ruby
160
+ [gitter-image]: https://img.shields.io/badge/Gitter-Join%20Chat-blue.svg?style=flat
161
+
162
+ [travis-url]: https://travis-ci.org/Mashape/unirest-ruby
163
+ [travis-image]: https://img.shields.io/travis/Mashape/unirest-ruby.svg?style=flat
164
+
165
+ [gem-url]: https://rubygems.org/gems/unirest
166
+ [gem-version]: https://img.shields.io/gem/v/unirest.svg?style=flat
167
+ [gem-downloads]: https://img.shields.io/gem/dt/unirest.svg?style=flat
168
+
169
+ [codeclimate-url]: https://codeclimate.com/github/Mashape/unirest-ruby
170
+ [codeclimate-quality]: https://img.shields.io/codeclimate/github/Mashape/unirest-ruby.svg?style=flat
171
+ [codeclimate-coverage]: https://img.shields.io/codeclimate/coverage/github/Mashape/unirest-ruby.svg?style=flat
172
+
173
+ [versioneye-url]: https://www.versioneye.com/user/projects/x
174
+ [versioneye-image]: https://img.shields.io/versioneye/d/user/projects/x.svg?style=flat
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require 'rake/testtask'
2
+
3
+ desc "Run all tests in folder test/*_test.rb"
4
+ Rake::TestTask.new do |t|
5
+ t.libs << "test"
6
+ t.test_files = FileList['test/*_test.rb']
7
+ t.verbose = true
8
+ end
9
+
10
+ task :default => :test
@@ -0,0 +1,89 @@
1
+ # The MIT License
2
+ #
3
+ # Copyright (c) 2013 Mashape (http://mashape.com)
4
+
5
+ # Permission is hereby granted, free of charge, to any person obtaining
6
+ # a copy of this software and associated documentation files (the
7
+ # "Software"), to deal in the Software without restriction, including
8
+ # without limitation the rights to use, copy, modify, merge, publish,
9
+ # distribute, sublicense, and/or sell copies of the Software, and to
10
+ # permit persons to whom the Software is furnished to do so, subject to
11
+ # the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be
14
+ # included in all copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+ #
24
+
25
+ require 'addressable/uri'
26
+ require "base64"
27
+
28
+ module Unirest
29
+
30
+ class HttpRequest
31
+ attr_reader :method
32
+ attr_reader :url
33
+ attr_reader :headers
34
+ attr_reader :body
35
+ attr_reader :auth
36
+
37
+ def add_header(name, value)
38
+ @headers[name] = value
39
+ end
40
+
41
+ def initialize(method, url, headers = {}, body = nil, auth = nil)
42
+ @method = method
43
+
44
+ if method == :get
45
+ if body.is_a?(Hash) && body.length > 0
46
+ if url.include? "?"
47
+ url += "&"
48
+ else
49
+ url += "?"
50
+ end
51
+
52
+ uri = Addressable::URI.new
53
+ uri.query_values = body
54
+ url += uri.query
55
+ end
56
+ else
57
+ @body = body
58
+ end
59
+
60
+ unless url =~ URI.regexp
61
+ raise "Invalid URL: #{url}"
62
+ end
63
+
64
+ @url = url.gsub /\s+/, '%20'
65
+
66
+ @headers = {}
67
+
68
+ if auth != nil && auth.is_a?(Hash)
69
+ user = ""
70
+ password = ""
71
+ if auth[:user] != nil
72
+ user = auth[:user]
73
+ end
74
+ if auth[:password] != nil
75
+ password = auth[:password]
76
+ end
77
+
78
+ headers['Authorization'] = "Basic #{["#{user}:#{password}"].pack('m').delete("\r\n")}"
79
+
80
+ end
81
+
82
+
83
+ # Make the header key lowercase
84
+ headers.each_pair {|key, value| @headers[key.downcase] = value }
85
+ end
86
+
87
+ end
88
+
89
+ end
@@ -0,0 +1,50 @@
1
+ # The MIT License
2
+ #
3
+ # Copyright (c) 2013 Mashape (http://mashape.com)
4
+
5
+ # Permission is hereby granted, free of charge, to any person obtaining
6
+ # a copy of this software and associated documentation files (the
7
+ # "Software"), to deal in the Software without restriction, including
8
+ # without limitation the rights to use, copy, modify, merge, publish,
9
+ # distribute, sublicense, and/or sell copies of the Software, and to
10
+ # permit persons to whom the Software is furnished to do so, subject to
11
+ # the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be
14
+ # included in all copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+ #
24
+
25
+ require 'json'
26
+
27
+ module Unirest
28
+
29
+ class HttpResponse
30
+ attr_reader :code
31
+ attr_reader :raw_body
32
+ attr_reader :body
33
+ attr_reader :headers
34
+
35
+ def initialize(http_response)
36
+ @code = http_response.code
37
+ @headers = http_response.headers
38
+ @raw_body = http_response
39
+ @body = @raw_body
40
+
41
+ begin
42
+ @body = JSON.parse(@raw_body)
43
+ rescue StandardError
44
+ end
45
+
46
+ end
47
+
48
+ end
49
+
50
+ end
data/lib/unirest.rb ADDED
@@ -0,0 +1,122 @@
1
+ # The MIT License
2
+ #
3
+ # Copyright (c) 2013 Mashape (http://mashape.com)
4
+
5
+ # Permission is hereby granted, free of charge, to any person obtaining
6
+ # a copy of this software and associated documentation files (the
7
+ # "Software"), to deal in the Software without restriction, including
8
+ # without limitation the rights to use, copy, modify, merge, publish,
9
+ # distribute, sublicense, and/or sell copies of the Software, and to
10
+ # permit persons to whom the Software is furnished to do so, subject to
11
+ # the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be
14
+ # included in all copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+ #
24
+
25
+ require 'rubygems'
26
+ require 'rest-client'
27
+
28
+ require File.join(File.dirname(__FILE__), "/unirest/http_request.rb")
29
+ require File.join(File.dirname(__FILE__), "/unirest/http_response.rb")
30
+
31
+ module Unirest
32
+
33
+ @@timeout = 10
34
+ @@default_headers = {}
35
+ @@user_agent = "unirest-ruby/1.1"
36
+
37
+ class HttpClient
38
+
39
+ def self.request(method, url, headers, body, auth, timeout, &callback)
40
+ http_request = Unirest::HttpRequest.new(method, url, headers, body, auth)
41
+
42
+ if callback
43
+ Thread.new do
44
+ callback.call(self.internal_request(http_request, timeout))
45
+ end
46
+ else
47
+ self.internal_request(http_request, timeout)
48
+ end
49
+ end
50
+
51
+ def self.internal_request(http_request, timeout)
52
+ # Set the user agent
53
+ http_request.add_header("user-agent", Unirest.user_agent)
54
+ http_request.add_header("accept-encoding", "gzip")
55
+
56
+ http_response = nil
57
+
58
+ begin
59
+ case http_request.method
60
+ when :get
61
+ http_response = RestClient::Request.execute(:method => :get, :url => http_request.url, :headers => http_request.headers, :timeout => timeout)
62
+ when :post
63
+ http_response = RestClient::Request.execute(:method => :post, :url => http_request.url, :payload => http_request.body, :headers => http_request.headers, :timeout => timeout)
64
+ when :put
65
+ http_response = RestClient::Request.execute(:method => :put, :url => http_request.url, :payload => http_request.body, :headers => http_request.headers, :timeout => timeout)
66
+ when :delete
67
+ http_response = RestClient::Request.execute(:method => :delete, :url => http_request.url, :payload => http_request.body, :headers => http_request.headers, :timeout => timeout)
68
+ when :patch
69
+ http_response = RestClient::Request.execute(:method => :patch, :url => http_request.url, :payload => http_request.body, :headers => http_request.headers, :timeout => timeout)
70
+ end
71
+ rescue RestClient::RequestTimeout
72
+ raise 'Request Timeout'
73
+ rescue RestClient::Exception => e
74
+ http_response = e.response
75
+ end
76
+
77
+ Unirest::HttpResponse.new(http_response)
78
+ end
79
+
80
+ end
81
+
82
+ def self.default_header(name, value)
83
+ @@default_headers[name] = value
84
+ end
85
+
86
+ def self.clear_default_headers
87
+ @@default_headers = {}
88
+ end
89
+
90
+ def self.timeout(seconds)
91
+ @@timeout = seconds
92
+ end
93
+
94
+ def self.user_agent(user_agent=@@user_agent)
95
+ if user_agent
96
+ @@user_agent = user_agent
97
+ else
98
+ @@user_agent
99
+ end
100
+ end
101
+
102
+ def self.get(url, headers: {}, parameters: nil, auth:nil, &callback)
103
+ HttpClient.request(:get, url, headers.merge(@@default_headers), parameters, auth, @@timeout, &callback)
104
+ end
105
+
106
+ def self.post(url, headers: {}, parameters: nil, auth:nil, &callback)
107
+ HttpClient.request(:post, url, headers.merge(@@default_headers), parameters, auth, @@timeout, &callback)
108
+ end
109
+
110
+ def self.delete(url, headers: {}, parameters: nil, auth:nil, &callback)
111
+ HttpClient.request(:delete, url, headers.merge(@@default_headers), parameters, auth, @@timeout, &callback)
112
+ end
113
+
114
+ def self.put(url, headers: {}, parameters: nil, auth:nil, &callback)
115
+ HttpClient.request(:put, url, headers.merge(@@default_headers), parameters, auth, @@timeout, &callback)
116
+ end
117
+
118
+ def self.patch(url, headers: {}, parameters: nil, auth:nil, &callback)
119
+ HttpClient.request(:patch, url, headers.merge(@@default_headers), parameters, auth, @@timeout, &callback)
120
+ end
121
+
122
+ end
@@ -0,0 +1,198 @@
1
+ # The MIT License
2
+ #
3
+ # Copyright (c) 2013 Mashape (http://mashape.com)
4
+
5
+ # Permission is hereby granted, free of charge, to any person obtaining
6
+ # a copy of this software and associated documentation files (the
7
+ # "Software"), to deal in the Software without restriction, including
8
+ # without limitation the rights to use, copy, modify, merge, publish,
9
+ # distribute, sublicense, and/or sell copies of the Software, and to
10
+ # permit persons to whom the Software is furnished to do so, subject to
11
+ # the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be
14
+ # included in all copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+ #
24
+
25
+ require_relative '../lib/unirest'
26
+ require 'test/unit'
27
+ require 'shoulda'
28
+
29
+ module Unirest
30
+ class RequestsTest < Test::Unit::TestCase
31
+
32
+ should "GET" do
33
+
34
+ response = Unirest.get("http://httpbin.org/get?name=Mark", parameters:{'nick'=> "sinz s"})
35
+ assert response.code == 200
36
+
37
+ args = response.body['args']
38
+ assert args.length == 2
39
+ assert args['name'] == 'Mark'
40
+ assert args['nick'] == 'sinz s'
41
+
42
+ end
43
+
44
+ should "POST" do
45
+
46
+ response = Unirest.post("http://httpbin.org/post", parameters:{'name' => 'Mark', 'nick'=> "sinz s"})
47
+ assert response.code == 200
48
+
49
+ args = response.body['form']
50
+ assert args.length == 2
51
+ assert args['name'] == 'Mark'
52
+ assert args['nick'] == 'sinz s'
53
+
54
+ end
55
+
56
+ should "POST custom body" do
57
+
58
+ response = Unirest.post("http://httpbin.org/post", headers:{ "Content-Type" => "application/json" }, parameters:{'name' => 'Mark'}.to_json)
59
+ assert response.code == 200
60
+
61
+ data = response.body['data']
62
+ assert data == '{"name":"Mark"}'
63
+
64
+ end
65
+
66
+ should "PUT" do
67
+
68
+ response = Unirest.put("http://httpbin.org/put", parameters:{'name' => 'Mark', 'nick'=> "sinz s"})
69
+ assert response.code == 200
70
+
71
+ args = response.body['form']
72
+ assert args.length == 2
73
+ assert args['name'] == 'Mark'
74
+ assert args['nick'] == 'sinz s'
75
+
76
+ end
77
+
78
+ should "PATCH" do
79
+
80
+ response = Unirest.patch("http://httpbin.org/patch", parameters:{'name' => 'Mark', 'nick'=> "sinz s"})
81
+ assert response.code == 200
82
+
83
+ args = response.body['form']
84
+ assert args.length == 2
85
+ assert args['name'] == 'Mark'
86
+ assert args['nick'] == 'sinz s'
87
+
88
+ end
89
+
90
+ should "DELETE" do
91
+
92
+ response = Unirest.delete("http://httpbin.org/delete", parameters:{'name' => 'Mark', 'nick'=> "sinz s"})
93
+ assert response.code == 200
94
+
95
+ data = response.body['form']
96
+ assert data['name'] == "Mark"
97
+ assert data['nick'] == "sinz s"
98
+
99
+ end
100
+
101
+ should "GET ASYNC" do
102
+
103
+ executed = false;
104
+
105
+ thread = Unirest.get("http://httpbin.org/get?name=Mark", parameters:{'nick'=> "sinz s"}) {|response|
106
+ assert response.code == 200
107
+ executed = true
108
+ }
109
+
110
+ assert thread != nil
111
+ assert executed == false
112
+ thread.join()
113
+ assert executed == true
114
+
115
+ end
116
+
117
+ should "gzip" do
118
+
119
+ response = Unirest.get("http://httpbin.org/gzip")
120
+ assert response.code == 200
121
+
122
+ assert response.body['gzipped'] == true
123
+
124
+ end
125
+
126
+ should "Basic Authentication" do
127
+
128
+ response = Unirest.get("http://httpbin.org/get?name=Mark", parameters:{'nick'=> "sinz s"}, auth:{:user=>"marco", :password=>"password"})
129
+ assert response.code == 200
130
+
131
+ headers = response.body['headers']
132
+ assert headers['Authorization'] == "Basic bWFyY286cGFzc3dvcmQ="
133
+
134
+ end
135
+
136
+ should "Timeout" do
137
+
138
+ Unirest.timeout(1);
139
+ begin
140
+ response = Unirest.get("http://httpbin.org/delay/3")
141
+ rescue RuntimeError
142
+ # Ok
143
+ end
144
+
145
+ Unirest.timeout(3);
146
+ response = Unirest.get("http://httpbin.org/delay/1")
147
+ assert response.code == 200
148
+ end
149
+
150
+ should "Throw underlying error" do
151
+
152
+ begin
153
+ Unirest.get("http://bad.domain.test")
154
+ rescue => e
155
+ assert ! e.is_a?(NoMethodError)
156
+ end
157
+ end
158
+
159
+ should "Default Headers" do
160
+
161
+ Unirest.default_header('Hello','test')
162
+
163
+ response = Unirest.get("http://httpbin.org/get")
164
+ assert response.code == 200
165
+
166
+ headers = response.body['headers']
167
+ assert headers['Hello'] == "test"
168
+
169
+ response = Unirest.get("http://httpbin.org/get")
170
+ assert response.code == 200
171
+
172
+ headers = response.body['headers']
173
+ assert headers['Hello'] == "test"
174
+
175
+ Unirest.clear_default_headers()
176
+
177
+ response = Unirest.get("http://httpbin.org/get")
178
+ assert response.code == 200
179
+
180
+ headers = response.body['headers']
181
+ assert headers['Hello'] == nil
182
+
183
+ end
184
+
185
+ should "Custom User Agent" do
186
+
187
+ Unirest.user_agent("custom_ua/1.0")
188
+
189
+ response = Unirest.get("http://httpbin.org/get")
190
+ assert response.code == 200
191
+
192
+ headers = response.body['headers']
193
+ assert headers['User-Agent'] == "custom_ua/1.0"
194
+
195
+ end
196
+
197
+ end
198
+ end
data/unirest.gemspec ADDED
@@ -0,0 +1,25 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'moesif_unirest'
3
+ s.version = '1.1.4'
4
+ s.summary = "Unirest-Ruby"
5
+ s.description = "Simplified, lightweight HTTP client library"
6
+ s.authors = ["Moesif, Inc"]
7
+ s.email = 'derric@moesif.com'
8
+ s.homepage = 'https://github.com/Moesif/unirest-ruby'
9
+ s.license = 'MIT'
10
+
11
+ s.add_dependency('rest-client', '>= 1.8.0')
12
+ s.add_dependency('json', '>= 1.8.1')
13
+ s.add_dependency('addressable', '>= 2.3.5')
14
+
15
+ s.add_development_dependency('shoulda', '~> 3.5.0')
16
+ s.add_development_dependency('test-unit')
17
+ s.add_development_dependency('rake')
18
+
19
+ s.required_ruby_version = '~> 2.0'
20
+
21
+ s.files = `git ls-files`.split("\n")
22
+ s.test_files = `git ls-files -- test/*`.split("\n")
23
+ s.require_paths = ['lib']
24
+
25
+ end
metadata ADDED
@@ -0,0 +1,140 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: moesif_unirest
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.4
5
+ platform: ruby
6
+ authors:
7
+ - Moesif, Inc
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-01-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rest-client
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.8.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 1.8.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: json
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.8.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 1.8.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: addressable
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 2.3.5
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 2.3.5
55
+ - !ruby/object:Gem::Dependency
56
+ name: shoulda
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 3.5.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 3.5.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: test-unit
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: Simplified, lightweight HTTP client library
98
+ email: derric@moesif.com
99
+ executables: []
100
+ extensions: []
101
+ extra_rdoc_files: []
102
+ files:
103
+ - ".editorconfig"
104
+ - ".gitignore"
105
+ - ".travis.yml"
106
+ - Gemfile
107
+ - LICENSE
108
+ - README.md
109
+ - Rakefile
110
+ - lib/unirest.rb
111
+ - lib/unirest/http_request.rb
112
+ - lib/unirest/http_response.rb
113
+ - test/unirest_test.rb
114
+ - unirest.gemspec
115
+ homepage: https://github.com/Moesif/unirest-ruby
116
+ licenses:
117
+ - MIT
118
+ metadata: {}
119
+ post_install_message:
120
+ rdoc_options: []
121
+ require_paths:
122
+ - lib
123
+ required_ruby_version: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - "~>"
126
+ - !ruby/object:Gem::Version
127
+ version: '2.0'
128
+ required_rubygems_version: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ requirements: []
134
+ rubyforge_project:
135
+ rubygems_version: 2.7.7
136
+ signing_key:
137
+ specification_version: 4
138
+ summary: Unirest-Ruby
139
+ test_files:
140
+ - test/unirest_test.rb