booker_ruby 3.3.5 → 3.3.6
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/client.rb +8 -0
- data/lib/booker/concerns/date_time_concern.rb +74 -0
- data/lib/booker/request_helper.rb +29 -0
- data/lib/booker/v4.1/customer.rb +1 -1
- data/lib/booker/v4.1/merchant.rb +1 -1
- data/lib/booker/v4/business_rest.rb +1 -0
- data/lib/booker/v4/common_rest.rb +1 -1
- data/lib/booker/v4/models/model.rb +2 -68
- data/lib/booker/v4/request_helper.rb +1 -27
- data/lib/booker/v5/availability.rb +2 -0
- data/lib/booker/version.rb +1 -1
- data/lib/booker_ruby.rb +5 -1
- metadata +4 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 2c591cf33e4fcc339c3c5669f087b08f201af8ed51c5fa6720904a8e333306a7
         | 
| 4 | 
            +
              data.tar.gz: 792f3c94f166f069a13738552171faf32e1227ed5e48a0da7d59e6f3b9d3f652
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 7d02cde048331d194864cecbe0b04a3eb0231fc9a13b688727322e8db17e26d96dfa7bf6068fb2968b5affb7bec4112d2145665e089ca8b5eff746b3f810a967
         | 
| 7 | 
            +
              data.tar.gz: 96973ce4f0f119092bf48dd1f19831f41538e41c4f6e28459f1c26ad034d3f6605b2de7627f825430fab59532031d9192e0c0a90435f8119492a24b3691b22a4
         | 
    
        data/lib/booker/client.rb
    CHANGED
    
    | @@ -1,5 +1,7 @@ | |
| 1 1 | 
             
            module Booker
         | 
| 2 2 | 
             
              class Client
         | 
| 3 | 
            +
                include Booker::RequestHelper
         | 
| 4 | 
            +
             | 
| 3 5 | 
             
                attr_accessor :base_url, :auth_base_url, :client_id, :client_secret, :temp_access_token,
         | 
| 4 6 | 
             
                              :temp_access_token_expires_at, :token_store, :token_store_callback_method, :api_subscription_key,
         | 
| 5 7 | 
             
                              :access_token_scope, :refresh_token, :location_id, :auth_with_client_credentials
         | 
| @@ -70,6 +72,12 @@ module Booker | |
| 70 72 | 
             
                  build_resources(booker_resources, booker_model)
         | 
| 71 73 | 
             
                end
         | 
| 72 74 |  | 
| 75 | 
            +
                def patch(path, data, booker_model=nil)
         | 
| 76 | 
            +
                  booker_resources = get_booker_resources(:patch, path, nil, data.to_json, booker_model)
         | 
| 77 | 
            +
             | 
| 78 | 
            +
                  build_resources(booker_resources, booker_model)
         | 
| 79 | 
            +
                end
         | 
| 80 | 
            +
             | 
| 73 81 | 
             
                def delete(path, params=nil, body=nil, booker_model=nil)
         | 
| 74 82 | 
             
                  booker_resources = get_booker_resources(:delete, path, params, body.to_json, booker_model)
         | 
| 75 83 |  | 
| @@ -0,0 +1,74 @@ | |
| 1 | 
            +
            module Booker
         | 
| 2 | 
            +
              module Concerns
         | 
| 3 | 
            +
                module DateTimeConcern
         | 
| 4 | 
            +
                  # Booker's API hands you back all time as if the business is in server time.
         | 
| 5 | 
            +
                  # First load the time in server time, then return the same hours and minutes in current time zone.
         | 
| 6 | 
            +
                  def time_from_booker_datetime(booker_datetime)
         | 
| 7 | 
            +
                    timestamp = booker_datetime[/\/Date\((.\d+)[\-\+]/, 1].to_i / 1000.to_f
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                    original_tz = Time.zone
         | 
| 10 | 
            +
                    begin
         | 
| 11 | 
            +
                      # Booker's server is always EST
         | 
| 12 | 
            +
                      Time.zone = Booker::Client::BOOKER_SERVER_TIMEZONE
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                      booker_time = Time.zone.at(timestamp)
         | 
| 15 | 
            +
                    ensure
         | 
| 16 | 
            +
                      Time.zone = original_tz
         | 
| 17 | 
            +
                    end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                    # Convert it back to location time without changing hours and minutes
         | 
| 20 | 
            +
                    Time.zone.parse(booker_time.strftime('%Y-%m-%d %H:%M:%S'))
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  # Booker's API requires times to be sent in as if the business is in Eastern Time!
         | 
| 24 | 
            +
                  def time_to_booker_datetime(time)
         | 
| 25 | 
            +
                    original_tz = Time.zone
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                    begin
         | 
| 28 | 
            +
                      # Booker's server is always EST
         | 
| 29 | 
            +
                      Time.zone = Booker::Client::BOOKER_SERVER_TIMEZONE
         | 
| 30 | 
            +
                      timestamp = (Time.zone.parse(time.strftime("%Y-%m-%dT%H:%M:%S")).to_f * 1000).to_i
         | 
| 31 | 
            +
                    ensure
         | 
| 32 | 
            +
                      Time.zone = original_tz
         | 
| 33 | 
            +
                    end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                    "/Date(#{timestamp})/"
         | 
| 36 | 
            +
                  end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                  def timezone_from_booker_timezone(booker_timezone_name)
         | 
| 39 | 
            +
                    normalized_booker_timezone_name = Booker::Helpers::ActiveSupport.to_active_support(booker_timezone_name)
         | 
| 40 | 
            +
                    return normalized_booker_timezone_name if normalized_booker_timezone_name.present?
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                    begin
         | 
| 43 | 
            +
                      Booker::Helpers::LoggingHelper.log_issue(
         | 
| 44 | 
            +
                          'Unable to find time zone name using Booker::Helpers::ActiveSupport.to_active_support',
         | 
| 45 | 
            +
                          booker_timezone_name: booker_timezone_name
         | 
| 46 | 
            +
                      )
         | 
| 47 | 
            +
                    rescue
         | 
| 48 | 
            +
                    end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                    timezone_from_booker_offset!(booker_timezone_name)
         | 
| 51 | 
            +
                  end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                  def timezone_from_booker_offset!(booker_timezone_name)
         | 
| 54 | 
            +
                    booker_offset_match = booker_timezone_name.scan(/(\A)(.*)(?=\))/).first
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                    if booker_offset_match.present?
         | 
| 57 | 
            +
                      booker_offset = booker_offset_match.delete_if { |match| match.blank? }.first
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                      if booker_offset
         | 
| 60 | 
            +
                        booker_timezone_map_key = Booker::Helpers::ActiveSupport.booker_timezone_names.find do |key|
         | 
| 61 | 
            +
                          key.start_with?(booker_offset)
         | 
| 62 | 
            +
                        end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                        return Booker::Helpers::ActiveSupport.to_active_support(booker_timezone_map_key) if booker_timezone_map_key
         | 
| 65 | 
            +
                      end
         | 
| 66 | 
            +
                    end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                    raise Booker::Error
         | 
| 69 | 
            +
                  end
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                  def to_wday(booker_wday); Date.parse(booker_wday).wday; end
         | 
| 72 | 
            +
                end
         | 
| 73 | 
            +
              end
         | 
| 74 | 
            +
            end
         | 
| @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            module Booker
         | 
| 2 | 
            +
              module RequestHelper
         | 
| 3 | 
            +
                DEFAULT_PAGINATION_PARAMS = {
         | 
| 4 | 
            +
                    UsePaging: true,
         | 
| 5 | 
            +
                    PageSize: Integer(ENV['BOOKER_DEFAULT_PAGE_SIZE'] || 10),
         | 
| 6 | 
            +
                    PageNumber: 1
         | 
| 7 | 
            +
                }
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                def build_params(default_params={}, overrides={}, paginated=false)
         | 
| 10 | 
            +
                  default_params.symbolize_keys!
         | 
| 11 | 
            +
                  overrides.symbolize_keys!
         | 
| 12 | 
            +
                  merged = {access_token: access_token}.merge(default_params.merge(overrides))
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  merged.each do |k, v|
         | 
| 15 | 
            +
                    if v.is_a?(Time) || v.is_a?(DateTime)
         | 
| 16 | 
            +
                      merged[k] = Booker::V4::Models::Model.time_to_booker_datetime(v)
         | 
| 17 | 
            +
                    elsif v.is_a?(Date)
         | 
| 18 | 
            +
                      merged[k] = Booker::V4::Models::Model.time_to_booker_datetime(v.in_time_zone)
         | 
| 19 | 
            +
                    end
         | 
| 20 | 
            +
                  end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  if paginated
         | 
| 23 | 
            +
                    DEFAULT_PAGINATION_PARAMS.merge(merged)
         | 
| 24 | 
            +
                  else
         | 
| 25 | 
            +
                    merged
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
            end
         | 
    
        data/lib/booker/v4.1/customer.rb
    CHANGED
    
    
    
        data/lib/booker/v4.1/merchant.rb
    CHANGED
    
    
| @@ -2,76 +2,10 @@ module Booker | |
| 2 2 | 
             
              module V4
         | 
| 3 3 | 
             
                module Models
         | 
| 4 4 | 
             
                  class Model < Booker::Model
         | 
| 5 | 
            -
                     | 
| 6 | 
            -
             | 
| 7 | 
            -
                    # Booker's API hands you back all time as if the business is in server time.
         | 
| 8 | 
            -
                    # First load the time in server time, then return the same hours and minutes in current time zone.
         | 
| 9 | 
            -
                    def self.time_from_booker_datetime(booker_datetime)
         | 
| 10 | 
            -
                      timestamp = booker_datetime[/\/Date\((.\d+)[\-\+]/, 1].to_i / 1000.to_f
         | 
| 11 | 
            -
             | 
| 12 | 
            -
                      original_tz = Time.zone
         | 
| 13 | 
            -
                      begin
         | 
| 14 | 
            -
                        # Booker's server is always EST
         | 
| 15 | 
            -
                        Time.zone = Booker::Client::BOOKER_SERVER_TIMEZONE
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                        booker_time = Time.zone.at(timestamp)
         | 
| 18 | 
            -
                      ensure
         | 
| 19 | 
            -
                        Time.zone = original_tz
         | 
| 20 | 
            -
                      end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                      # Convert it back to location time without changing hours and minutes
         | 
| 23 | 
            -
                      Time.zone.parse(booker_time.strftime('%Y-%m-%d %H:%M:%S'))
         | 
| 24 | 
            -
                    end
         | 
| 25 | 
            -
             | 
| 26 | 
            -
                    # Booker's API requires times to be sent in as if the business is in Eastern Time!
         | 
| 27 | 
            -
                    def self.time_to_booker_datetime(time)
         | 
| 28 | 
            -
                      original_tz = Time.zone
         | 
| 29 | 
            -
             | 
| 30 | 
            -
                      begin
         | 
| 31 | 
            -
                        # Booker's server is always EST
         | 
| 32 | 
            -
                        Time.zone = Booker::Client::BOOKER_SERVER_TIMEZONE
         | 
| 33 | 
            -
                        timestamp = (Time.zone.parse(time.strftime("%Y-%m-%dT%H:%M:%S")).to_f * 1000).to_i
         | 
| 34 | 
            -
                      ensure
         | 
| 35 | 
            -
                        Time.zone = original_tz
         | 
| 36 | 
            -
                      end
         | 
| 37 | 
            -
             | 
| 38 | 
            -
                      "/Date(#{timestamp})/"
         | 
| 39 | 
            -
                    end
         | 
| 5 | 
            +
                    extend ::Booker::Concerns::DateTimeConcern
         | 
| 40 6 |  | 
| 41 | 
            -
                     | 
| 42 | 
            -
                      normalized_booker_timezone_name = Booker::Helpers::ActiveSupport.to_active_support(booker_timezone_name)
         | 
| 43 | 
            -
                      return normalized_booker_timezone_name if normalized_booker_timezone_name.present?
         | 
| 44 | 
            -
             | 
| 45 | 
            -
                      begin
         | 
| 46 | 
            -
                        Booker::Helpers::LoggingHelper.log_issue(
         | 
| 47 | 
            -
                            'Unable to find time zone name using Booker::Helpers::ActiveSupport.to_active_support',
         | 
| 48 | 
            -
                            booker_timezone_name: booker_timezone_name
         | 
| 49 | 
            -
                        )
         | 
| 50 | 
            -
                      rescue
         | 
| 51 | 
            -
                      end
         | 
| 52 | 
            -
             | 
| 53 | 
            -
                      timezone_from_booker_offset!(booker_timezone_name)
         | 
| 54 | 
            -
                    end
         | 
| 55 | 
            -
             | 
| 56 | 
            -
                    def self.timezone_from_booker_offset!(booker_timezone_name)
         | 
| 57 | 
            -
                      booker_offset_match = booker_timezone_name.scan(/(\A)(.*)(?=\))/).first
         | 
| 58 | 
            -
             | 
| 59 | 
            -
                      if booker_offset_match.present?
         | 
| 60 | 
            -
                        booker_offset = booker_offset_match.delete_if { |match| match.blank? }.first
         | 
| 61 | 
            -
             | 
| 62 | 
            -
                        if booker_offset
         | 
| 63 | 
            -
                          booker_timezone_map_key = Booker::Helpers::ActiveSupport.booker_timezone_names.find do |key|
         | 
| 64 | 
            -
                            key.start_with?(booker_offset)
         | 
| 65 | 
            -
                          end
         | 
| 66 | 
            -
             | 
| 67 | 
            -
                          return Booker::Helpers::ActiveSupport.to_active_support(booker_timezone_map_key) if booker_timezone_map_key
         | 
| 68 | 
            -
                        end
         | 
| 69 | 
            -
                      end
         | 
| 70 | 
            -
             | 
| 71 | 
            -
                      raise Booker::Error
         | 
| 72 | 
            -
                    end
         | 
| 7 | 
            +
                    CONSTANTIZE_MODULE = Booker::V4::Models
         | 
| 73 8 |  | 
| 74 | 
            -
                    def self.to_wday(booker_wday); Date.parse(booker_wday).wday; end
         | 
| 75 9 | 
             
                  end
         | 
| 76 10 | 
             
                end
         | 
| 77 11 | 
             
              end
         | 
| @@ -1,33 +1,7 @@ | |
| 1 1 | 
             
            module Booker
         | 
| 2 2 | 
             
              module V4
         | 
| 3 3 | 
             
                module RequestHelper
         | 
| 4 | 
            -
                   | 
| 5 | 
            -
                    UsePaging: true,
         | 
| 6 | 
            -
                    PageSize: Integer(ENV['BOOKER_DEFAULT_PAGE_SIZE'] || 10),
         | 
| 7 | 
            -
                    PageNumber: 1
         | 
| 8 | 
            -
                  }
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                  private
         | 
| 11 | 
            -
             | 
| 12 | 
            -
                  def build_params(default_params={}, overrides={}, paginated=false)
         | 
| 13 | 
            -
                    default_params.symbolize_keys!
         | 
| 14 | 
            -
                    overrides.symbolize_keys!
         | 
| 15 | 
            -
                    merged = {access_token: access_token}.merge(default_params.merge(overrides))
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                    merged.each do |k, v|
         | 
| 18 | 
            -
                      if v.is_a?(Time) || v.is_a?(DateTime)
         | 
| 19 | 
            -
                        merged[k] = Booker::V4::Models::Model.time_to_booker_datetime(v)
         | 
| 20 | 
            -
                      elsif v.is_a?(Date)
         | 
| 21 | 
            -
                        merged[k] = Booker::V4::Models::Model.time_to_booker_datetime(v.in_time_zone)
         | 
| 22 | 
            -
                      end
         | 
| 23 | 
            -
                    end
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                    if paginated
         | 
| 26 | 
            -
                      DEFAULT_PAGINATION_PARAMS.merge(merged)
         | 
| 27 | 
            -
                    else
         | 
| 28 | 
            -
                      merged
         | 
| 29 | 
            -
                    end
         | 
| 30 | 
            -
                  end
         | 
| 4 | 
            +
                  
         | 
| 31 5 | 
             
                end
         | 
| 32 6 | 
             
              end
         | 
| 33 7 | 
             
            end
         | 
    
        data/lib/booker/version.rb
    CHANGED
    
    
    
        data/lib/booker_ruby.rb
    CHANGED
    
    | @@ -16,6 +16,10 @@ require 'booker/booker' | |
| 16 16 | 
             
            # Errors
         | 
| 17 17 | 
             
            require 'booker/errors'
         | 
| 18 18 |  | 
| 19 | 
            +
            # Concerns
         | 
| 20 | 
            +
            require 'booker/concerns/date_time_concern'
         | 
| 21 | 
            +
            require 'booker/request_helper'
         | 
| 22 | 
            +
             | 
| 19 23 | 
             
            # Models
         | 
| 20 24 | 
             
            require 'booker/model'
         | 
| 21 25 |  | 
| @@ -23,6 +27,7 @@ require 'booker/model' | |
| 23 27 | 
             
            require 'booker/v4/models/model'
         | 
| 24 28 |  | 
| 25 29 | 
             
            # Types
         | 
| 30 | 
            +
            require 'booker/v4/request_helper'
         | 
| 26 31 | 
             
            require 'booker/v4/models/type'
         | 
| 27 32 | 
             
            require 'booker/v4/models/country'
         | 
| 28 33 | 
             
            require 'booker/v4/models/status'
         | 
| @@ -95,7 +100,6 @@ require 'booker/v5/models/availability_result' | |
| 95 100 | 
             
            require 'booker/client'
         | 
| 96 101 |  | 
| 97 102 | 
             
            # V4 Rest
         | 
| 98 | 
            -
            require 'booker/v4/request_helper'
         | 
| 99 103 | 
             
            require 'booker/v4/common_rest'
         | 
| 100 104 | 
             
            require 'booker/v4/business_rest'
         | 
| 101 105 | 
             
            require 'booker/v4/customer_rest'
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: booker_ruby
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 3.3. | 
| 4 | 
            +
              version: 3.3.6
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Frederick
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2019- | 
| 11 | 
            +
            date: 2019-03-01 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: httparty
         | 
| @@ -145,12 +145,14 @@ extra_rdoc_files: [] | |
| 145 145 | 
             
            files:
         | 
| 146 146 | 
             
            - lib/booker/booker.rb
         | 
| 147 147 | 
             
            - lib/booker/client.rb
         | 
| 148 | 
            +
            - lib/booker/concerns/date_time_concern.rb
         | 
| 148 149 | 
             
            - lib/booker/config/booker_country_ids_to_iso_codes.yml
         | 
| 149 150 | 
             
            - lib/booker/errors.rb
         | 
| 150 151 | 
             
            - lib/booker/generic_token_store.rb
         | 
| 151 152 | 
             
            - lib/booker/helpers/active_support_helper.rb
         | 
| 152 153 | 
             
            - lib/booker/helpers/logging_helper.rb
         | 
| 153 154 | 
             
            - lib/booker/model.rb
         | 
| 155 | 
            +
            - lib/booker/request_helper.rb
         | 
| 154 156 | 
             
            - lib/booker/v4.1/customer.rb
         | 
| 155 157 | 
             
            - lib/booker/v4.1/merchant.rb
         | 
| 156 158 | 
             
            - lib/booker/v4/business_client.rb
         |