roomorama_api 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,23 +1,31 @@
1
+ ## v0.2.0
2
+ * New API Calls for Host
3
+ * host_properties_create
4
+ * host_properties_update
5
+ * host_availabilities_list
6
+ * host_availabilities_update
7
+ * Namespacing API ruby files
8
+
1
9
  ## v0.1.0
2
10
 
3
11
  * Initial release
4
12
  * Supports the following API calls
5
- * destinations_all
6
- * properties_find
7
- * properties_get_data
8
- * properties_find_similar
9
- * properties_availabilities
10
- * properties_price_check
11
- * properties_reviews
12
- * favorites_list
13
- * favorites_create
14
- * favorites_delete
15
- * perks_list
16
- * perks_get_data
17
- * users_me
18
- * users_update_profile
19
- * users_get_data
20
- * users_register
21
- * users_reviews
22
- * hosts_properties_list
23
- * hosts_properties_show
13
+ * destinations_all
14
+ * properties_find
15
+ * properties_get_data
16
+ * properties_find_similar
17
+ * properties_availabilities
18
+ * properties_price_check
19
+ * properties_reviews
20
+ * favorites_list
21
+ * favorites_create
22
+ * favorites_delete
23
+ * perks_list
24
+ * perks_get_data
25
+ * users_me
26
+ * users_update_profile
27
+ * users_get_data
28
+ * users_register
29
+ * users_reviews
30
+ * hosts_properties_list
31
+ * hosts_properties_show
data/README.md CHANGED
@@ -12,7 +12,7 @@ This gem does not handle OAuth authentication or token generation. You may want
12
12
 
13
13
  Add this line to your application's Gemfile:
14
14
 
15
- gem 'roomorama_api', :git => 'git@github.com:tmlee/roomorama_api.git'
15
+ gem 'roomorama_api'
16
16
 
17
17
  And then execute:
18
18
 
@@ -68,8 +68,12 @@ Currently this gem does not handle any oauth authentication yet. Host and Guest
68
68
  users_get_data
69
69
  users_register
70
70
  users_reviews
71
- hosts_properties_list
72
- hosts_properties_show
71
+ host_properties_list
72
+ host_properties_show
73
+ host_properties_create
74
+ host_properties_update
75
+ host_availabilities_list
76
+ host_availabilities_update
73
77
 
74
78
  ### Can't find the API Call you want?
75
79
 
@@ -0,0 +1,9 @@
1
+ module RoomoramaApi
2
+ module Api
3
+ module Destinations
4
+ def destinations_all(options={})
5
+ api_call "destinations", options
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,17 @@
1
+ module RoomoramaApi
2
+ module Api
3
+ module Favorites
4
+ def favorites_list(options = {})
5
+ api_call "favorites", options
6
+ end
7
+
8
+ def favorites_create(options = {})
9
+ api_call "favorites", options, :post
10
+ end
11
+
12
+ def favorites_delete(id, options = {})
13
+ api_call "favorites/" + id.to_s, options, :delete
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,13 @@
1
+ module RoomoramaApi
2
+ module Api
3
+ module HostAvailabilities
4
+ def host_availabilities_list(room_id, options={})
5
+ api_call "host/rooms/#{room_id}/availabilities.json", options
6
+ end
7
+
8
+ def host_availabilities_update(room_id, options={})
9
+ api_call "host/rooms/#{room_id}/availabilities.json", options, :put
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,21 @@
1
+ module RoomoramaApi
2
+ module Api
3
+ module HostProperties
4
+ def host_properties_list(options={})
5
+ api_call "host/rooms", options
6
+ end
7
+
8
+ def host_properties_show(room_id, options={})
9
+ api_call "host/rooms/" + room_id.to_s, options
10
+ end
11
+
12
+ def host_properties_create(room_id, options={})
13
+ api_call "host/rooms/" + room_id.to_s, options, :post
14
+ end
15
+
16
+ def host_properties_update(room_id, options={})
17
+ api_call "host/rooms/" + room_id.to_s, options, :put
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,13 @@
1
+ module RoomoramaApi
2
+ module Api
3
+ module Perks
4
+ def perks_list(options={})
5
+ api_call "perks", options
6
+ end
7
+
8
+ def perks_get_data(perk_id, options={})
9
+ api_call "perks/" + perk_id.to_s, options
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,29 @@
1
+ module RoomoramaApi
2
+ module Api
3
+ module Properties
4
+ def properties_find(options={})
5
+ api_call "rooms", options
6
+ end
7
+
8
+ def properties_get_data(room_id, options={})
9
+ api_call "rooms/" + room_id.to_s, options
10
+ end
11
+
12
+ def properties_find_similar(room_id, options={})
13
+ api_call "rooms/" + room_id.to_s + "/similar", options
14
+ end
15
+
16
+ def properties_availabilities(room_id, options={})
17
+ api_call "rooms/" + room_id.to_s + "/availabilities", options
18
+ end
19
+
20
+ def properties_price_check(room_id, options={})
21
+ api_call "inquiries/new.json", options.merge(room_id: room_id)
22
+ end
23
+
24
+ def properties_reviews(room_id, options={})
25
+ api_call "rooms/" + room_id.to_s + "/reviews", options
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,25 @@
1
+ module RoomoramaApi
2
+ module Api
3
+ module Users
4
+ def users_me(options={})
5
+ api_call "me", options
6
+ end
7
+
8
+ def users_update_profile(options={})
9
+ api_call "me", options, :put
10
+ end
11
+
12
+ def users_get_data(user_id, options={})
13
+ api_call "users/" + user_id.to_s, options
14
+ end
15
+
16
+ def users_register(options={})
17
+ api_call "users", options, :post
18
+ end
19
+
20
+ def users_reviews(user_id, options={})
21
+ api_call "users/" + user_id.to_s + "/reviews", options
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,3 +1,3 @@
1
1
  module RoomoramaApi
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/roomorama_api.rb CHANGED
@@ -1,182 +1,106 @@
1
1
  require "roomorama_api/version"
2
+
3
+ require "roomorama_api/api/destinations"
4
+ require "roomorama_api/api/favorites"
5
+ require "roomorama_api/api/perks"
6
+ require "roomorama_api/api/properties"
7
+ require "roomorama_api/api/users"
8
+ require "roomorama_api/api/host_properties"
9
+ require "roomorama_api/api/host_availabilities"
10
+
2
11
  require "faraday"
3
12
  require "json"
4
13
 
5
14
  module RoomoramaApi
6
15
 
7
- class Client
8
-
9
- def initialize(oauth_token=nil)
10
- @oauth_token == ''
11
- @oauth_token = oauth_token if oauth_token
12
- end
13
-
14
-
15
- BASE_URL = 'https://api.roomorama.com/'
16
- API_VERSION = 'v1.0'
17
-
18
- ### Destinations
19
-
20
- def destinations_all(options={})
21
- api_call "destinations", options
22
- end
23
-
24
- #### Properties
25
-
26
- def properties_find(options={})
27
- api_call "rooms", options
28
- end
29
-
30
- def properties_get_data(room_id, options={})
31
- api_call "rooms/" + room_id.to_s, options
32
- end
33
-
34
- def properties_find_similar(room_id, options={})
35
- api_call "rooms/" + room_id.to_s + "/similar", options
36
- end
37
-
38
- def properties_availabilities(room_id, options={})
39
- api_call "rooms/" + room_id.to_s + "/availabilities", options
40
- end
41
-
42
- def properties_price_check(room_id, options={})
43
- api_call "inquiries/new.json", options.merge(room_id: room_id)
44
- end
45
-
46
- def properties_reviews(room_id, options={})
47
- api_call "rooms/" + room_id.to_s + "/reviews", options
48
- end
49
-
50
-
51
- #### Favorites
52
-
53
- def favorites_list(options = {})
54
- api_call "favorites", options
55
- end
56
-
57
- def favorites_create(options = {})
58
- api_call "favorites", options, :post
59
- end
60
-
61
- def favorites_delete(id, options = {})
62
- api_call "favorites/" + id.to_s, options, :delete
63
- end
64
-
65
- #### Perks
66
-
67
- def perks_list(options={})
68
- api_call "perks", options
69
- end
70
-
71
- def perks_get_data(perk_id, options={})
72
- api_call "perks/" + perk_id.to_s, options
73
- end
74
-
75
- #### Users
76
-
77
- def users_me(options={})
78
- api_call "me", options
79
- end
80
-
81
- def users_update_profile(options={})
82
- api_call "me", options, :put
83
- end
84
-
85
- def users_get_data(user_id, options={})
86
- api_call "users/" + user_id.to_s, options
87
- end
88
-
89
- def users_register(options={})
90
- api_call "users", options, :post
91
- end
92
-
93
- def users_reviews(user_id, options={})
94
- api_call "users/" + user_id.to_s + "/reviews", options
95
- end
96
-
97
- #### Hosts/Properties
98
-
99
- def hosts_properties_list(options={})
100
- api_call "host/rooms", options
101
- end
102
-
103
- def hosts_properties_show(room_id, options={})
104
- api_call "host/rooms/" + room_id.to_s, options
105
- end
106
-
107
-
108
- private
109
-
110
- def api_url
111
- BASE_URL + API_VERSION + '/'
112
- end
113
-
114
- def api_call(method_name, options, verb=:get)
115
- response = connection(method_name, options, verb)
116
- parse_response response
117
- end
118
-
119
- def parse_response(response)
120
- raise_errors response
121
- if response.body == " "
122
- {}
123
- else
124
- JSON.parse response.body
125
- end
126
- end
127
-
128
- def connection(method_name, options, verb)
129
-
130
- conn = Faraday.new(:url => api_url) do |faraday|
131
- faraday.request :url_encoded
132
- #faraday.response :logger
133
- faraday.adapter Faraday.default_adapter
134
- faraday.headers['Authorization'] = "Bearer " + @oauth_token
135
- end
136
-
137
- if verb == :put
138
- response = conn.put(method_name, options)
139
- elsif verb == :post
140
- response = conn.post(method_name, options)
141
- elsif verb == :delete
142
- response = conn.delete(method_name)
143
- else
144
- response = conn.get(method_name + "?" + to_query_params(options))
145
- end
146
- end
147
-
148
-
149
- def to_query_params(options)
150
- options.collect { |key, value| "#{key}=#{value}" }.join('&')
151
- end
152
-
153
- def raise_errors(response)
154
- message = "(#{response.status})"
155
-
156
- case response.status.to_i
157
- when 400
158
- raise BadRequest, message
159
- when 401
160
- raise Unauthorized, message
161
- when 403
162
- raise General, message
163
- when 404
164
- raise NotFound, message
165
- when 500
166
- raise InternalError, "An internal error is thrown."
167
- when 502..503
168
- raise Unavailable, message
169
- end
170
- end
171
-
172
- end
173
-
174
-
175
- class BadRequest < StandardError; end
176
- class Unauthorized < StandardError; end
177
- class General < StandardError; end
178
- class Unavailable < StandardError; end
179
- class InternalError < StandardError; end
180
- class NotFound < StandardError; end
16
+ class Client
17
+
18
+ include RoomoramaApi::Api::Destinations
19
+ include RoomoramaApi::Api::Favorites
20
+ include RoomoramaApi::Api::Perks
21
+ include RoomoramaApi::Api::Properties
22
+ include RoomoramaApi::Api::Users
23
+ include RoomoramaApi::Api::HostProperties
24
+ include RoomoramaApi::Api::HostAvailabilities
25
+
26
+ def initialize(oauth_token=nil)
27
+ @oauth_token = oauth_token
28
+ end
29
+
30
+ BASE_URL = 'https://api.roomorama.com/'
31
+ API_VERSION = 'v1.0'
32
+
33
+ private
34
+
35
+ def api_url
36
+ BASE_URL + API_VERSION + '/'
37
+ end
38
+
39
+ def api_call(method_name, options, verb=:get)
40
+ response = connection(method_name, options, verb)
41
+ puts response.inspect
42
+ parse_response response
43
+ end
44
+
45
+ def parse_response(response)
46
+ raise_errors response
47
+ if response.body == " "
48
+ {}
49
+ else
50
+ JSON.parse response.body
51
+ end
52
+ end
53
+
54
+ def connection(method_name, options, verb)
55
+ conn = Faraday.new(:url => api_url) do |faraday|
56
+ faraday.request :url_encoded
57
+ #faraday.response :logger
58
+ faraday.adapter Faraday.default_adapter
59
+ faraday.headers['Authorization'] = "Bearer " + @oauth_token if @oauth_token
60
+ end
61
+
62
+ if verb == :put
63
+ response = conn.put(method_name, options)
64
+ elsif verb == :post
65
+ response = conn.post(method_name, options)
66
+ elsif verb == :delete
67
+ response = conn.delete(method_name)
68
+ else
69
+ response = conn.get(method_name + "?" + to_query_params(options))
70
+ end
71
+ end
72
+
73
+
74
+ def to_query_params(options)
75
+ options.collect { |key, value| "#{key}=#{value}" }.join('&')
76
+ end
77
+
78
+ def raise_errors(response)
79
+ message = "(#{response.status})"
80
+
81
+ case response.status.to_i
82
+ when 400
83
+ raise BadRequest, message
84
+ when 401
85
+ raise Unauthorized, message
86
+ when 403
87
+ raise General, message
88
+ when 404
89
+ raise NotFound, message
90
+ when 500
91
+ raise InternalError, "An internal error is thrown."
92
+ when 502, 503
93
+ raise Unavailable, message
94
+ end
95
+ end
96
+
97
+ end
98
+
99
+ class BadRequest < StandardError; end
100
+ class Unauthorized < StandardError; end
101
+ class General < StandardError; end
102
+ class Unavailable < StandardError; end
103
+ class InternalError < StandardError; end
104
+ class NotFound < StandardError; end
181
105
 
182
106
  end
@@ -0,0 +1,20 @@
1
+ {
2
+ "result": {
3
+ "availabilities": [
4
+ {
5
+ "date": "2013-01-01",
6
+ "available": true,
7
+ "currency_code": "SGD",
8
+ "nightly_rate": 10,
9
+ "weekly_rate": 70,
10
+ "monthly_rate": 300,
11
+ "can_checkin": true,
12
+ "can_checkout": true,
13
+ "default": true,
14
+ "inquiry_id": "null"
15
+ }
16
+ ]
17
+ },
18
+ "count": 1,
19
+ "status": 200
20
+ }
@@ -0,0 +1,15 @@
1
+ [
2
+ {
3
+ "date": "2013-08-01",
4
+ "available": true,
5
+ "currency_code": "SGD",
6
+ "nightly_rate": 1,
7
+ "weekly_rate": 1,
8
+ "monthly_rate": 1,
9
+ "can_checkin": true,
10
+ "can_checkout": true,
11
+ "default": false,
12
+ "inquiry_id": "null",
13
+ "errors": []
14
+ }
15
+ ]
@@ -3,173 +3,191 @@ require 'roomorama_api'
3
3
 
4
4
  class RoomoramaApiTest < MiniTest::Unit::TestCase
5
5
 
6
- OAUTH_TOKEN = 'xxx' # Insert OAuth token to test
7
-
8
- def setup
9
- @client = RoomoramaApi::Client.new(OAUTH_TOKEN)
10
- end
11
-
12
- def test_order
13
- :alpha
14
- end
15
-
16
- #### Destinations
17
-
18
- def test_destinations_all
19
- stub_get("https://api.roomorama.com/v1.0/destinations", 'destinations/all.json')
20
- result = @client.destinations_all
21
- assert_equal result["result"].count, 5288
22
- end
23
-
24
- #### Properties
25
-
26
- def test_properties_find
27
- stub_get("https://api.roomorama.com/v1.0/rooms?destination=singapore&num_guests=2&num_rooms=2&max_price=300&min_price=100", 'properties/find.json')
28
- result = @client.properties_find(destination:"singapore", num_guests:2, num_rooms:2, max_price:300, min_price:100)
29
- assert_equal result["result"].count, 10
30
- end
31
-
32
- def test_properties_get_data
33
- stub_get("https://api.roomorama.com/v1.0/rooms/3002", 'properties/get_data.json')
34
- result = @client.properties_get_data 3002
35
- assert_equal result["result"]["id"], 3002
36
- end
37
-
38
- def test_properties_find_similar
39
- stub_get("https://api.roomorama.com/v1.0/rooms/3002/similar", 'properties/find_similar.json')
40
- result = @client.properties_find_similar 3002
41
- assert_equal result["result"].count, 5
42
- assert_equal result["result"].first["title"], "Madison Avenue Apartment for rent on weekends"
43
- end
44
-
45
- def test_properties_availabilities
46
- stub_get("https://api.roomorama.com/v1.0/rooms/3002/availabilities?start_date=2013-12-01&end_date=2013-12-31", 'properties/availabilities.json')
47
- result = @client.properties_availabilities 3002, start_date:"2013-12-01", end_date:"2013-12-31"
48
- assert_equal result["result"].count, 31
49
- assert_equal result["result"].first["available"], true
50
- end
51
-
52
- def test_properties_price_check
53
- stub_get("https://api.roomorama.com/v1.0/inquiries/new.json?room_id=60425&check_in=2013-07-01&check_out=2013-07-10", 'properties/price_check.json')
54
- result = @client.properties_price_check 60425, check_in:"2013-07-01", check_out:"2013-07-10"
55
- assert_equal result["result"]["total"], 9168
56
- assert_equal result["result"]["check_in"], "2013-07-01"
57
- assert_equal result["result"]["check_out"], "2013-07-10"
58
- end
59
-
60
- def test_properties_reviews
61
- stub_get("https://api.roomorama.com/v1.0/rooms/8582/reviews", 'properties/reviews.json')
62
- result = @client.properties_reviews 8582
63
- assert_equal result["result"].first["rating"], 1
64
- assert_equal result["result"].first["room"]["id"], 8582
65
- end
66
-
67
- #### Favorites
68
-
69
- def test_favorites_list
70
- stub_get("https://api.roomorama.com/v1.0/favorites", 'favorites/list.json')
71
- result = @client.favorites_list
72
- assert_equal result["result"].first["title"], "[7801] STUNNING WEST VILLAGE"
73
- end
74
-
75
- def test_favorites_create
76
- stub_post("https://api.roomorama.com/v1.0/favorites", "favorites/create.json")
77
- result = @client.favorites_create room_id: 2291
78
- assert_equal result["room_id"], 2291
79
- end
80
-
81
- #### Perks
82
-
83
- def test_perks_list
84
- stub_get("https://api.roomorama.com/v1.0/perks?destination=singapore", "perks/list.json")
85
- result = @client.perks_list destination: "singapore"
86
- assert_equal result["count"], 25
87
- end
88
-
89
- def test_perks_get_data
90
- stub_get("https://api.roomorama.com/v1.0/perks/25", "perks/get_data.json")
91
- result = @client.perks_get_data 25
92
- assert_equal result["result"]["name"], "Mygola Trip Planning"
93
- end
94
-
95
- #### Users
96
-
97
- def test_users_me
98
- stub_get("https://api.roomorama.com/v1.0/me", "users/me.json")
99
- result = @client.users_me
100
- assert_equal result["result"]["id"], 1419
101
- end
102
-
103
- def test_users_update_profile
104
- stub_put("https://api.roomorama.com/v1.0/me", "users/update_profile.json")
105
- result = @client.users_update_profile
106
- assert_equal result["result"]["id"], 1419
107
- end
108
-
109
- def test_users_get_data
110
- stub_get("https://api.roomorama.com/v1.0/users/1900", "users/get_data.json")
111
- result = @client.users_get_data 1900
112
- assert_equal result["result"]["id"], 1900
113
- end
114
-
115
- def test_users_register
116
- stub_post("https://api.roomorama.com/v1.0/users", "users/register.json")
117
- result = @client.users_register login: "test123", password: "testapi", email: "test@example.com", first_name: "Skrillex", last_name: "Avicii"
118
- assert_equal result["result"]["login"], "test123"
119
- end
120
-
121
- def test_users_reviews
122
- stub_get("https://api.roomorama.com/v1.0/users/291/reviews", "users/reviews.json")
123
- result = @client.users_reviews 291
124
- assert_equal result["result"][0]["host_to_guest"], false
125
- assert_equal result["result"][0]["host"]["id"], 291
126
- end
127
-
128
- #### Hosts/Properties
129
-
130
- def test_hosts_properties_list
131
- stub_get("https://api.roomorama.com/v1.0/host/rooms", "hosts/properties/list.json")
132
- result = @client.hosts_properties_list
133
- assert_equal result["result"][0]["id"], 9999
134
- end
135
-
136
- def test_hosts_properties_show
137
- stub_get("https://api.roomorama.com/v1.0/host/rooms/9999", "hosts/properties/show.json")
138
- result = @client.hosts_properties_show 9999
139
- assert_equal result["result"]["id"], 9999
140
- end
141
-
142
- # def test_get_data_for_an_empty_property
143
- # assert_raises RoomoramaApi::NotFound do
144
- # result = @client.properties_get_data 500
145
- # end
146
- # end
147
-
148
- # def test_get_information_about_me_oauth
149
- # result = @client.users_me
150
- # # assert_equal
151
- # end
152
-
153
- #### Favorites
154
-
155
- # def test_favorites_create
156
- # result = @client.favorites_create room_id: 1890
157
- # end
158
-
159
- # def test_favorites_list
160
- # result = @client.favorites_list
161
- # puts result
162
- # end
163
-
164
- # def test_favorites_delete
165
- # result = @client.favorites_delete 1890
166
- # puts result
167
- #end
168
-
169
- #### Perks
170
-
171
-
172
- #### Users
6
+ OAUTH_TOKEN = 'xxx' # Insert OAuth token to test
7
+
8
+ def setup
9
+ @client = RoomoramaApi::Client.new(OAUTH_TOKEN)
10
+ end
11
+
12
+ def test_order
13
+ :alpha
14
+ end
15
+
16
+ #### Destinations
17
+
18
+ def test_destinations_all
19
+ stub_get("https://api.roomorama.com/v1.0/destinations", 'destinations/all.json')
20
+ result = @client.destinations_all
21
+ assert_equal result["result"].count, 5288
22
+ end
23
+
24
+ #### Properties
25
+
26
+ def test_properties_find
27
+ stub_get("https://api.roomorama.com/v1.0/rooms?destination=singapore&num_guests=2&num_rooms=2&max_price=300&min_price=100", 'properties/find.json')
28
+ result = @client.properties_find(destination:"singapore", num_guests:2, num_rooms:2, max_price:300, min_price:100)
29
+ assert_equal result["result"].count, 10
30
+ end
31
+
32
+ def test_properties_get_data
33
+ stub_get("https://api.roomorama.com/v1.0/rooms/3002", 'properties/get_data.json')
34
+ result = @client.properties_get_data 3002
35
+ assert_equal result["result"]["id"], 3002
36
+ end
37
+
38
+ def test_properties_find_similar
39
+ stub_get("https://api.roomorama.com/v1.0/rooms/3002/similar", 'properties/find_similar.json')
40
+ result = @client.properties_find_similar 3002
41
+ assert_equal result["result"].count, 5
42
+ assert_equal result["result"].first["title"], "Madison Avenue Apartment for rent on weekends"
43
+ end
44
+
45
+ def test_properties_availabilities
46
+ stub_get("https://api.roomorama.com/v1.0/rooms/3002/availabilities?start_date=2013-12-01&end_date=2013-12-31", 'properties/availabilities.json')
47
+ result = @client.properties_availabilities 3002, start_date:"2013-12-01", end_date:"2013-12-31"
48
+ assert_equal result["result"].count, 31
49
+ assert_equal result["result"].first["available"], true
50
+ end
51
+
52
+ def test_properties_price_check
53
+ stub_get("https://api.roomorama.com/v1.0/inquiries/new.json?room_id=60425&check_in=2013-07-01&check_out=2013-07-10", 'properties/price_check.json')
54
+ result = @client.properties_price_check 60425, check_in:"2013-07-01", check_out:"2013-07-10"
55
+ assert_equal result["result"]["total"], 9168
56
+ assert_equal result["result"]["check_in"], "2013-07-01"
57
+ assert_equal result["result"]["check_out"], "2013-07-10"
58
+ end
59
+
60
+ def test_properties_reviews
61
+ stub_get("https://api.roomorama.com/v1.0/rooms/8582/reviews", 'properties/reviews.json')
62
+ result = @client.properties_reviews 8582
63
+ assert_equal result["result"].first["rating"], 1
64
+ assert_equal result["result"].first["room"]["id"], 8582
65
+ end
66
+
67
+ #### Favorites
68
+
69
+ def test_favorites_list
70
+ stub_get("https://api.roomorama.com/v1.0/favorites", 'favorites/list.json')
71
+ result = @client.favorites_list
72
+ assert_equal result["result"].first["title"], "[7801] STUNNING WEST VILLAGE"
73
+ end
74
+
75
+ def test_favorites_create
76
+ stub_post("https://api.roomorama.com/v1.0/favorites", "favorites/create.json")
77
+ result = @client.favorites_create room_id: 2291
78
+ assert_equal result["room_id"], 2291
79
+ end
80
+
81
+ #### Perks
82
+
83
+ def test_perks_list
84
+ stub_get("https://api.roomorama.com/v1.0/perks?destination=singapore", "perks/list.json")
85
+ result = @client.perks_list destination: "singapore"
86
+ assert_equal result["count"], 25
87
+ end
88
+
89
+ def test_perks_get_data
90
+ stub_get("https://api.roomorama.com/v1.0/perks/25", "perks/get_data.json")
91
+ result = @client.perks_get_data 25
92
+ assert_equal result["result"]["name"], "Mygola Trip Planning"
93
+ end
94
+
95
+ #### Users
96
+
97
+ def test_users_me
98
+ stub_get("https://api.roomorama.com/v1.0/me", "users/me.json")
99
+ result = @client.users_me
100
+ assert_equal result["result"]["id"], 1419
101
+ end
102
+
103
+ def test_users_update_profile
104
+ stub_put("https://api.roomorama.com/v1.0/me", "users/update_profile.json")
105
+ result = @client.users_update_profile
106
+ assert_equal result["result"]["id"], 1419
107
+ end
108
+
109
+ def test_users_get_data
110
+ stub_get("https://api.roomorama.com/v1.0/users/1900", "users/get_data.json")
111
+ result = @client.users_get_data 1900
112
+ assert_equal result["result"]["id"], 1900
113
+ end
114
+
115
+ def test_users_register
116
+ stub_post("https://api.roomorama.com/v1.0/users", "users/register.json")
117
+ result = @client.users_register login: "test123", password: "testapi", email: "test@example.com", first_name: "Skrillex", last_name: "Avicii"
118
+ assert_equal result["result"]["login"], "test123"
119
+ end
120
+
121
+ def test_users_reviews
122
+ stub_get("https://api.roomorama.com/v1.0/users/291/reviews", "users/reviews.json")
123
+ result = @client.users_reviews 291
124
+ assert_equal result["result"][0]["host_to_guest"], false
125
+ assert_equal result["result"][0]["host"]["id"], 291
126
+ end
127
+
128
+ #### Hosts/Properties
129
+
130
+ def test_hosts_properties_list
131
+ stub_get("https://api.roomorama.com/v1.0/host/rooms", "hosts/properties/list.json")
132
+ result = @client.host_properties_list
133
+ assert_equal result["result"][0]["id"], 9999
134
+ end
135
+
136
+ def test_hosts_properties_show
137
+ stub_get("https://api.roomorama.com/v1.0/host/rooms/9999", "hosts/properties/show.json")
138
+ result = @client.host_properties_show 9999
139
+ assert_equal result["result"]["id"], 9999
140
+ end
141
+
142
+ # def test_hosts_properties_create
143
+ # end
144
+
145
+ # def test_hosts_properties_delete
146
+ # end
147
+
148
+ def test_hosts_availabilities_list
149
+ stub_get("https://api.roomorama.com/v1.0/host/rooms/9999/availabilities.json", "hosts/availabilities/list.json")
150
+ result = @client.host_availabilities_list 9999
151
+ assert_equal result["count"], 1
152
+ end
153
+
154
+ def test_hosts_availabilities_update
155
+ stub_put("https://api.roomorama.com/v1.0/host/rooms/9999/availabilities.json", "hosts/availabilities/update.json")
156
+ result = @client.host_availabilities_update 9999
157
+ assert_equal result[0].is_a?(Hash), true
158
+ end
159
+
160
+ # def test_get_data_for_an_empty_property
161
+ # assert_raises RoomoramaApi::NotFound do
162
+ # result = @client.properties_get_data 500
163
+ # end
164
+ # end
165
+
166
+ # def test_get_information_about_me_oauth
167
+ # result = @client.users_me
168
+ # # assert_equal
169
+ # end
170
+
171
+ #### Favorites
172
+
173
+ # def test_favorites_create
174
+ # result = @client.favorites_create room_id: 1890
175
+ # end
176
+
177
+ # def test_favorites_list
178
+ # result = @client.favorites_list
179
+ # puts result
180
+ # end
181
+
182
+ # def test_favorites_delete
183
+ # result = @client.favorites_delete 1890
184
+ # puts result
185
+ #end
186
+
187
+ #### Perks
188
+
189
+
190
+ #### Users
173
191
 
174
192
 
175
193
  end
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.1.0
4
+ version: 0.2.0
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-06-23 00:00:00.000000000 Z
12
+ date: 2013-07-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
@@ -91,11 +91,20 @@ files:
91
91
  - README.md
92
92
  - Rakefile
93
93
  - lib/roomorama_api.rb
94
+ - lib/roomorama_api/api/destinations.rb
95
+ - lib/roomorama_api/api/favorites.rb
96
+ - lib/roomorama_api/api/host_availabilities.rb
97
+ - lib/roomorama_api/api/host_properties.rb
98
+ - lib/roomorama_api/api/perks.rb
99
+ - lib/roomorama_api/api/properties.rb
100
+ - lib/roomorama_api/api/users.rb
94
101
  - lib/roomorama_api/version.rb
95
102
  - roomorama_api.gemspec
96
103
  - test/fixtures/destinations/all.json
97
104
  - test/fixtures/favorites/create.json
98
105
  - test/fixtures/favorites/list.json
106
+ - test/fixtures/hosts/availabilities/list.json
107
+ - test/fixtures/hosts/availabilities/update.json
99
108
  - test/fixtures/hosts/properties/list.json
100
109
  - test/fixtures/hosts/properties/show.json
101
110
  - test/fixtures/perks/get_data.json
@@ -141,6 +150,8 @@ test_files:
141
150
  - test/fixtures/destinations/all.json
142
151
  - test/fixtures/favorites/create.json
143
152
  - test/fixtures/favorites/list.json
153
+ - test/fixtures/hosts/availabilities/list.json
154
+ - test/fixtures/hosts/availabilities/update.json
144
155
  - test/fixtures/hosts/properties/list.json
145
156
  - test/fixtures/hosts/properties/show.json
146
157
  - test/fixtures/perks/get_data.json