rest_client_plus 0.0.4 → 0.0.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.
data/.gitignore CHANGED
@@ -12,6 +12,7 @@ test/tmp
12
12
  test/version_tmp
13
13
  tmp
14
14
  .idea
15
+ .DS_Store
15
16
 
16
17
  # YARD artifacts
17
18
  .yardoc
data/Gemfile CHANGED
@@ -1,4 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
+ gem 'webmock'
4
+ gem 'rest-client'
5
+
3
6
  # Specify your gem's dependencies in rest_client_plus.gemspec
4
7
  gemspec
data/Gemfile.lock CHANGED
@@ -1,17 +1,30 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rest_client_plus (0.0.4)
4
+ rest_client_plus (0.0.5)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
+ addressable (2.3.5)
10
+ crack (0.4.1)
11
+ safe_yaml (~> 0.9.0)
12
+ mime-types (2.0)
9
13
  rake (10.1.0)
14
+ rest-client (1.6.7)
15
+ mime-types (>= 1.16)
16
+ safe_yaml (0.9.7)
17
+ webmock (1.16.1)
18
+ addressable (>= 2.2.7)
19
+ crack (>= 0.3.2)
10
20
 
11
21
  PLATFORMS
22
+ ruby
12
23
  x86-mingw32
13
24
 
14
25
  DEPENDENCIES
15
26
  bundler
16
27
  rake
28
+ rest-client
17
29
  rest_client_plus!
30
+ webmock
data/README.md CHANGED
@@ -5,6 +5,16 @@ Extensions to Ruby's RestClient
5
5
 
6
6
  ## Installation
7
7
 
8
+ Tested against ruby versions
9
+
10
+ not working
11
+ 1.8.7
12
+
13
+ working
14
+ 1.9.3-p484
15
+ 2.0.0-p353
16
+ 2.1.0dev (2013-11-23 trunk 43807)
17
+
8
18
  Add this line to your application's Gemfile:
9
19
 
10
20
  gem 'rest_client_plus'
@@ -21,11 +31,19 @@ Require using:
21
31
 
22
32
  $ require 'rest_client_plus'
23
33
 
34
+ ## Issues
35
+
36
+ Warning: You are using Excon 0.20.1. WebMock supports version >= 0.27.5.
37
+
24
38
  ## Usage
25
39
 
26
40
  RestClientPlus provides GET, POST and PUT methods which return a Ruby hash if json is received.
27
41
 
28
- ArrayHelper.unwrap_from_array will unwrap a hash from a single-element array
42
+ ArrayHelper.unwrap_from_array(array) will unwrap a hash from a single-element array (array). Array is also extended with
43
+ Array#unwrap_from_array so:
44
+
45
+ [ {:key => "value"} ].unwrap_from_array! #=> {:key => "value"}
46
+
29
47
 
30
48
  ## Running Tests
31
49
 
data/lib/array_helper.rb CHANGED
@@ -11,3 +11,13 @@ module RestClientPlus
11
11
 
12
12
  end
13
13
 
14
+ class Array
15
+
16
+ def unwrap_from_array!
17
+ RestClientPlus::ArrayHelper.unwrap_from_array(self)
18
+ end
19
+
20
+ end
21
+
22
+
23
+
data/lib/requests.rb CHANGED
@@ -3,21 +3,23 @@ module RestClientPlus
3
3
  module Requests
4
4
 
5
5
  def self.post_json_to_url input_url, json_body
6
- response = RestClient.post(input_url, json_body, :content_type => 'application/json')
7
- response.code.should == 200
8
- JSON.parse response.body
6
+ parse_response(RestClient.post(input_url, json_body, :content_type => 'application/json'))
9
7
  end
10
8
 
11
9
  def self.put_json_to_url input_url, json_body
12
- response = RestClient.put(input_url, json_body, :content_type => 'application/json')
13
- response.code.should == 200
14
- JSON.parse response.body
10
+ parse_response(RestClient.put(input_url, json_body, :content_type => 'application/json'))
15
11
  end
16
12
 
17
13
  def self.get_json_from_url input_url
18
- response = RestClient.get(input_url)
19
- response.code.should == 200
20
- JSON.parse response.body
14
+ parse_response(RestClient.get(input_url))
15
+ end
16
+
17
+
18
+ private
19
+
20
+ def self.parse_response(response)
21
+ JSON.parse response.body if response.body.respond_to?(:reverse)
22
+ response.body
21
23
  end
22
24
 
23
25
  end
@@ -1,7 +1,7 @@
1
-
2
- module RestClientPlus
3
-
4
1
  require_relative 'array_helper'
5
2
  require_relative 'requests'
3
+ require 'rest_client'
4
+
5
+ module RestClientPlus
6
6
 
7
7
  end
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = "rest_client_plus"
7
- s.version = "0.0.4"
7
+ s.version = "0.0.5"
8
8
  s.authors = ["John Wakeling", "Darren Bown"]
9
9
  s.email = ["jwakeling23@gmail.com", "darren.bown@droidqa.co.uk"]
10
10
  s.description = %q{Extensions to Ruby's RestClient}
@@ -21,4 +21,8 @@ class ArrayHelperTest < Test::Unit::TestCase
21
21
  assert_equal(@test_string, RestClientPlus::ArrayHelper.unwrap_from_array(@test_string))
22
22
  end
23
23
 
24
+ def test_array_is_extended
25
+ assert_equal(@test_hash, @hash_wrapped_in_array.unwrap_from_array!)
26
+ end
27
+
24
28
  end
@@ -1,10 +1,29 @@
1
1
  require 'test/unit'
2
2
  require_relative '../lib/rest_client_plus'
3
+ require_relative '../tests/webservice_stubs/data'
4
+ require_relative 'webservice_stubs/stubs'
3
5
 
4
6
  class RestClientPlusTest < Test::Unit::TestCase
5
7
 
8
+ def setup
9
+ WSStubs.setup_stubs
10
+ end
11
+
6
12
  def test_rest_client_plus_is_a_module
7
13
  assert_respond_to(RestClientPlus, :constants)
8
14
  end
9
15
 
16
+ def test_get_json_from_url
17
+ assert_respond_to(RestClientPlus::Requests.get_json_from_url('http://www.mocks.stub'), :each_key)
18
+ end
19
+
20
+ def test_post_json_to_url
21
+ assert_respond_to(RestClientPlus::Requests.post_json_to_url('http://www.mocks.stub', {:body => "body"}), :each_key)
22
+ end
23
+
24
+ def test_put_json_to_url
25
+ assert_respond_to(RestClientPlus::Requests.put_json_to_url('http://www.mocks.stub', {:body => "body"}), :each_key)
26
+ end
27
+
28
+
10
29
  end
@@ -0,0 +1,22 @@
1
+ #TODO: Add to config. Shouldn't be parsable ruby.
2
+
3
+ RETURN_HEADERS = {}
4
+
5
+ RETURN_BODY =
6
+ {:body =>
7
+ {:one => "1",
8
+ :two => "2"}
9
+ }
10
+
11
+ RETURN_OBJECT = {:status => 200, :body => RETURN_BODY, :headers => RETURN_HEADERS}
12
+
13
+ REQUEST_HEADERS =
14
+ {'Accept'=>'*/*; q=0.5, application/xml',
15
+ 'Accept-Encoding'=>'gzip, deflate',
16
+ 'Content-Length'=>'9',
17
+ 'Content-Type'=>'application/x-www-form-urlencoded',
18
+ 'User-Agent'=>'Ruby'
19
+ }
20
+
21
+ REQUEST_BODY = {"body"=>"body"}
22
+
@@ -0,0 +1,20 @@
1
+ require 'net/http'
2
+ require 'webmock'
3
+ module WSStubs
4
+
5
+ def self.setup_stubs
6
+
7
+ WebMock::API.stub_request(:get, "www.mocks.stub").to_return(RETURN_BODY)
8
+
9
+ WebMock::API.stub_request(:any, "http://www.mocks.stub/").
10
+ with(:body => REQUEST_BODY,
11
+ :request_headers => REQUEST_HEADERS).
12
+ to_return(RETURN_OBJECT)
13
+
14
+ end
15
+
16
+
17
+ end
18
+
19
+ #TODO: refactor into config
20
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rest_client_plus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-12-19 00:00:00.000000000 Z
13
+ date: 2014-01-07 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -64,6 +64,8 @@ files:
64
64
  - rest_client_plus.gemspec
65
65
  - tests/array_helper_test.rb
66
66
  - tests/rest_client_plus_test.rb
67
+ - tests/webservice_stubs/data.rb
68
+ - tests/webservice_stubs/stubs.rb
67
69
  homepage: https://github.com/dazzla/rest_client_plus
68
70
  licenses:
69
71
  - MIT