ruby-booker 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
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: []