restpack_service 0.0.3 → 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.
- checksums.yaml +4 -4
- data/Rakefile +4 -4
- data/lib/restpack_service.rb +1 -0
- data/lib/restpack_service/response.rb +51 -4
- data/lib/restpack_service/service.rb +8 -6
- data/lib/restpack_service/version.rb +1 -1
- data/restpack_service.gemspec +2 -1
- data/spec/response_spec.rb +44 -0
- metadata +20 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: accd5beb595134902b3ff0449ae03e09934b444e
|
4
|
+
data.tar.gz: 50f99564d3de69c02ba4d09ed10c8cf71e8e6e1b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aece65215619a601282861a331fbbd3a6cffbebf15d3ef92fd2f31ae56b7c33f6ced6589a00137d8a933a35b2f6471343e54560da045e50a1544744b6824a4ed
|
7
|
+
data.tar.gz: c3c81a29c029dab386958edd88752032d19e50660146c84ca0ad3d34d0cfa948b2262862628047079d1523441a20d9b1b006fb1f0e4f2416e3b7572c83d0b737
|
data/Rakefile
CHANGED
@@ -16,10 +16,10 @@ end
|
|
16
16
|
|
17
17
|
|
18
18
|
task :gem do
|
19
|
-
["gem:bump"
|
20
|
-
|
21
|
-
|
22
|
-
|
19
|
+
Rake::Task["gem:bump"].invoke
|
20
|
+
Rake::Task["gem:tag"].invoke
|
21
|
+
Rake::Task["gem:build"].invoke
|
22
|
+
Rake::Task["gem:push"].invoke
|
23
23
|
end
|
24
24
|
|
25
25
|
namespace :gem do
|
data/lib/restpack_service.rb
CHANGED
@@ -3,15 +3,62 @@ module RestPack
|
|
3
3
|
attr_accessor :result, :errors, :status
|
4
4
|
|
5
5
|
def initialize
|
6
|
-
@
|
6
|
+
@result = {}
|
7
|
+
@errors = {}
|
7
8
|
end
|
8
9
|
|
9
10
|
def success?
|
10
|
-
@errors.empty? and @status == :
|
11
|
+
@errors.empty? and @status == :ok
|
11
12
|
end
|
12
13
|
|
13
|
-
def
|
14
|
-
|
14
|
+
def code
|
15
|
+
Status.from_status(status)
|
16
|
+
end
|
17
|
+
|
18
|
+
def add_error(field, message)
|
19
|
+
@errors[field] ||= []
|
20
|
+
@errors[field] << message
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.from_rest(rest_response)
|
24
|
+
response = new
|
25
|
+
response.status = Status.from_code(rest_response.code)
|
26
|
+
response.result = Yajl::Parser.parse(rest_response.body, :symbolize_keys => true)
|
27
|
+
|
28
|
+
if response.result[:errors]
|
29
|
+
response.result[:errors].each do |field, errors|
|
30
|
+
response.errors[field.to_sym] = errors
|
31
|
+
end
|
32
|
+
|
33
|
+
response.result.delete :errors
|
34
|
+
end
|
35
|
+
|
36
|
+
response
|
37
|
+
end
|
38
|
+
|
39
|
+
class Status
|
40
|
+
@@map = {
|
41
|
+
200 => :ok,
|
42
|
+
404 => :not_found,
|
43
|
+
422 => :unprocessable_entity,
|
44
|
+
500 => :internal_service_error
|
45
|
+
}
|
46
|
+
|
47
|
+
def self.from_code(code)
|
48
|
+
if @@map.has_key?(code)
|
49
|
+
@@map[code]
|
50
|
+
else
|
51
|
+
raise "Invalid Status Code: #{code}"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.from_status(status)
|
56
|
+
if @@map.has_value?(status)
|
57
|
+
@@map.key(status)
|
58
|
+
else
|
59
|
+
raise "Invalid Status: #{status}"
|
60
|
+
end
|
61
|
+
end
|
15
62
|
end
|
16
63
|
end
|
17
64
|
end
|
@@ -11,19 +11,21 @@ module RestPack
|
|
11
11
|
|
12
12
|
if mutation.errors
|
13
13
|
mutation.errors.message.each do |error|
|
14
|
-
@response.
|
14
|
+
@response.add_error(error[0], error[1].gsub(error[0].capitalize, ''))
|
15
15
|
end
|
16
16
|
|
17
17
|
@response.status ||= :unprocessable_entity
|
18
18
|
else
|
19
|
-
@response.status ||= :
|
19
|
+
@response.status ||= :ok
|
20
20
|
end
|
21
21
|
|
22
|
-
if @response.status == :
|
23
|
-
@response.result = mutation.result
|
22
|
+
if @response.status == :ok
|
23
|
+
@response.result = mutation.result if mutation.result
|
24
24
|
end
|
25
|
-
rescue
|
26
|
-
|
25
|
+
rescue Exception => e
|
26
|
+
p e.message #TODO: GJ: logging
|
27
|
+
|
28
|
+
@response.add_error(:base, 'Service Error')
|
27
29
|
@response.status = :internal_service_error
|
28
30
|
end
|
29
31
|
|
data/restpack_service.gemspec
CHANGED
@@ -19,9 +19,10 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_dependency "mutations", "~> 0.6.0"
|
22
|
+
spec.add_dependency "yajl-ruby", "~> 1.1.0"
|
22
23
|
|
23
24
|
spec.add_development_dependency "bundler", "~> 1.3"
|
24
25
|
spec.add_development_dependency "rake"
|
25
26
|
spec.add_development_dependency "rspec"
|
26
|
-
spec.add_development_dependency "bump"
|
27
|
+
spec.add_development_dependency "bump"
|
27
28
|
end
|
data/spec/response_spec.rb
CHANGED
@@ -2,4 +2,48 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe RestPack::Response do
|
4
4
|
pending "Write some specs"
|
5
|
+
|
6
|
+
describe "#from_rest" do
|
7
|
+
it "parses a successful response" do
|
8
|
+
response = RestPack::Response.from_rest(
|
9
|
+
double(code: 200, body: '{ "key": "value" }')
|
10
|
+
)
|
11
|
+
|
12
|
+
response.status.should == :ok
|
13
|
+
response.code.should == 200
|
14
|
+
response.success?.should == true
|
15
|
+
response.result.should == { key: "value" }
|
16
|
+
end
|
17
|
+
|
18
|
+
it "extracts errors from response body" do
|
19
|
+
response = RestPack::Response.from_rest(
|
20
|
+
double(code: 200, body: '{ "key": "value", "errors": {
|
21
|
+
"name": ["error 1", "error 2"]
|
22
|
+
} }')
|
23
|
+
)
|
24
|
+
|
25
|
+
response.success?.should == false
|
26
|
+
response.result.should == { key: "value" }
|
27
|
+
response.errors.should == { name: ["error 1", "error 2"] }
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
describe RestPack::Response::Status do
|
33
|
+
describe "#from_code" do
|
34
|
+
context "valid status" do
|
35
|
+
it "maps a code to a status" do
|
36
|
+
RestPack::Response::Status.from_code(200).should == :ok
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context "invalid status" do
|
41
|
+
it "raises an exception" do
|
42
|
+
expect {
|
43
|
+
RestPack::Response::Status.from_code(999)
|
44
|
+
}.to raise_exception("Invalid Status Code: 999")
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
5
49
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: restpack_service
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gavin Joyce
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-08-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mutations
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.6.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: yajl-ruby
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.1.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.1.0
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -70,16 +84,16 @@ dependencies:
|
|
70
84
|
name: bump
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
|
-
- -
|
87
|
+
- - '>='
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0
|
89
|
+
version: '0'
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
|
-
- -
|
94
|
+
- - '>='
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0
|
96
|
+
version: '0'
|
83
97
|
description: RestPack service base
|
84
98
|
email:
|
85
99
|
- gavinjoyce@gmail.com
|