class QueueIt::Api::Event

Constants

EVENT_ID_FORMAT
InvalidEventIdFormat
MICROSOFT_TIME_ZONE_INDEX_VALUES
ONE_HOUR
ONE_YEAR
QUEUE_IT_ISO8601_TIME_PRECISION
QUEUE_IT_MINIMAL_NUMBER_OF_REDIRECTS_PER_MINUTE

Attributes

client[RW]

Public Class Methods

new(client) click to toggle source
# File lib/queue_it/api/event.rb, line 10
def initialize(client)
  self.client = client
end

Public Instance Methods

create_or_update(event_id:, display_name:, start_time:, pre_queue_start_time:nil, know_user_secret_key: nil, redirect_url:, end_time: nil, description: "", event_culture_name: "en-US", time_zone: "UTC", queue_number_validity_in_minutes: 30, max_no_of_redirects: 1, custom_layout: "Default layout by Queue-it") click to toggle source
# File lib/queue_it/api/event.rb, line 14
def create_or_update(event_id:, display_name:, start_time:, pre_queue_start_time:nil, know_user_secret_key: nil, redirect_url:, end_time: nil, description: "", event_culture_name: "en-US", time_zone: "UTC", queue_number_validity_in_minutes: 30, max_no_of_redirects: 1, custom_layout: "Default layout by Queue-it")
  raise InvalidEventIdFormat unless valid_event_id_format?(event_id)

  attributes = queue_attributes(
    pre_queue_start_time:             pre_queue_start_time,
    start_time:                       start_time,
    end_time:                         end_time,
    know_user_secret_key:             know_user_secret_key,
    redirect_url:                     redirect_url,
    description:                      description,
    display_name:                     display_name,
    event_culture_name:               event_culture_name,
    queue_number_validity_in_minutes: queue_number_validity_in_minutes,
    time_zone:                        time_zone,
    max_no_of_redirects:              max_no_of_redirects,
    custom_layout:                    custom_layout
    )

  perform_request(:put, event_id, attributes)
end
set_speed(event_id:, max_redirects_per_minute:) click to toggle source
# File lib/queue_it/api/event.rb, line 35
def set_speed(event_id:, max_redirects_per_minute:)
  raise InvalidEventIdFormat unless valid_event_id_format?(event_id)

  number_of_redirects = [max_redirects_per_minute.to_i, QUEUE_IT_MINIMAL_NUMBER_OF_REDIRECTS_PER_MINUTE].max
  attributes          = { "MaxRedirectsPerMinute" => "#{number_of_redirects}" }

  perform_request(:put, "#{event_id}/queue/speed", attributes)
end

Private Instance Methods

format_time(time) click to toggle source
# File lib/queue_it/api/event.rb, line 95
def format_time(time)
  time.iso8601(QUEUE_IT_ISO8601_TIME_PRECISION)
end
perform_request(method, path, body = {}) click to toggle source
# File lib/queue_it/api/event.rb, line 133
def perform_request(method, path, body = {})
  json_response = client.public_send(method, path, body)
  json_response.body
end
queue_attributes(pre_queue_start_time:, start_time:, end_time:, know_user_secret_key:, redirect_url:, description:, display_name:, event_culture_name:, queue_number_validity_in_minutes:, time_zone:, max_no_of_redirects:, custom_layout:) click to toggle source
# File lib/queue_it/api/event.rb, line 103
def queue_attributes(pre_queue_start_time:, start_time:, end_time:, know_user_secret_key:, redirect_url:, description:, display_name:, event_culture_name:, queue_number_validity_in_minutes:, time_zone:, max_no_of_redirects:, custom_layout:)
  {
    "DisplayName"                  => display_name,
    "RedirectUrl"                  => URI(redirect_url).to_s,
    "Description"                  => description,
    "TimeZone"                     => translate_time_zone(time_zone),
    "PreQueueStartTime"            => format_time( utc_pre_queue_start_time(pre_queue_start_time, start_time) ),
    "EventStartTime"               => format_time( utc_start_time(start_time) ),
    "EventEndTime"                 => format_time( utc_end_time(start_time, end_time) ),
    "EventCulture"                 => event_culture_name,
    "MaxNoOfRedirectsPrQueueId"    => "#{max_no_of_redirects}",
    "QueueNumberValidityInMinutes" => "#{queue_number_validity_in_minutes}",
    "AfterEventLogic"              => "RedirectUsersToTargetPage",
    "AfterEventRedirectPage"       => "",
    "JavaScriptSupportEnabled"     => "False",
    "TargetUrlSupportEnabled"      => "True",
    "SafetyNetMode"                => "Disabled",
    "KnowUserSecurity"             => "MD5Hash",
    "KnowUserSecretKey"            => know_user_secret_key,
    "CustomLayout"                 => custom_layout,
    "XUsersInFrontOfYou"           => nil,
    "TargetUrlValidationRegex"     => "",
    "DomainAlias"                  => "",
    "AllowedCustomLayouts"         => [],
    "BrowserCultureEnabled"        => "True",
    "IdleQueueLogic"               => "UseBeforePage",
    "IdleQueueRedirectPage"        => ""
  }
end
translate_time_zone(time_zone) click to toggle source
# File lib/queue_it/api/event.rb, line 99
def translate_time_zone(time_zone)
  MICROSOFT_TIME_ZONE_INDEX_VALUES.fetch(time_zone, time_zone)
end
utc_end_time(start_time, end_time) click to toggle source
# File lib/queue_it/api/event.rb, line 87
def utc_end_time(start_time, end_time)
  end_time && end_time.utc || utc_start_time(start_time) + ONE_YEAR
end
utc_pre_queue_start_time(pre_queue_start_time, start_time) click to toggle source
# File lib/queue_it/api/event.rb, line 91
def utc_pre_queue_start_time(pre_queue_start_time, start_time)
  pre_queue_start_time && pre_queue_start_time.utc || start_time.utc - ONE_HOUR
end
utc_start_time(start_time) click to toggle source
# File lib/queue_it/api/event.rb, line 83
def utc_start_time(start_time)
  start_time.utc
end
valid_event_id_format?(event_id) click to toggle source
# File lib/queue_it/api/event.rb, line 79
def valid_event_id_format?(event_id)
  "#{event_id}".match(EVENT_ID_FORMAT)
end