sqwiggle-ruby 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c96444e1599a78bc667b4fa719e89ba6657c5669
4
- data.tar.gz: 3db518ea9a461c24af426565f8c84791b104c588
3
+ metadata.gz: 337c69c157e6af33a4d852b43fd83867bde0fd27
4
+ data.tar.gz: 0caa91ae54889f9718ce9a847255a34f15bc8adf
5
5
  SHA512:
6
- metadata.gz: 6f73fb590c240d8ed98eb995539dc1caafcc54c663636dbd8f7781d94606bd6fef456b647cfea2460256dae52d0a92b5deefd7f107ae38ecb0aec12f3a97228b
7
- data.tar.gz: 2e0464663d867a7c6c2ef9cce8d91cd940316f215485046b1946e48a39ce309e67743e641b256ebd0c7b39775a13c91d2dfc9cf19cec2af6825a646edf0de63d
6
+ metadata.gz: be9226f208fcf0257a5f7b1de72c47f636f8700f652372a6f13b103e6b89ea3a8973cd6b97b2ed150e048465e07f0cd6c1c52c2797884198ec4c7b5b692a146f
7
+ data.tar.gz: 5fcb090da68dd6dbacaef49d580a913f8925487ad1937077708df6e2cd80fe6a1437958e42e5510a1b61d825080f788b7269c8da0094cd8c337439930948c64d
data/Gemfile CHANGED
@@ -1,8 +1,4 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'rspec'
4
- gem 'webmock'
5
- gem 'fuubar'
6
-
7
3
  # Specify your gem's dependencies in sqwiggle-ruby.gemspec
8
4
  gemspec
@@ -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 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
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;end;
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 delete
56
- res = client.delete("#{self.class.endpoint}/#{id}")
57
- res.status == 204
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
- if(id != nil)
62
- update(self.attributes)
63
- else
64
- self.attributes = self.class.create(attributes, client).attributes
65
- end
66
- true
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
@@ -16,6 +16,10 @@ module Sqwiggle
16
16
  klass.find id, client
17
17
  end
18
18
 
19
+ def new(params={})
20
+ klass.new ({client:client}.merge(params))
21
+ end
22
+
19
23
  end
20
24
  end
21
25
  end
@@ -9,6 +9,8 @@ module Sqwiggle
9
9
  attribute :mentions, Array
10
10
  attribute :updated_at, DateTime
11
11
  attribute :created_at, DateTime
12
+ attribute :format, String
13
+ attribute :parse, Boolean, default:true
12
14
 
13
15
  def author
14
16
  if @author[:type] == 'user'
@@ -1,3 +1,3 @@
1
1
  module Sqwiggle
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -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 be == true
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 be == true
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
@@ -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.2
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-24 00:00:00.000000000 Z
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