prioticket 0.1.0
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 +7 -0
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +213 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/prioticket/api.rb +94 -0
- data/lib/prioticket/availabilities.rb +89 -0
- data/lib/prioticket/booking.rb +197 -0
- data/lib/prioticket/config.rb +36 -0
- data/lib/prioticket/engine.rb +13 -0
- data/lib/prioticket/prioticket_error.rb +28 -0
- data/lib/prioticket/reservation.rb +122 -0
- data/lib/prioticket/ticket.rb +34 -0
- data/lib/prioticket/ticket_details.rb +97 -0
- data/lib/prioticket/ticket_list.rb +54 -0
- data/lib/prioticket/version.rb +3 -0
- data/lib/prioticket.rb +109 -0
- data/prioticket.gemspec +40 -0
- metadata +150 -0
@@ -0,0 +1,36 @@
|
|
1
|
+
#
|
2
|
+
# Configuration object for storing some parameters required for making transactions
|
3
|
+
#
|
4
|
+
module PrioTicket::Config
|
5
|
+
class << self
|
6
|
+
attr_accessor :api_key
|
7
|
+
attr_accessor :environment
|
8
|
+
attr_accessor :verbose
|
9
|
+
|
10
|
+
# Set's the default value's to nil and false
|
11
|
+
# @return [Hash] configuration options
|
12
|
+
def init!
|
13
|
+
@defaults = {
|
14
|
+
:@api_key => nil,
|
15
|
+
:@environment => 'test',
|
16
|
+
:@verbose => false,
|
17
|
+
}
|
18
|
+
end
|
19
|
+
|
20
|
+
# Resets the value's to there previous value (instance_variable)
|
21
|
+
# @return [Hash] configuration options
|
22
|
+
def reset!
|
23
|
+
@defaults.each { |key, value| instance_variable_set(key, value) }
|
24
|
+
end
|
25
|
+
|
26
|
+
# Set's the new value's as instance variables
|
27
|
+
# @return [Hash] configuration options
|
28
|
+
def update!
|
29
|
+
@defaults.each do |key, value|
|
30
|
+
instance_variable_set(key, value) unless instance_variable_defined?(key)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
init!
|
35
|
+
reset!
|
36
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module PrioTicket
|
2
|
+
#
|
3
|
+
# Simpel extend on the +Rails::Engine+ to add support for a new config section within
|
4
|
+
# the environment configs
|
5
|
+
#
|
6
|
+
# @example default
|
7
|
+
# # /config/environments/development.rb
|
8
|
+
# config.prioticket.api_key = "12343465sdfgsadr324"
|
9
|
+
#
|
10
|
+
class Engine < Rails::Engine
|
11
|
+
config.prioticket = PrioTicket::Config
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
class PrioTicketError < StandardError
|
2
|
+
attr_accessor :error_message
|
3
|
+
attr_accessor :error_code
|
4
|
+
|
5
|
+
# def initialize
|
6
|
+
# # @error_message = error_message
|
7
|
+
# # @error_code = error_code
|
8
|
+
# # @description =
|
9
|
+
# end
|
10
|
+
|
11
|
+
# def self.error_code_mapping
|
12
|
+
# {
|
13
|
+
# "NO_AVAILABILITY" => { exception_name: "No Availability Exception", explanation: "The request cannot be fulfilled because there is insufficient availability.", http_status_code: "400 Bad Request"},
|
14
|
+
# "INVALID_PRODUCT" => { exception_name: "Invalid Product Exception", explanation: "The specified product does not exist.", http_status_code: "400 Bad Request"},
|
15
|
+
# "INVALID_RESERVATION" => { exception_name: "Invalid Reservation Exception", explanation: "The specified reservation does not exist or is not in a valid state.", http_status_code: "400 Bad Request"},
|
16
|
+
# "INVALID_BOOKING" => { exception_name: "Invalid Booking Exception", explanation: "The specified booking does not exist or is not in a valid state.", http_status_code: "400 Bad Request"},
|
17
|
+
# "INVALID_REQUEST" => { exception_name: "Invalid Identifier Exception", explanation: "Invalid request contents.", http_status_code: "400 x-request-identif => er header invalid"},
|
18
|
+
# "AUTHORIZATION_FAILURE" => { exception_name: "Invalid Authentication Exception", explanation: "The provided credentials are not valid.", http_status_code: "401 x-request-authenticati => n header invalid."},
|
19
|
+
# "VALIDATION_FAILURE" => { exception_name: "Validation Exception", explanation: "The request object contains inconsistent or invalid data or is missing data.", http_status_code: "400 Bad Request"},
|
20
|
+
# "INVALID_TICKET_CLASS" => { exception_name: "Invalid TicketClass Exception", explanation: "This endpoint can only be requested for ticket_class 2/ticket_class 3 (product of managed capacity).", http_status_code: "400 Bad Request"},
|
21
|
+
# "AUTHORIZATION_FAILURE" => { exception_name: "Authorization Exception", explanation: "The provided credentials are not valid.", http_status_code: "401 Unauthorized"},
|
22
|
+
# "BOOKING_CANCELLED" => { exception_name: "Redeem Booking Cancelled Exception", explanation: "This booking has been cancelled.", http_status_code: "400 Bad Request"},
|
23
|
+
# "INVALID_TICKET_CODE" => { exception_name: "Redeem Ticketcode Invalid Exception", explanation: "Provided ticket code is not valid.", http_status_code: "400 Bad Request"},
|
24
|
+
# "DATE_MISMATCH" => { exception_name: "Redeem Date Mismatch Exception", explanation: "This ticket isn't valid for today.", http_status_code: "400 Bad Request"},
|
25
|
+
# "INTERNAL_SYSTEM_FAILURE" => { exception_name: "InternalSystem Exception", explanation: "An error occurred that is unexpected and/or doesn’t fit any of the types above.", http_status_code: "500 Internal Server Error"}
|
26
|
+
# }
|
27
|
+
# end
|
28
|
+
end
|
@@ -0,0 +1,122 @@
|
|
1
|
+
module PrioTicket
|
2
|
+
|
3
|
+
# Describes a Reservation
|
4
|
+
#
|
5
|
+
# @author [henkm]
|
6
|
+
#
|
7
|
+
class Reservation
|
8
|
+
|
9
|
+
attr_accessor :identifier
|
10
|
+
attr_accessor :distributor_id
|
11
|
+
attr_accessor :ticket_id
|
12
|
+
attr_accessor :pickup_point_id
|
13
|
+
attr_accessor :from_date_time
|
14
|
+
attr_accessor :to_date_time
|
15
|
+
attr_accessor :booking_details
|
16
|
+
attr_accessor :distributor_reference
|
17
|
+
|
18
|
+
attr_accessor :reservation_reference
|
19
|
+
attr_accessor :booking_status
|
20
|
+
attr_accessor :cancellation_date_time
|
21
|
+
|
22
|
+
def initialize(args)
|
23
|
+
return if args.nil?
|
24
|
+
args.each do |k,v|
|
25
|
+
PrioTicket.parse_json_value(self, k,v)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def success
|
30
|
+
booking_status == "Reserved"
|
31
|
+
end
|
32
|
+
for meth in [:success?, :confirmed, :confirmed?, :reserved, :reserved?]
|
33
|
+
alias_method meth, :success
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
#
|
38
|
+
# Sends the reservation request tot the API
|
39
|
+
#
|
40
|
+
def save
|
41
|
+
request_reservation
|
42
|
+
end
|
43
|
+
|
44
|
+
#
|
45
|
+
# Cancels the current reservation
|
46
|
+
#
|
47
|
+
# @return <Reservation>
|
48
|
+
def cancel
|
49
|
+
result = PrioTicket::API.call(cancel_request_body, identifier)
|
50
|
+
parse_result(result)
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
#
|
56
|
+
# Sends the reservation request to the API endpoint
|
57
|
+
# and enriches current object with status and reference.
|
58
|
+
#
|
59
|
+
def request_reservation
|
60
|
+
result = PrioTicket::API.call(request_body, identifier)
|
61
|
+
parse_result(result)
|
62
|
+
end
|
63
|
+
|
64
|
+
|
65
|
+
#
|
66
|
+
# Parses the return value from the API
|
67
|
+
# `{"response_type"=>"reserve", "data"=>
|
68
|
+
# {"reservation_reference"=>"1522065689487477",
|
69
|
+
# "distributor_reference"=>"TEST_RESERVATION",
|
70
|
+
# "booking_status"=>"Reserved"}}`
|
71
|
+
#
|
72
|
+
# @return [type] [description]
|
73
|
+
def parse_result(result)
|
74
|
+
self.booking_status = result["data"]["booking_status"]
|
75
|
+
self.reservation_reference = result["data"]["reservation_reference"]
|
76
|
+
if result["data"]["cancellation_date_time"]
|
77
|
+
PrioTicket.parse_json_value(self, :cancellation_date_time, result["data"]["cancellation_date_time"])
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
|
82
|
+
# Computes the request body to send to the API cancel_reserve endpoint
|
83
|
+
def cancel_request_body
|
84
|
+
{
|
85
|
+
request_type: "cancel_reserve",
|
86
|
+
data: {
|
87
|
+
distributor_id: distributor_id,
|
88
|
+
reservation_reference: reservation_reference,
|
89
|
+
distributor_reference: distributor_reference
|
90
|
+
}
|
91
|
+
}
|
92
|
+
end
|
93
|
+
|
94
|
+
#
|
95
|
+
# Computes the request body to send to the API endpoint
|
96
|
+
# @param distributor_id Integer
|
97
|
+
# @param ticket_id Integer
|
98
|
+
# @param from_date String
|
99
|
+
# @param until_date String
|
100
|
+
#
|
101
|
+
# @return Hash
|
102
|
+
def request_body
|
103
|
+
booking_details_array = booking_details.to_a.map{|bd| bd.to_h}
|
104
|
+
body = {
|
105
|
+
request_type: "reserve",
|
106
|
+
data: {
|
107
|
+
distributor_id: distributor_id.to_s,
|
108
|
+
ticket_id: ticket_id.to_s,
|
109
|
+
from_date_time: PrioTicket.parsed_date(from_date_time),
|
110
|
+
to_date_time: PrioTicket.parsed_date(to_date_time),
|
111
|
+
booking_details: booking_details_array,
|
112
|
+
distributor_reference: distributor_reference
|
113
|
+
}
|
114
|
+
}
|
115
|
+
|
116
|
+
# add pickuppoint to body, if present
|
117
|
+
body[:data][:pickup_point_id] = pickup_point_id if pickup_point_id
|
118
|
+
return body
|
119
|
+
end
|
120
|
+
|
121
|
+
end
|
122
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module PrioTicket
|
2
|
+
|
3
|
+
# Describes a single result from the [TicketList]
|
4
|
+
#
|
5
|
+
# @author [henkm]
|
6
|
+
#
|
7
|
+
class Ticket
|
8
|
+
|
9
|
+
attr_accessor :identifier
|
10
|
+
attr_accessor :distributor_id
|
11
|
+
attr_accessor :ticket_id
|
12
|
+
attr_accessor :ticket_title
|
13
|
+
attr_accessor :venue_name
|
14
|
+
attr_accessor :txt_language
|
15
|
+
|
16
|
+
def initialize(args)
|
17
|
+
return if args.nil?
|
18
|
+
args.each do |k,v|
|
19
|
+
PrioTicket.parse_json_value(self, k,v)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
#
|
25
|
+
# Queries the TicketDetail method and retruns
|
26
|
+
# a [TicketDetails] object.
|
27
|
+
#
|
28
|
+
def details
|
29
|
+
PrioTicket::TicketDetails.find(distributor_id: distributor_id, ticket_id: ticket_id, identifier: identifier)
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
module PrioTicket
|
2
|
+
|
3
|
+
#
|
4
|
+
# This API provides all the ticket information that is available in
|
5
|
+
# the PrioTicket system for requested `ticket_id`.
|
6
|
+
#
|
7
|
+
# @author [henkm]
|
8
|
+
#
|
9
|
+
class TicketDetails
|
10
|
+
|
11
|
+
attr_accessor :identifier
|
12
|
+
attr_accessor :distributor_id
|
13
|
+
|
14
|
+
# attributes already available from ticketlist
|
15
|
+
attr_already_known_from_ticketlist = [:ticket_id, :ticket_title, :venue_name, :txt_language]
|
16
|
+
for att in attr_already_known_from_ticketlist
|
17
|
+
attr_accessor att
|
18
|
+
end
|
19
|
+
|
20
|
+
detailed_attributes = [:short_description, :long_description, :highlights,
|
21
|
+
:duration, :combi_ticket, :ticket_entry_notes, :tags, :included, :company_opening_times,
|
22
|
+
:book_size_min, :book_size_max, :supplier_url, :ticket_class, :start_date, :end_date,
|
23
|
+
:booking_start_date, :images, :currency, :product_language, :pickup_points,
|
24
|
+
:pickup_point_details, :ticket_type_details]
|
25
|
+
|
26
|
+
for att in detailed_attributes
|
27
|
+
attr_accessor att
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
def initialize(args=nil)
|
32
|
+
return if args.nil?
|
33
|
+
args.each do |k,v|
|
34
|
+
PrioTicket.parse_json_value(self, k,v)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
#
|
40
|
+
# Calls the request type 'details' with given
|
41
|
+
#
|
42
|
+
# @param distributor_id Integer
|
43
|
+
# @return TicketDetails
|
44
|
+
def self.find(distributor_id: nil, ticket_id: nil, identifier: nil)
|
45
|
+
result = PrioTicket::API.call(request_body(ticket_id: ticket_id, distributor_id: distributor_id), identifier)
|
46
|
+
new_obj = self.new(result["data"])
|
47
|
+
new_obj.distributor_id = distributor_id
|
48
|
+
new_obj.identifier = identifier
|
49
|
+
return new_obj
|
50
|
+
end
|
51
|
+
|
52
|
+
#
|
53
|
+
# Computes the request body to send to the API endpoint
|
54
|
+
# @param distributor_id Integer
|
55
|
+
#
|
56
|
+
# @return Hash
|
57
|
+
def self.request_body(ticket_id: nil, distributor_id: nil)
|
58
|
+
{
|
59
|
+
request_type: "details",
|
60
|
+
data: {
|
61
|
+
distributor_id: distributor_id,
|
62
|
+
ticket_id: ticket_id
|
63
|
+
}
|
64
|
+
}
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
#
|
69
|
+
# Finds availabilities for given dates
|
70
|
+
#
|
71
|
+
# @param from_date: DateTime
|
72
|
+
# @param until_date: DateTime
|
73
|
+
#
|
74
|
+
# @return [type] [description]
|
75
|
+
def availabilities(from_date: Time.now, until_date: Time.now+(60*60*24*21))
|
76
|
+
PrioTicket::Availabilities.find(distributor_id: distributor_id, ticket_id: ticket_id, identifier: identifier, from_date: from_date, until_date: until_date)
|
77
|
+
end
|
78
|
+
|
79
|
+
def reserve_timeslot
|
80
|
+
# "request_type": "reserve",
|
81
|
+
# "data": {
|
82
|
+
# "distributor_id": "501",
|
83
|
+
# "ticket_id": "509",
|
84
|
+
# "pickup_point_id": "Wyndham_Apollo_hotel",
|
85
|
+
# "from_date_time": "2017-11-22T09:00:00+01:00",
|
86
|
+
# "to_date_time": "2017-11-23T09:00:00+01:00",
|
87
|
+
# "booking_details": [
|
88
|
+
# {
|
89
|
+
# "ticket_type": "ADULT",
|
90
|
+
# "count": 1
|
91
|
+
# }
|
92
|
+
# ],
|
93
|
+
# "distributor_reference": "ABC123456"
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module PrioTicket
|
2
|
+
|
3
|
+
#
|
4
|
+
# This API provides all the tickets that are available in the PrioTicket system per distributor.
|
5
|
+
#
|
6
|
+
# @author [henkm]
|
7
|
+
#
|
8
|
+
class TicketList
|
9
|
+
|
10
|
+
attr_accessor :tickets
|
11
|
+
attr_accessor :distributor_id
|
12
|
+
attr_accessor :identifier
|
13
|
+
|
14
|
+
def initialize(args, distributor_id, identifier)
|
15
|
+
@tickets = []
|
16
|
+
|
17
|
+
# Add ticket details as array of TicketListItem objects
|
18
|
+
for ticket_hash in args["data"]["tickets"]
|
19
|
+
ticket = Ticket.new(ticket_hash)
|
20
|
+
ticket.distributor_id = distributor_id
|
21
|
+
ticket.identifier = identifier
|
22
|
+
@tickets << ticket
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
#
|
27
|
+
# Calls the request type 'list' with given
|
28
|
+
#
|
29
|
+
# @param distributor_id Integer
|
30
|
+
# @return [TicketList]
|
31
|
+
def self.find(distributor_id: nil, identifier: '')
|
32
|
+
result = PrioTicket::API.call(request_body(distributor_id: distributor_id), identifier, false)
|
33
|
+
return_obj = self.new(result, distributor_id, identifier)
|
34
|
+
return_obj.distributor_id = distributor_id
|
35
|
+
return_obj.identifier = identifier
|
36
|
+
return return_obj
|
37
|
+
end
|
38
|
+
|
39
|
+
#
|
40
|
+
# Computes the request body to send to the API endpoint
|
41
|
+
# @param distributor_id Integer
|
42
|
+
#
|
43
|
+
# @return Hash
|
44
|
+
def self.request_body(distributor_id: nil)
|
45
|
+
{
|
46
|
+
request_type: "list",
|
47
|
+
data: {
|
48
|
+
distributor_id: distributor_id
|
49
|
+
}
|
50
|
+
}
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
data/lib/prioticket.rb
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
# require dependencies
|
2
|
+
require 'digest'
|
3
|
+
require 'rest_client'
|
4
|
+
require 'json'
|
5
|
+
require 'base64'
|
6
|
+
require 'ostruct'
|
7
|
+
require 'date'
|
8
|
+
|
9
|
+
# require gem files
|
10
|
+
require "prioticket/version"
|
11
|
+
require "prioticket/prioticket_error"
|
12
|
+
require "prioticket/config"
|
13
|
+
require "prioticket/engine" if defined?(Rails) && Rails::VERSION::MAJOR.to_i >= 3
|
14
|
+
|
15
|
+
# require API parts
|
16
|
+
require "prioticket/api"
|
17
|
+
require "prioticket/ticket_list"
|
18
|
+
require "prioticket/ticket"
|
19
|
+
require "prioticket/ticket_details"
|
20
|
+
require "prioticket/availabilities"
|
21
|
+
require "prioticket/reservation"
|
22
|
+
require "prioticket/booking"
|
23
|
+
|
24
|
+
module PrioTicket
|
25
|
+
|
26
|
+
# For testing purpose only: set the username and password
|
27
|
+
# in environment variables to make the tests pass with your test
|
28
|
+
# credentials.
|
29
|
+
def self.set_credentials_from_environment
|
30
|
+
# puts "Setting API Key: #{ENV["PRIOTICKET_API_KEY"]}"
|
31
|
+
Config.api_key = ENV["PRIOTICKET_API_KEY"]
|
32
|
+
Config.environment = :test
|
33
|
+
Config.verbose = false
|
34
|
+
end
|
35
|
+
|
36
|
+
#
|
37
|
+
# Formats time in ISO-8601
|
38
|
+
# Expected output: 2016-05-12T14:00:00+04:00
|
39
|
+
# Not expected: 2016-05-12T10:00:00+08:00 / 2016-05-12T18:00:00+00:00
|
40
|
+
#
|
41
|
+
# @return [type] [description]
|
42
|
+
def self.parsed_date(date)
|
43
|
+
if date.is_a?(String)
|
44
|
+
date
|
45
|
+
elsif [DateTime, Time].include?(date.class)
|
46
|
+
date.strftime(expected_date_format)
|
47
|
+
# date.strftime('%Y-%m-%d')
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
#
|
52
|
+
# Formats time in ISO-8601
|
53
|
+
#
|
54
|
+
# @return [type] [description]
|
55
|
+
def self.expected_date_format
|
56
|
+
'%Y-%m-%dT%H:%M:%S%z'
|
57
|
+
end
|
58
|
+
|
59
|
+
# Converts OpenStruct back to a hash
|
60
|
+
def self.openstruct_to_hash(object, hash = {})
|
61
|
+
object.each_pair do |key, value|
|
62
|
+
hash[key] = value.is_a?(OpenStruct) ? openstruct_to_hash(value) : value
|
63
|
+
end
|
64
|
+
hash
|
65
|
+
end
|
66
|
+
|
67
|
+
#
|
68
|
+
# Takes a hash and assignes it to the proper attributes.
|
69
|
+
# - Integers will be parsed as floats
|
70
|
+
# - Floats will be parsed as floats
|
71
|
+
# - Boolean values will bu parsed as such
|
72
|
+
# - Hash and Array will bet a type of 'OpenStruct'
|
73
|
+
# - DateTime will be a type of DateType
|
74
|
+
# - All other values will be used as string
|
75
|
+
#
|
76
|
+
def self.parse_json_value(obj, k,v)
|
77
|
+
unless v.nil?
|
78
|
+
# "2018-03-24T00:00:00+01:00"
|
79
|
+
is_integer = !!Integer(v) rescue false
|
80
|
+
is_float = !!Float(v) rescue false
|
81
|
+
is_date_time = !!DateTime.strptime(v, expected_date_format) rescue false
|
82
|
+
if ["true", "false"].include?(v)
|
83
|
+
val = (v == 'true')
|
84
|
+
elsif is_integer
|
85
|
+
val = v.to_i
|
86
|
+
elsif is_date_time
|
87
|
+
val = DateTime.strptime(v, expected_date_format)
|
88
|
+
elsif is_float
|
89
|
+
val = v.to_f
|
90
|
+
elsif [Hash, Array].include?(v.class)
|
91
|
+
val = JSON.parse(v.to_json, object_class: OpenStruct)
|
92
|
+
else
|
93
|
+
val = v
|
94
|
+
end
|
95
|
+
obj.instance_variable_set("@#{k}", val)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
|
104
|
+
# docs:
|
105
|
+
# WNYE9On0Jqn/fivlUVgeyeYckLubVqxJ5mryhfBOfKk=
|
106
|
+
|
107
|
+
|
108
|
+
# real:
|
109
|
+
# OTU3IqrnoXVn5QvUsZIoTfKIyOEzOo9BFmWFQFtZbHk=
|
data/prioticket.gemspec
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'prioticket/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "prioticket"
|
8
|
+
spec.version = PrioTicket::VERSION
|
9
|
+
spec.authors = ["Henk Meijer"]
|
10
|
+
spec.email = ["hmeijer@eskesmedia.nl"]
|
11
|
+
|
12
|
+
spec.summary = %q{Ruby implementation of the PrioTicket API}
|
13
|
+
spec.description = %q{Ruby implementation of the PrioTicket API}
|
14
|
+
spec.homepage = "https://github.com/henkm/prioticket"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
18
|
+
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
19
|
+
if spec.respond_to?(:metadata)
|
20
|
+
# spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
|
21
|
+
else
|
22
|
+
raise "RubyGems 2.0 or newer is required to protect against " \
|
23
|
+
"public gem pushes."
|
24
|
+
end
|
25
|
+
|
26
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
27
|
+
f.match(%r{^(test|spec|features)/})
|
28
|
+
end
|
29
|
+
spec.bindir = "exe"
|
30
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
31
|
+
spec.require_paths = ["lib"]
|
32
|
+
|
33
|
+
spec.add_dependency "digest"
|
34
|
+
spec.add_dependency "rest-client"
|
35
|
+
spec.add_dependency "json"
|
36
|
+
|
37
|
+
spec.add_development_dependency "bundler", "~> 1.13"
|
38
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
39
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
40
|
+
end
|
metadata
ADDED
@@ -0,0 +1,150 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: prioticket
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Henk Meijer
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-03-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: digest
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rest-client
|
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'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: json
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: bundler
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.13'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.13'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '10.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '10.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '3.0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '3.0'
|
97
|
+
description: Ruby implementation of the PrioTicket API
|
98
|
+
email:
|
99
|
+
- hmeijer@eskesmedia.nl
|
100
|
+
executables: []
|
101
|
+
extensions: []
|
102
|
+
extra_rdoc_files: []
|
103
|
+
files:
|
104
|
+
- ".gitignore"
|
105
|
+
- ".rspec"
|
106
|
+
- ".travis.yml"
|
107
|
+
- Gemfile
|
108
|
+
- LICENSE.txt
|
109
|
+
- README.md
|
110
|
+
- Rakefile
|
111
|
+
- bin/console
|
112
|
+
- bin/setup
|
113
|
+
- lib/prioticket.rb
|
114
|
+
- lib/prioticket/api.rb
|
115
|
+
- lib/prioticket/availabilities.rb
|
116
|
+
- lib/prioticket/booking.rb
|
117
|
+
- lib/prioticket/config.rb
|
118
|
+
- lib/prioticket/engine.rb
|
119
|
+
- lib/prioticket/prioticket_error.rb
|
120
|
+
- lib/prioticket/reservation.rb
|
121
|
+
- lib/prioticket/ticket.rb
|
122
|
+
- lib/prioticket/ticket_details.rb
|
123
|
+
- lib/prioticket/ticket_list.rb
|
124
|
+
- lib/prioticket/version.rb
|
125
|
+
- prioticket.gemspec
|
126
|
+
homepage: https://github.com/henkm/prioticket
|
127
|
+
licenses:
|
128
|
+
- MIT
|
129
|
+
metadata: {}
|
130
|
+
post_install_message:
|
131
|
+
rdoc_options: []
|
132
|
+
require_paths:
|
133
|
+
- lib
|
134
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
140
|
+
requirements:
|
141
|
+
- - ">="
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '0'
|
144
|
+
requirements: []
|
145
|
+
rubyforge_project:
|
146
|
+
rubygems_version: 2.4.5.1
|
147
|
+
signing_key:
|
148
|
+
specification_version: 4
|
149
|
+
summary: Ruby implementation of the PrioTicket API
|
150
|
+
test_files: []
|