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", domain_alias: "")
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", domain_alias: "") 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, domain_alias: domain_alias, 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 36 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 96 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 134 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:,domain_alias:)
click to toggle source
# File lib/queue_it/api/event.rb, line 104 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:,domain_alias:) { "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" => domain_alias, "AllowedCustomLayouts" => [], "BrowserCultureEnabled" => "True", "IdleQueueLogic" => "UseBeforePage", "IdleQueueRedirectPage" => "" } end
translate_time_zone(time_zone)
click to toggle source
# File lib/queue_it/api/event.rb, line 100 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 88 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 92 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 84 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 80 def valid_event_id_format?(event_id) "#{event_id}".match(EVENT_ID_FORMAT) end