Class: KenpoApi::Resort
- Inherits:
-
Object
show all
- Extended by:
- Routines
- Defined in:
- lib/kenpo_api/resort.rb
Class Method Summary
collapse
Methods included from Routines
apply, find_service, request_application_url
Class Method Details
.apply_reservation(application_url, application_data, type: :lottery) ⇒ Object
24
25
26
27
28
29
|
# File 'lib/kenpo_api/resort.rb', line 24
def self.apply_reservation(application_url, application_data, type: :lottery)
apply(application_url: application_url) do |html_document|
reservation_data = self.validate_reservation_data(application_data, html_document, type: type)
convert_to_reservation_post_params(reservation_data, type: type)
end
end
|
.check_reservation_criteria(application_url, type: :lottery) ⇒ Object
18
19
20
21
22
|
# File 'lib/kenpo_api/resort.rb', line 18
def self.check_reservation_criteria(application_url, type: :lottery)
html_document = Client.instance.fetch_document(path: application_url)
raise NotAvailableError.new("Application URL is invalid: #{html_document.xpath('//p').first.content}") if html_document.xpath('//form').first.nil?
reservation_criteria(html_document, type: type)
end
|
.check_vacant_search_criteria(resort_name:) ⇒ Object
31
32
33
34
35
36
|
# File 'lib/kenpo_api/resort.rb', line 31
def self.check_vacant_search_criteria(resort_name:)
service = find_service(category_code: :resort_search_vacant, group_name: resort_name)
html_document = Client.instance.fetch_document(path: service.path)
raise NotAvailableError.new("Application URL is invalid: #{html_document.xpath('//p').first.content}") if html_document.xpath('//form').first.nil?
vacant_search_criteria(html_document)
end
|
.request_reservation_url(resort_name:, email:) ⇒ Object
13
14
15
16
|
# File 'lib/kenpo_api/resort.rb', line 13
def self.request_reservation_url(resort_name:, email:)
service = find_service(category_code: :resort_reserve, group_name: resort_name)
request_application_url(service_path: service.path, email: email)
end
|
.request_reservation_url_for_vacant_rooms(resort_name:, search_condition:, vacant_room_id:, email:) ⇒ Object
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/kenpo_api/resort.rb', line 43
def self.request_reservation_url_for_vacant_rooms(resort_name:, search_condition:, vacant_room_id:, email:)
vacant_rooms_info = prepare_for_vacant_rooms_reservation(resort_name, search_condition)
params = vacant_rooms_info[:params].merge({"apply[coma[#{vacant_room_id}]]" => vacant_room_id})
response = Client.instance.access(path: vacant_rooms_info[:path], method: vacant_rooms_info[:method], params: params)
if response.status == 200
document = Nokogiri::HTML(response.body)
raise NotAvailableError.new("Application URL is invalid: #{document.xpath('id("errorExplanation")').first.content}")
end
request_application_url(service_path: response.['location'], email: email)
end
|
.resort_names ⇒ Object
7
8
9
10
11
|
# File 'lib/kenpo_api/resort.rb', line 7
def self.resort_names
category = ServiceCategory.find(:resort_reserve)
raise NotFoundError.new("Service category not found. code: resort_reserve") if category.nil?
category.service_groups.map {|group| group.name}
end
|
.search_vacant_rooms(resort_name:, search_condition:) ⇒ Object
38
39
40
41
|
# File 'lib/kenpo_api/resort.rb', line 38
def self.search_vacant_rooms(resort_name:, search_condition:)
vacant_rooms_info = prepare_for_vacant_rooms_reservation(resort_name, search_condition)
vacant_rooms_info[:vacant_rooms]
end
|