Module: PrioTicket

Defined in:
lib/prioticket.rb,
lib/prioticket/api.rb,
lib/prioticket/engine.rb,
lib/prioticket/ticket.rb,
lib/prioticket/booking.rb,
lib/prioticket/version.rb,
lib/prioticket/reservation.rb,
lib/prioticket/ticket_list.rb,
lib/prioticket/availabilities.rb,
lib/prioticket/ticket_details.rb

Defined Under Namespace

Modules: Config Classes: API, Availabilities, Booking, Engine, Reservation, Ticket, TicketDetails, TicketList

Constant Summary collapse

VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.expected_date_formattype

Formats time in ISO-8601

Returns:

  • (type)
    description


55
56
57
# File 'lib/prioticket.rb', line 55

def self.expected_date_format
  '%Y-%m-%dT%H:%M:%S%z'
end

.openstruct_to_hash(object, hash = {}) ⇒ Object

Converts OpenStruct back to a hash



60
61
62
63
64
65
# File 'lib/prioticket.rb', line 60

def self.openstruct_to_hash(object, hash = {})
  object.each_pair do |key, value|
    hash[key] = value.is_a?(OpenStruct) ? openstruct_to_hash(value) : value
  end
  hash
end

.parse_json_value(obj, k, v) ⇒ Object

Takes a hash and assignes it to the proper attributes.

  • Integers will be parsed as floats

  • Floats will be parsed as floats

  • Boolean values will bu parsed as such

  • Hash and Array will bet a type of ‘OpenStruct’

  • DateTime will be a type of DateType

  • All other values will be used as string



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/prioticket.rb', line 76

def self.parse_json_value(obj, k,v)
  unless v.nil?
    # "2018-03-24T00:00:00+01:00"
    is_integer    = !!Integer(v) rescue false
    is_float      = !!Float(v) rescue false
    is_date_time  = !!DateTime.strptime(v, expected_date_format) rescue false
    if ["true", "false"].include?(v)
      val = (v == 'true')
    elsif is_integer
      val = v.to_i
    elsif is_date_time
      val = DateTime.strptime(v, expected_date_format)
    elsif is_float
      val = v.to_f
    elsif [Hash, Array].include?(v.class)
      val = JSON.parse(v.to_json, object_class: OpenStruct)
    else
      val = v
    end
    obj.instance_variable_set("@#{k}", val)
  end
end

.parsed_date(date) ⇒ type

Formats time in ISO-8601 Expected output: 2016-05-12T14:00:00+04:00 Not expected: 2016-05-12T10:00:00+08:00 / 2016-05-12T18:00:00+00:00

Returns:

  • (type)
    description


42
43
44
45
46
47
48
49
# File 'lib/prioticket.rb', line 42

def self.parsed_date(date)
  if date.is_a?(String)
    date
  elsif [DateTime, Time].include?(date.class)
    date.strftime(expected_date_format)
    # date.strftime('%Y-%m-%d')
  end
end

.set_credentials_from_environmentObject

For testing purpose only: set the username and password in environment variables to make the tests pass with your test credentials.



29
30
31
32
33
34
# File 'lib/prioticket.rb', line 29

def self.set_credentials_from_environment
  # puts "Setting API Key: #{ENV["PRIOTICKET_API_KEY"]}"
  Config.api_key = ENV["PRIOTICKET_API_KEY"]
  Config.environment = :test
  Config.verbose = false
end