altflights 0.0.1 → 0.0.2

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.
@@ -2,27 +2,25 @@ class AltFlights::KayakWrapper
2
2
  HOSTNAME = 'api.kayak.com'
3
3
  PORT = 80
4
4
 
5
- attr_accessor :last_count
5
+ attr_accessor :last_count, :sid, :searchid
6
6
 
7
7
  def api_key
8
8
  KAYAK_API_KEY
9
9
  end
10
10
 
11
11
  def get_session
12
- sid = nil
12
+ self.sid = nil
13
13
  Net::HTTP.start(HOSTNAME, PORT) do |http|
14
14
  response = http.get("/k/ident/apisession?token=#{api_key}")
15
15
  Rails.logger.info "http://#{HOSTNAME}/k/ident/apisession?token=#{api_key}"
16
16
  body = response.body
17
17
  parser = LibXML::XML::Parser.string(body)
18
18
  doc = parser.parse
19
- sid = doc.find('//sid').first.inner_xml
19
+ self.sid = doc.find('//sid').first.inner_xml
20
20
  end
21
- sid
22
21
  end
23
22
 
24
- def start_flight_search(sid,
25
- oneway, # y or n
23
+ def start_flight_search(oneway, # y or n
26
24
  origin,
27
25
  destination,
28
26
  dep_date,
@@ -36,35 +34,33 @@ class AltFlights::KayakWrapper
36
34
  end
37
35
 
38
36
  def start_search(url)
39
- searchid = nil
37
+ self.searchid = nil
40
38
  Net::HTTP.start(HOSTNAME, PORT) do |http|
41
39
  response = http.get(url)
42
- Rails.logger.info "http://#{HOSTNAME}#{url}"
40
+ Rails.logger.info "http://#{HOSTNAME}#{url}"
43
41
  body = response.body
44
42
  parser = LibXML::XML::Parser.string(body)
45
43
  doc = parser.parse
46
- Rails.logger.info searchid = doc.find('//searchid')
44
+ self.searchid = doc.find('//searchid')
47
45
  if searchid.first != nil
48
- searchid = searchid.first.inner_xml
46
+ Rails.logger.info "searchid: #{self.searchid = self.searchid.first.inner_xml}"
49
47
  else
50
- Rails.logger.info "search error:"
51
- Rails.logger.info body
48
+ Rails.logger.info "search error:"
49
+ Rails.logger.info body
52
50
  return nil
53
51
  end
54
52
  end
55
- return searchid
56
53
  end
57
54
 
58
55
 
59
- def poll_results(sid, searchid, count)
56
+ def self.poll_results(sid, searchid, count)
60
57
  url = "/s/apibasic/flight?searchid=#{searchid}&apimode=1&_sid_=#{sid}"
61
- more = nil
62
58
  Net::HTTP.start(HOSTNAME, PORT) do |http|
63
59
  if count
64
60
  url += "&c=#{count}"
65
61
  end
66
62
  response = http.get(url)
67
- Rails.logger.info "http://#{HOSTNAME}#{url}"
63
+ Rails.logger.info "http://#{HOSTNAME}#{url}"
68
64
  body = response.body
69
65
  if count
70
66
  return handle_results(body)
@@ -76,20 +72,24 @@ class AltFlights::KayakWrapper
76
72
 
77
73
  # Load the xml feed from kayak.com and return the value of the more attribute
78
74
  # which indicates whether kayak is still processing the request.
79
- def check_results(body)
75
+ def self.check_results(body)
80
76
  parser = LibXML::XML::Parser.string(body)
81
77
  doc = parser.parse
82
78
  more = doc.find('/searchresult/morepending')
83
79
 
84
- Rails.logger.info "count: #{self.last_count = doc.find('/searchresult/count').first.inner_xml}"
80
+ Rails.logger.info "count: #{last_count = doc.find('/searchresult/count').first.inner_xml}"
85
81
  if more
86
82
  more = more.first.inner_xml
87
83
  end
88
84
 
89
- return more
85
+ if more == 'false'
86
+ return 0
87
+ else
88
+ return last_count
89
+ end
90
90
  end
91
91
 
92
- def handle_results(body)
92
+ def self.handle_results(body)
93
93
  parser = LibXML::XML::Parser.string(body)
94
94
  doc = parser.parse
95
95
 
data/lib/altflights.rb CHANGED
@@ -4,24 +4,26 @@ require 'net/https'
4
4
  module AltFlights
5
5
 
6
6
  class << self
7
-
8
- def get_flights(origin, destination, date_string) # date_string format => '%m/%d/%y'
7
+
8
+ def start_search(origin, destination, date_string) # date_string format => '%m/%d/%y'
9
9
  kayak = AltFlights::KayakWrapper.new
10
- sid = kayak.get_session()
11
- searchid = kayak.start_flight_search(sid, 'y', origin, destination, date_string, 'a', nil, 'a', '1', 'e')
12
- sleep(2)
13
-
14
- more = kayak.poll_results(sid, searchid, nil)
15
- while more == 'true' do
16
- more = kayak.poll_results(sid, searchid, nil)
17
- sleep(3)
18
- end
10
+ kayak.get_session()
11
+ kayak.start_flight_search('y', origin, destination, date_string, 'a', nil, 'a', '1', 'e')
12
+
13
+ return kayak.to_json
14
+ end
15
+
16
+ def check_search(searchid, sid)
17
+ return AltFlights::KayakWrapper.poll_results(searchid, sid, nil)
18
+ end
19
+
20
+ def get_flights(searchid, sid, count) # date_string format => '%m/%d/%y'
19
21
 
20
- if kayak.last_count.to_i > 50
21
- kayak.last_count = 50
22
+ if count.to_i > 50
23
+ count = 50
22
24
  end
23
25
 
24
- results = kayak.poll_results(sid, searchid, kayak.last_count)
26
+ results = AltFlights::KayakWrapper.poll_results(searchid, sid, count)
25
27
 
26
28
  return results
27
29
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: altflights
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - FlightCaster
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2009-12-15 00:00:00 -08:00
13
+ date: 2010-01-06 00:00:00 -08:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency