paper-cup 0.2.0 → 0.2.1
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 +4 -4
- data/CHANGELOG.md +16 -0
- data/README.md +5 -5
- data/lib/paper_cup/response.rb +12 -1
- data/paper-cup.gemspec +2 -1
- data/test/paper_cup_test.rb +1 -1
- data/test/paper_cup_test/client_test.rb +5 -5
- data/test/paper_cup_test/response_test.rb +30 -6
- data/test/test_helper.rb +5 -1
- metadata +16 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2fe587af3f94b03560c48e7230b74463eeb6b8f5
|
4
|
+
data.tar.gz: a58fa340c4a8c565964e7a33d7f646b6a03711d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 89d19d3bef95afa1467681a6cdf7ddb732fd58817e51b71dd6d684af9a3361fc686a6673c39b52295c7f4c57da48108dc55076c929bc4c8a660dbbfda21ac150
|
7
|
+
data.tar.gz: c8e58104bcae79dff315f1c9e76bb95e5ecf4ed0a9696446b7b66fb56248cff22d5e6af31397d3bc07e80c34b1a510a5144d958c3e434dede1407039a7a6d287
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
0.2.1 / August 5, 2015
|
2
|
+
==================
|
3
|
+
|
4
|
+
* Start usign [Recursive Open Struct] for the response.
|
5
|
+
|
6
|
+
0.2.0 / August 5, 2015
|
7
|
+
==================
|
8
|
+
|
9
|
+
* Added Client.
|
10
|
+
|
11
|
+
0.1.0 / August 5, 2015
|
12
|
+
==================
|
13
|
+
|
14
|
+
* Initial release.
|
15
|
+
|
16
|
+
[Recursive Open Struct]: <https://github.com/aetherknight/recursive-open-struct>
|
data/README.md
CHANGED
@@ -44,12 +44,12 @@ users = client.endpoint(:users)
|
|
44
44
|
|
45
45
|
response = users.get(:casapick)
|
46
46
|
response.body
|
47
|
-
=>
|
48
|
-
|
49
|
-
|
47
|
+
=> #<RecursiveOpenStruct login="casapick",
|
48
|
+
id=8136680,
|
49
|
+
avatar_url="https://avatars.githubusercontent.com/u/8136680?v=3",
|
50
50
|
# ...
|
51
|
-
|
52
|
-
|
51
|
+
created_at="2014-07-11T15:41:22Z",
|
52
|
+
updated_at="2015-07-29T18:39:00Z">
|
53
53
|
~~~
|
54
54
|
|
55
55
|
GET
|
data/lib/paper_cup/response.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'json'
|
2
|
+
require 'recursive_open_struct'
|
2
3
|
require_relative 'utils'
|
3
4
|
|
4
5
|
module PaperCup
|
@@ -12,7 +13,7 @@ module PaperCup
|
|
12
13
|
def body
|
13
14
|
@body ||= begin
|
14
15
|
str = @raw_response[0..-4]
|
15
|
-
PaperCup.valid_json?(str) ? JSON.parse(str) : str
|
16
|
+
PaperCup.valid_json?(str) ? build_body(JSON.parse(str)) : str
|
16
17
|
end
|
17
18
|
end
|
18
19
|
|
@@ -23,5 +24,15 @@ module PaperCup
|
|
23
24
|
def success?
|
24
25
|
status.between?(200, 299)
|
25
26
|
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def build_body(str)
|
31
|
+
if str.class == Array
|
32
|
+
str.map { |e| RecursiveOpenStruct.new(e, recurse_over_arrays: true) }
|
33
|
+
else
|
34
|
+
RecursiveOpenStruct.new(str, recurse_over_arrays: true)
|
35
|
+
end
|
36
|
+
end
|
26
37
|
end
|
27
38
|
end
|
data/paper-cup.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.platform = Gem::Platform::RUBY
|
3
3
|
s.name = 'paper-cup'
|
4
|
-
s.version = '0.2.
|
4
|
+
s.version = '0.2.1'
|
5
5
|
s.date = '2015-08-05'
|
6
6
|
s.summary = "Use of Open3 to make request"
|
7
7
|
s.description = "Use curl with Open3 for making request"
|
@@ -16,4 +16,5 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.add_development_dependency "minitest-happy", '~> 1.0.0'
|
17
17
|
s.add_development_dependency "pry", '~> 0.10.1'
|
18
18
|
s.add_development_dependency "rake", '~> 10.4.2'
|
19
|
+
s.add_development_dependency "recursive-open-struct", '~> 0.6.5'
|
19
20
|
end
|
data/test/paper_cup_test.rb
CHANGED
@@ -5,7 +5,7 @@ describe PaperCup do
|
|
5
5
|
describe "when doing a GET request to an url" do
|
6
6
|
describe "that respond with a JSON" do
|
7
7
|
it "must parse the response" do
|
8
|
-
Open3.stub :capture3, [Mock.
|
8
|
+
Open3.stub :capture3, [Mock.json_array] do # stub goes away once the block is done
|
9
9
|
r = PaperCup.get("http://www.google.com")
|
10
10
|
assert_equal "Rails", r.body.first["framework"], "The framework must be rails"
|
11
11
|
end
|
@@ -4,7 +4,7 @@ def client
|
|
4
4
|
@client ||= PaperCup::Client.new(
|
5
5
|
url: 'http://api.github.com',
|
6
6
|
params: { test_param_1: :pepito, test_param_2: :pepita },
|
7
|
-
headers: { 'X-Test-Header-1'
|
7
|
+
headers: { 'X-Test-Header-1' => :pepote, 'X-Test-Header-2' => :papita }
|
8
8
|
)
|
9
9
|
end
|
10
10
|
|
@@ -14,23 +14,23 @@ describe PaperCup::Client do
|
|
14
14
|
method: :get,
|
15
15
|
path: '/users/casapick',
|
16
16
|
params: { test_param_2: :popote, test_param_3: :papota },
|
17
|
-
headers: { 'X-Test-Header-2'
|
17
|
+
headers: { 'X-Test-Header-2' => :popote, 'X-Test-Header-3' => :papota }
|
18
18
|
}
|
19
19
|
|
20
20
|
assert_equal result.fetch(:method), :get
|
21
21
|
assert_equal result.fetch(:url), 'http://api.github.com/users/casapick'
|
22
22
|
assert_equal result.fetch(:params), test_param_1: :pepito, test_param_2: :popote, test_param_3: :papota
|
23
|
-
assert_equal result.fetch(:headers), 'X-Test-Header-1'
|
23
|
+
assert_equal result.fetch(:headers), 'X-Test-Header-1' => :pepote, 'X-Test-Header-2' => :popote, 'X-Test-Header-3' => :papota
|
24
24
|
end
|
25
25
|
|
26
26
|
it '#endpoint returns a new client with merged url, params and headers' do
|
27
27
|
users = client.endpoint(:users,
|
28
28
|
params: { test_param_2: :popote, test_param_3: :papota },
|
29
|
-
headers: { 'X-Test-Header-2'
|
29
|
+
headers: { 'X-Test-Header-2' => :popote, 'X-Test-Header-3' => :papota }
|
30
30
|
)
|
31
31
|
|
32
32
|
assert_equal users.url, 'http://api.github.com/users'
|
33
33
|
assert_equal users.params, test_param_1: :pepito, test_param_2: :popote, test_param_3: :papota
|
34
|
-
assert_equal users.headers, 'X-Test-Header-1'
|
34
|
+
assert_equal users.headers, 'X-Test-Header-1' => :pepote, 'X-Test-Header-2' => :popote, 'X-Test-Header-3' => :papota
|
35
35
|
end
|
36
36
|
end
|
@@ -15,14 +15,38 @@ describe PaperCup::Response do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
describe "when the response is a JSON" do
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
describe "and an array" do
|
19
|
+
it "must be an array of RecursiveOpenStruct" do
|
20
|
+
r = PaperCup::Response.new(Mock.json_array)
|
21
|
+
assert_equal 1, r.body.map(&:class).uniq.count, "There must be only one kind of objects"
|
22
|
+
assert_equal RecursiveOpenStruct, r.body.map(&:class).uniq.first, "The class of the elements must be RecursiveOpenStruct"
|
23
|
+
end
|
24
|
+
|
25
|
+
it "must set the response properly" do
|
26
|
+
r = PaperCup::Response.new(Mock.json_array)
|
27
|
+
assert_equal JSON.parse(Mock.json_array[0..-4]).first["framework"], r.body.first.framework
|
28
|
+
end
|
29
|
+
|
30
|
+
it "must set the status code response properly" do
|
31
|
+
r = PaperCup::Response.new(Mock.json_array)
|
32
|
+
assert_equal 200, r.status
|
33
|
+
end
|
21
34
|
end
|
35
|
+
describe "and not an array" do
|
36
|
+
it "must be a RecursiveOpenStruct object" do
|
37
|
+
r = PaperCup::Response.new(Mock.json)
|
38
|
+
assert_equal RecursiveOpenStruct, r.body.class, "The class of the elements must be RecursiveOpenStruct"
|
39
|
+
end
|
22
40
|
|
23
|
-
|
24
|
-
|
25
|
-
|
41
|
+
it "must set the response properly" do
|
42
|
+
r = PaperCup::Response.new(Mock.json)
|
43
|
+
assert_equal JSON.parse(Mock.json[0..-4])["framework"], r.body.framework
|
44
|
+
end
|
45
|
+
|
46
|
+
it "must set the status code response properly" do
|
47
|
+
r = PaperCup::Response.new(Mock.json)
|
48
|
+
assert_equal 200, r.status
|
49
|
+
end
|
26
50
|
end
|
27
51
|
end
|
28
52
|
end
|
data/test/test_helper.rb
CHANGED
@@ -10,10 +10,14 @@ module Mock
|
|
10
10
|
"<html>\n<head>\n<meta charset=\"UTF-8\">\n<title>404</title>\n</head>\n<body>\n<code>404</code>\n</body>\n</html>\n404"
|
11
11
|
end
|
12
12
|
|
13
|
-
def
|
13
|
+
def json_array
|
14
14
|
"[{\"framework\":\"Rails\",\"language\":\"ruby\"}]200"
|
15
15
|
end
|
16
16
|
|
17
|
+
def json
|
18
|
+
"{\"framework\":\"Rails\",\"language\":\"ruby\"}200"
|
19
|
+
end
|
20
|
+
|
17
21
|
def params
|
18
22
|
{ framework: 'cuba', language: 'ruby' }
|
19
23
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paper-cup
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mariano Matayoshi
|
@@ -68,6 +68,20 @@ dependencies:
|
|
68
68
|
- - "~>"
|
69
69
|
- !ruby/object:Gem::Version
|
70
70
|
version: 10.4.2
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: recursive-open-struct
|
73
|
+
requirement: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - "~>"
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 0.6.5
|
78
|
+
type: :development
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - "~>"
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: 0.6.5
|
71
85
|
description: Use curl with Open3 for making request
|
72
86
|
email: matayoshi.mariano@gmail.com
|
73
87
|
executables: []
|
@@ -76,6 +90,7 @@ extra_rdoc_files: []
|
|
76
90
|
files:
|
77
91
|
- ".gitignore"
|
78
92
|
- ".travis.yml"
|
93
|
+
- CHANGELOG.md
|
79
94
|
- Gemfile
|
80
95
|
- README.md
|
81
96
|
- Rakefile
|