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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/booker.rb +32 -16
  3. data/lib/booker/helpers.rb +6 -2
  4. metadata +30 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4f80b4594e5162fa246e3f30c6aa4739d4dc02b5
4
- data.tar.gz: 8edf4fe1175bd9ef224ebc83fe1389f5fe77fa6b
3
+ metadata.gz: 13872ae103db18774786c537673cd9e3fb48a8e2
4
+ data.tar.gz: 61b27b14c5a83fa426433c00e7ef5e52db08e5f1
5
5
  SHA512:
6
- metadata.gz: f5d3ee007a60a4bd2c04f7bafada9e100fb58a25a604a28192dc3bb1d78ac69bdda0205d15ae289fe4dcf301a6ad8df111f906f352c642e5442aeda236e059d0
7
- data.tar.gz: 6f5b717ff314da2eb0b9a5befd76393f85136f8f18e4bc2f40e1c6b342097b0e45b7316534f60c6d45f18fd94d2618c986ea744360b369dc7016d33a58bdc5bf
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.11"
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
- "EndDateTime" => "/Date(1337223600000)/",
58
- "LocationID" => 3749,
59
- "MaxTimesPerTreatment" => 5,
60
- "StartDateTime" => "/Date(1337004000000)/",
61
- "TreatmentCategoryID" => 1,
62
- "TreatmentSubCategoryID" => 218,
63
- "access_token" => @access_token
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
- # TODO: run options given start/end time through booker:helpers.format_date
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" => "/Date(#{Time.now.to_i})/",
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" => "/Date(#{Time.now.to_i + 60 * 60 * 24})/",
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
- private
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
@@ -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
- "/Date(#{time.to_i * 1000})/"
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.11
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-21 00:00:00.000000000 Z
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: []