ruby-booker 0.0.11 → 0.0.12
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/lib/booker.rb +32 -16
- data/lib/booker/helpers.rb +6 -2
- metadata +30 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 13872ae103db18774786c537673cd9e3fb48a8e2
|
4
|
+
data.tar.gz: 61b27b14c5a83fa426433c00e7ef5e52db08e5f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 705e444dfe817f0cbc6157d9d3addcb9d05cf6f483551d162fefbc2e6636f82714af91b90a4b3ca99d7ce97d453dfed507fa5f0ca6d346d98bb2abf0af51b7ee
|
7
|
+
data.tar.gz: 5ede4748d88c6fbec7396977534c71f8cc74e0cdb57734e3c462500c11cf885398b284c48550bcbfc0f688a226f4e0de39d12483e82b4e2e45cfdef9af5f8a3b
|
data/lib/booker.rb
CHANGED
@@ -2,17 +2,18 @@ require 'httparty'
|
|
2
2
|
require 'booker/helpers'
|
3
3
|
|
4
4
|
module Booker
|
5
|
-
VERSION = "0.0.
|
5
|
+
VERSION = "0.0.12"
|
6
6
|
BASE_HOST = "stable-app.secure-booker.com"
|
7
7
|
BASE_PATH = "/WebService4/json/customerService.svc"
|
8
8
|
|
9
9
|
class Client
|
10
|
-
attr_reader :url, :access_token, :expires_in
|
10
|
+
attr_reader :url, :access_token, :expires_in, :server_time_offset
|
11
11
|
|
12
12
|
def initialize(key, secret)
|
13
13
|
@key = key
|
14
14
|
@secret = secret
|
15
|
-
set_access_token
|
15
|
+
set_access_token!
|
16
|
+
set_server_time_offset!
|
16
17
|
end
|
17
18
|
|
18
19
|
# Useful to pull all of paged results and return them as if you did one
|
@@ -54,15 +55,15 @@ module Booker
|
|
54
55
|
def run_service_availability options = {}
|
55
56
|
url = build_url '/availability/service'
|
56
57
|
defaults = {
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
58
|
+
"EndDateTime" => Time.now.to_i + 60 * 60 * 5,
|
59
|
+
"LocationID" => 3749,
|
60
|
+
"MaxTimesPerTreatment" => 5,
|
61
|
+
"StartDateTime" => Time.now,
|
62
|
+
"TreatmentCategoryID" => 1,
|
63
|
+
"TreatmentSubCategoryID" => 218,
|
64
|
+
"access_token" => @access_token
|
64
65
|
}
|
65
|
-
|
66
|
+
convert_time_to_booker_format! options
|
66
67
|
return_post_response url, defaults, options
|
67
68
|
end
|
68
69
|
|
@@ -73,7 +74,7 @@ module Booker
|
|
73
74
|
defaults =
|
74
75
|
{
|
75
76
|
"access_token" => @access_token,
|
76
|
-
"StartDateTime" =>
|
77
|
+
"StartDateTime" => Time.now,
|
77
78
|
"Itineraries" => [
|
78
79
|
#{
|
79
80
|
#"IsPackage" => false,
|
@@ -88,8 +89,9 @@ module Booker
|
|
88
89
|
],
|
89
90
|
"LocationID" => nil,
|
90
91
|
"MaxTimesPerDay" => nil,
|
91
|
-
"EndDateTime" =>
|
92
|
+
"EndDateTime" => Time.now.to_i + 60 * 60 * 5,
|
92
93
|
}
|
94
|
+
convert_time_to_booker_format! options
|
93
95
|
return_post_response url, defaults, options
|
94
96
|
end
|
95
97
|
|
@@ -188,8 +190,13 @@ module Booker
|
|
188
190
|
return_get_response url
|
189
191
|
end
|
190
192
|
|
191
|
-
|
193
|
+
#http://apidoc.booker.com/Method/Detail/147
|
194
|
+
def get_server_information
|
195
|
+
url = build_url "/server_information", "?access_token=#{@access_token}"
|
196
|
+
return_get_response url
|
197
|
+
end
|
192
198
|
|
199
|
+
private
|
193
200
|
def return_post_response url, defaults, options
|
194
201
|
options = defaults.merge(options)
|
195
202
|
response = post url, options
|
@@ -219,8 +226,7 @@ module Booker
|
|
219
226
|
HTTParty.get url
|
220
227
|
end
|
221
228
|
|
222
|
-
|
223
|
-
def set_access_token
|
229
|
+
def set_access_token!
|
224
230
|
url = build_url '/access_token', "?client_id=#{@key}&client_secret=#{@secret}&grant_type=client_credentials"
|
225
231
|
response = HTTParty.get(url)
|
226
232
|
body = JSON.parse(response.body)
|
@@ -233,6 +239,11 @@ module Booker
|
|
233
239
|
end
|
234
240
|
end
|
235
241
|
|
242
|
+
def set_server_time_offset!
|
243
|
+
@server_time_offset = get_server_information['ServerTimeZoneOffset']
|
244
|
+
end
|
245
|
+
|
246
|
+
|
236
247
|
def base_url
|
237
248
|
"http://" + Booker::BASE_HOST + Booker::BASE_PATH
|
238
249
|
end
|
@@ -240,6 +251,11 @@ module Booker
|
|
240
251
|
def build_url path, query = ''
|
241
252
|
base_url + path + query
|
242
253
|
end
|
254
|
+
|
255
|
+
def convert_time_to_booker_format! options
|
256
|
+
options['StartDateTime'] = Booker::Helpers.format_date options['StartDateTime'], server_time_offset
|
257
|
+
options['EndDateTime'] = Booker::Helpers.format_date options['EndDateTime'], server_time_offset
|
258
|
+
end
|
243
259
|
end
|
244
260
|
|
245
261
|
class ArgumentError < StandardError; end
|
data/lib/booker/helpers.rb
CHANGED
@@ -1,8 +1,12 @@
|
|
1
|
+
require 'active_support/core_ext/date/zones'
|
2
|
+
|
1
3
|
module Booker
|
2
4
|
module Helpers
|
3
5
|
# Formats a ruby date into the format the Booker wants it in their json API
|
4
|
-
def self.format_date time
|
5
|
-
|
6
|
+
def self.format_date time, offset = -5
|
7
|
+
return nil unless time
|
8
|
+
|
9
|
+
"/Date(#{(time.in_time_zone(offset)).to_i * 1000})/"
|
6
10
|
end
|
7
11
|
end
|
8
12
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-booker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jake Craige
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-02-
|
11
|
+
date: 2014-02-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activesupport
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rspec
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,6 +52,20 @@ dependencies:
|
|
38
52
|
- - ">="
|
39
53
|
- !ruby/object:Gem::Version
|
40
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: awesome_print
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
41
69
|
description: Interact with booker api through Ruby
|
42
70
|
email: jake@poeticsystems.com
|
43
71
|
executables: []
|