sqwiggle-ruby 0.0.2 → 0.0.3
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/Gemfile +0 -4
- data/lib/sqwiggle/api/error_handler.rb +6 -6
- data/lib/sqwiggle/api/errors/bad_request_error.rb +17 -1
- data/lib/sqwiggle/api/resource.rb +30 -11
- data/lib/sqwiggle/api/service.rb +4 -0
- data/lib/sqwiggle/message.rb +2 -0
- data/lib/sqwiggle/version.rb +1 -1
- data/spec/api/errors/bad_request_error_spec.rb +17 -0
- data/spec/errors_spec.rb +1 -1
- data/spec/message_spec.rb +2 -2
- data/sqwiggle-ruby.gemspec +3 -0
- metadata +46 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 337c69c157e6af33a4d852b43fd83867bde0fd27
|
4
|
+
data.tar.gz: 0caa91ae54889f9718ce9a847255a34f15bc8adf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: be9226f208fcf0257a5f7b1de72c47f636f8700f652372a6f13b103e6b89ea3a8973cd6b97b2ed150e048465e07f0cd6c1c52c2797884198ec4c7b5b692a146f
|
7
|
+
data.tar.gz: 5fcb090da68dd6dbacaef49d580a913f8925487ad1937077708df6e2cd80fe6a1437958e42e5510a1b61d825080f788b7269c8da0094cd8c337439930948c64d
|
data/Gemfile
CHANGED
@@ -2,12 +2,12 @@ module Sqwiggle
|
|
2
2
|
module Api
|
3
3
|
class ErrorHandler < Faraday::Response::Middleware
|
4
4
|
def on_complete(env)
|
5
|
-
raise Errors::BadRequestError
|
6
|
-
raise Errors::AuthenticationError
|
7
|
-
raise Errors::PaymentRequiredError
|
8
|
-
raise Errors::AuthorizationError
|
9
|
-
raise Errors::NotFoundError
|
10
|
-
raise Errors::ServerError
|
5
|
+
raise Errors::BadRequestError.new(env) if env[:status] == 400
|
6
|
+
raise Errors::AuthenticationError if env[:status] == 401
|
7
|
+
raise Errors::PaymentRequiredError if env[:status] == 402
|
8
|
+
raise Errors::AuthorizationError if env[:status] == 403
|
9
|
+
raise Errors::NotFoundError if env[:status] == 404
|
10
|
+
raise Errors::ServerError if env[:status] == 500
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
@@ -1,7 +1,23 @@
|
|
1
1
|
module Sqwiggle
|
2
2
|
module Api
|
3
3
|
module Errors
|
4
|
-
class BadRequestError < StandardError;
|
4
|
+
class BadRequestError < StandardError;
|
5
|
+
|
6
|
+
attr_reader :body
|
7
|
+
|
8
|
+
def initialize(response)
|
9
|
+
@body = JSON.parse response.body
|
10
|
+
end
|
11
|
+
|
12
|
+
def message
|
13
|
+
{
|
14
|
+
type:body['type'],
|
15
|
+
param:body['param'],
|
16
|
+
message:body['message']
|
17
|
+
}.inspect
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
5
21
|
end
|
6
22
|
end
|
7
23
|
end
|
@@ -29,12 +29,18 @@ module Sqwiggle
|
|
29
29
|
self.new attrs
|
30
30
|
end
|
31
31
|
|
32
|
-
def create(params, client=Client.new)
|
32
|
+
def create!(params, client=Client.new)
|
33
33
|
attrs = JSON.parse(client.post("#{endpoint}", params).body)
|
34
34
|
attrs.merge! client:client
|
35
35
|
self.new attrs
|
36
36
|
end
|
37
37
|
|
38
|
+
def create(params, client=Client.new)
|
39
|
+
create! params, client
|
40
|
+
rescue Errors::BadRequestError
|
41
|
+
false
|
42
|
+
end
|
43
|
+
|
38
44
|
def endpoint
|
39
45
|
@endpoint || default_endpoint
|
40
46
|
end
|
@@ -45,25 +51,38 @@ module Sqwiggle
|
|
45
51
|
|
46
52
|
end
|
47
53
|
|
48
|
-
def update(params)
|
54
|
+
def update!(params)
|
49
55
|
res = client.put("#{self.class.endpoint}/#{id}", params)
|
50
56
|
attrs = JSON.parse(res.body, :symbolize_names => true)
|
51
57
|
self.attributes = attrs
|
52
58
|
self
|
53
59
|
end
|
54
60
|
|
55
|
-
def
|
56
|
-
|
57
|
-
|
61
|
+
def update(params)
|
62
|
+
update! params
|
63
|
+
rescue Errors::BadRequestError
|
64
|
+
false
|
65
|
+
end
|
66
|
+
|
67
|
+
def save!
|
68
|
+
return update!(self.attributes) if persisted?
|
69
|
+
self.attributes = self.class.create!(attributes, client).attributes
|
70
|
+
self
|
58
71
|
end
|
59
72
|
|
60
73
|
def save
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
74
|
+
return update(self.attributes) if persisted?
|
75
|
+
self.attributes = self.class.create(attributes, client).attributes
|
76
|
+
self
|
77
|
+
end
|
78
|
+
|
79
|
+
def persisted?
|
80
|
+
(id != nil)
|
81
|
+
end
|
82
|
+
|
83
|
+
def delete
|
84
|
+
res = client.delete("#{self.class.endpoint}/#{id}")
|
85
|
+
res.status == 204
|
67
86
|
end
|
68
87
|
|
69
88
|
end
|
data/lib/sqwiggle/api/service.rb
CHANGED
data/lib/sqwiggle/message.rb
CHANGED
data/lib/sqwiggle/version.rb
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Sqwiggle::Api::Errors::BadRequestError do
|
4
|
+
let(:response) { double('response') }
|
5
|
+
|
6
|
+
before do
|
7
|
+
response.stub(:body) do
|
8
|
+
'{"type":"validation","message":"invalid request","param":"name"}'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
subject { described_class.new response }
|
13
|
+
specify { subject.body['type'].should be == "validation" }
|
14
|
+
specify { subject.body['message'].should be == "invalid request" }
|
15
|
+
specify { subject.body['param'].should be == "name" }
|
16
|
+
|
17
|
+
end
|
data/spec/errors_spec.rb
CHANGED
@@ -7,7 +7,7 @@ describe "api error handling" do
|
|
7
7
|
Sqwiggle.token = 'token'
|
8
8
|
|
9
9
|
stub_request(:get, "https://token:X@api.sqwiggle.com/messages").to_return({
|
10
|
-
:body => "
|
10
|
+
:body => '{"type": "validation","message":"invalid request","param":"name"}',
|
11
11
|
:status => 400,
|
12
12
|
:headers => { 'Content-Length' => 3 }
|
13
13
|
})
|
data/spec/message_spec.rb
CHANGED
@@ -113,7 +113,7 @@ describe Sqwiggle::Message do
|
|
113
113
|
end
|
114
114
|
subject { Sqwiggle::Message.new(text:'The Name') }
|
115
115
|
it "saves the new record" do
|
116
|
-
subject.save.should
|
116
|
+
subject.save.should be_true
|
117
117
|
subject.id.should be == 1
|
118
118
|
assert_requested :post, "https://token:X@api.sqwiggle.com/messages"
|
119
119
|
end
|
@@ -127,7 +127,7 @@ describe Sqwiggle::Message do
|
|
127
127
|
end
|
128
128
|
subject { Sqwiggle::Message.new(id:1, text:'The Name') }
|
129
129
|
it "saves the new record" do
|
130
|
-
subject.save.should
|
130
|
+
subject.save.should be_true
|
131
131
|
assert_requested :put, "https://token:X@api.sqwiggle.com/messages/1"
|
132
132
|
end
|
133
133
|
end
|
data/sqwiggle-ruby.gemspec
CHANGED
@@ -24,4 +24,7 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_development_dependency "bundler", "~> 1.3"
|
25
25
|
spec.add_development_dependency "rake"
|
26
26
|
spec.add_development_dependency "pry"
|
27
|
+
spec.add_development_dependency 'rspec'
|
28
|
+
spec.add_development_dependency 'webmock'
|
29
|
+
spec.add_development_dependency 'fuubar'
|
27
30
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sqwiggle-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luke Roberts
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -80,6 +80,48 @@ dependencies:
|
|
80
80
|
- - '>='
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec
|
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
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: webmock
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: fuubar
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
83
125
|
description: Ruby wrapper for the sqwiggle API
|
84
126
|
email:
|
85
127
|
- luke@sqwiggle.com
|
@@ -117,6 +159,7 @@ files:
|
|
117
159
|
- lib/sqwiggle/user.rb
|
118
160
|
- lib/sqwiggle/version.rb
|
119
161
|
- spec/api/client_spec.rb
|
162
|
+
- spec/api/errors/bad_request_error_spec.rb
|
120
163
|
- spec/api/resource_spec.rb
|
121
164
|
- spec/conversation_spec.rb
|
122
165
|
- spec/errors_spec.rb
|
@@ -154,6 +197,7 @@ specification_version: 4
|
|
154
197
|
summary: Ruby wrapper for the sqwiggle API
|
155
198
|
test_files:
|
156
199
|
- spec/api/client_spec.rb
|
200
|
+
- spec/api/errors/bad_request_error_spec.rb
|
157
201
|
- spec/api/resource_spec.rb
|
158
202
|
- spec/conversation_spec.rb
|
159
203
|
- spec/errors_spec.rb
|