roomorama_api 0.4.0 → 0.4.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.
data/.travis.yml CHANGED
@@ -2,7 +2,8 @@ language: ruby
2
2
  rvm:
3
3
  - "1.9.2"
4
4
  - "1.9.3"
5
+ - "2.0.0"
5
6
  - jruby-19mode # JRuby in 1.9 mode
6
- - rbx-19mode
7
+ # - rbx-2.2.1
7
8
  # uncomment this line if your project needs to run something other than `rake`:
8
9
  script: bundle exec rake test
data/README.md CHANGED
@@ -81,7 +81,7 @@ Currently this gem does not handle any oauth authentication yet. Host and Guest
81
81
 
82
82
  Turn on debug mode with
83
83
 
84
- RoomoramaApi::Client = true
84
+ RoomoramaApi::Client.debug = true
85
85
 
86
86
 
87
87
  ### Can't find the API Call you want?
data/lib/roomorama_api.rb CHANGED
@@ -8,6 +8,7 @@ require "roomorama_api/api/users"
8
8
  require "roomorama_api/api/host_properties"
9
9
  require "roomorama_api/api/host_availabilities"
10
10
  require "roomorama_api/api/host_inquiries"
11
+ require "roomorama_api/api/errors"
11
12
 
12
13
  require "faraday"
13
14
  require "json"
@@ -24,6 +25,8 @@ module RoomoramaApi
24
25
  include RoomoramaApi::Api::HostAvailabilities
25
26
  include RoomoramaApi::Api::HostInquiries
26
27
 
28
+ include RoomoramaApi::Api::Errors
29
+
27
30
  def initialize(oauth_token=nil)
28
31
  @oauth_token = oauth_token
29
32
  end
@@ -63,7 +66,7 @@ module RoomoramaApi
63
66
  def connection(method_name, options, verb)
64
67
  conn = Faraday.new(:url => api_url) do |faraday|
65
68
  faraday.request :url_encoded
66
- #faraday.response(:logger) if self.class.debug
69
+ faraday.response(:logger) if self.class.debug
67
70
  faraday.adapter Faraday.default_adapter
68
71
  faraday.headers['User-Agent'] = "RoomoramaApi gem v#{VERSION}"
69
72
  faraday.headers['Authorization'] = "Bearer " + @oauth_token if @oauth_token
@@ -79,31 +82,11 @@ module RoomoramaApi
79
82
 
80
83
 
81
84
  def raise_errors(response)
82
- message = "(#{response.status})"
83
-
84
- case response.status.to_i
85
- when 400
86
- raise BadRequest, message
87
- when 401
88
- raise Unauthorized, message
89
- when 403
90
- raise General, message
91
- when 404
92
- raise NotFound, message
93
- when 500
94
- raise InternalError, "An internal error is thrown."
95
- when 502, 503
96
- raise Unavailable, message
97
- end
85
+ if e = HTTP_STATUS_ERRORS[response.status.to_i]
86
+ raise e
87
+ end
98
88
  end
99
89
 
100
- end
101
-
102
- class BadRequest < StandardError; end
103
- class Unauthorized < StandardError; end
104
- class General < StandardError; end
105
- class Unavailable < StandardError; end
106
- class InternalError < StandardError; end
107
- class NotFound < StandardError; end
90
+ end # end class Client
108
91
 
109
- end
92
+ end # end module RoomoramaApi
@@ -0,0 +1,72 @@
1
+ module RoomoramaApi
2
+ module Api
3
+ module Errors
4
+
5
+ #According to https://www.roomorama.com/api/documentation
6
+
7
+ class BadRequest < StandardError
8
+ def initialize
9
+ super("Bad Request")
10
+ end
11
+ end
12
+
13
+ class Unauthorized < StandardError
14
+ def initialize
15
+ super("You're not authorized to access this resource, make sure you're sending the right authorization header in your request")
16
+ end
17
+ end
18
+
19
+ class General < StandardError
20
+ def initialize
21
+ super("Generic error")
22
+ end
23
+ end
24
+
25
+ class Unavailable < StandardError
26
+ def initialize
27
+ super("Unavailable")
28
+ end
29
+ end
30
+
31
+ class UnprocessableEntity < StandardError
32
+ def initialize
33
+ super("Something went wrong while saving or updating your object, make sure the data you're sending in the request is correct")
34
+ end
35
+ end
36
+
37
+ class InternalError < StandardError
38
+ def initialize
39
+ super("An error has occurred in Roomorama service")
40
+ end
41
+ end
42
+
43
+ class NotFound < StandardError
44
+ def initialize
45
+ super("The resource doesn't exist")
46
+ end
47
+ end
48
+
49
+ class Conflict < StandardError
50
+ def initialize
51
+ super("The request cannot be performed because of the state the resource is in")
52
+ end
53
+ end
54
+
55
+ # HTTP code => error class mapping
56
+
57
+ HTTP_STATUS_ERRORS = {
58
+ 400 => BadRequest,
59
+ 401 => Unauthorized,
60
+ 403 => General,
61
+ 404 => NotFound,
62
+ 409 => Conflict,
63
+ 422 => UnprocessableEntity,
64
+ 500 => InternalError,
65
+ 502 => Unavailable,
66
+ 503 => Unavailable
67
+ }
68
+
69
+ end # end module Errors
70
+ end # end module Api
71
+ end # end module RoomoramaApi
72
+
@@ -1,3 +1,3 @@
1
1
  module RoomoramaApi
2
- VERSION = "0.4.0"
2
+ VERSION = "0.4.1"
3
3
  end
@@ -179,6 +179,15 @@ class RoomoramaApiTest < MiniTest::Unit::TestCase
179
179
  assert_equal result["result"]["id"], 9999
180
180
  end
181
181
 
182
+ #### Errors
183
+
184
+ def test_raise_not_found_error
185
+ FakeWeb.register_uri(:get, "https://api.roomorama.com/v1.0/destinations", body: "Nothing found", status: ["404", "Not Found"])
186
+ assert_raises ::RoomoramaApi::Api::Errors::NotFound do
187
+ @client.destinations_all
188
+ end
189
+ end
190
+
182
191
  # def test_get_data_for_an_empty_property
183
192
  # assert_raises RoomoramaApi::NotFound do
184
193
  # result = @client.properties_get_data 500
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roomorama_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-11-22 00:00:00.000000000 Z
12
+ date: 2013-12-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
@@ -92,6 +92,7 @@ files:
92
92
  - Rakefile
93
93
  - lib/roomorama_api.rb
94
94
  - lib/roomorama_api/api/destinations.rb
95
+ - lib/roomorama_api/api/errors.rb
95
96
  - lib/roomorama_api/api/favorites.rb
96
97
  - lib/roomorama_api/api/host_availabilities.rb
97
98
  - lib/roomorama_api/api/host_inquiries.rb