Time_Traveler 0.1.50 → 0.1.60

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6942f041be6f50568dd3a28b7e5e47c98a2ce21c
4
- data.tar.gz: 9331c5d1f4651c8e74b69516fe5ed7a3bbf4bde6
3
+ metadata.gz: 5f518bde9a49f760ccbcb5ba41adf0063c3cd3b3
4
+ data.tar.gz: aea965240713cb65f93f929ba0f5935f3eb314e6
5
5
  SHA512:
6
- metadata.gz: f79f0fc7c6fe95f4bc9b996d837aa06dbe8b1898a724cfe2df40c7a8484702e8bd73e77a5371710c3fb482a6ee3707d825e74253655b41fb022860457ae5cc58
7
- data.tar.gz: f997ce5471026f8f69df0bea3734b9dd076f486e3f413c7761cd1ffed689107c675bfb2426a31cfcfde0c5b8a9acaa09727a2eb789fc1c6380789adaa8f5598e
6
+ metadata.gz: daa2c9d5a40915c2769c4e3548b32bd1c1c3d36709a841a0cadee2b1080fd43aab40aa07983ee1edec3c0f5a32994dd4d69757056016d61a2ecf21c2d0a12d52
7
+ data.tar.gz: c27878967fdb34aff5405dda6519af6e2a85bc3eb1e8109b5ba016ec525ac8cf63f08015b5e949504d6312e81138e9f7e6d5cdf556016455906806ff367f56a0
data/README.md CHANGED
@@ -23,5 +23,5 @@ Please setup your aribnb & google developer credentials by creating an app profi
23
23
  Require Time_Traveler gem in your code: `require 'Time_Traveler'`
24
24
 
25
25
  Supply your Time_Traveler credentials to our library in one of two ways:
26
- - Setup environment variables: `ENV['AIRBNB_API']` and `ENV['GOOGLE_API']`
26
+ - Setup environment variables: `ENV['AIRBNB_API']` , `ENV['GOOGLE_API']` and `ENV['SKYSCANNER_API']`
27
27
 
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env ruby
2
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), *%w(.. lib))
3
+
4
+ require 'Time_Traveler'
5
+
6
+ market = ARGV[0]
7
+ currency = ARGV[1]
8
+ locale = ARGV[2]
9
+ originPlace = ARGV[3]
10
+ destinationPlace = ARGV[4]
11
+ outboundPartialDate = ARGV[5]
12
+ unless market && currency && locale && originPlace && destinationPlace && outboundPartialDate
13
+ puts 'arguments are need for skyscanner method(market currency locale originPlace destinationPlace outboundPartialDate)'
14
+ exit(1)
15
+ end
16
+
17
+ unless ENV['SKYSCANNER_API']
18
+ puts 'you haven\'t set your environment variable yet'
19
+ exit(1)
20
+ end
21
+
22
+ flight = Skyscanner::FlightInfo.find(market: market, currency: currency, locale: locale, originPlace: originPlace, destinationPlace: destinationPlace, outboundPartialDate: outboundPartialDate)
23
+ flightInfo = flight.flightInfo
24
+
25
+ puts flightInfo
data/bin/rent CHANGED
@@ -14,7 +14,7 @@ unless ENV['AIRBNB_API']
14
14
  exit(1)
15
15
  end
16
16
 
17
- airbnb_load = Google::TrafficInfo.find(location: location)
17
+ airbnb_load = Airbnb::RentInfo.find(location: location)
18
18
  rooms = airbnb_load.infos
19
19
 
20
- puts rooms
20
+ puts rooms
@@ -16,7 +16,7 @@ unless ENV['GOOGLE_API']
16
16
  exit(1)
17
17
  end
18
18
 
19
- traffic_load = Airbnb::RentInfo.find(origins: origins, destinations: destinations,mode: mode)
19
+ traffic_load = Google::TrafficInfo.find(origins: origins, destinations: destinations,mode: mode)
20
20
  distance_data = traffic_load.trafficAnaly
21
21
 
22
22
  puts distance_data
@@ -0,0 +1,59 @@
1
+ require_relative 'skyscanner_api'
2
+
3
+ module Skyscanner
4
+ class FlightInfo
5
+ attr_reader :flightInfo
6
+
7
+ def initialize(originData)
8
+ carrierId2Carrier = getCarrierId2Carrier(originData)
9
+ placeId2Place = getPlaceId2Place(originData)
10
+ @flightInfo = extractFlightInfo(carrierId2Carrier, placeId2Place, originData)
11
+ end
12
+
13
+ def flightInfo
14
+ @flightInfo
15
+ end
16
+
17
+ def self.find(market:, currency:, locale:, originPlace:, destinationPlace:, outboundPartialDate:)
18
+ originData = SkyscannerApi.getOriginData(market, currency, locale, originPlace, destinationPlace, outboundPartialDate)
19
+ new(originData)
20
+ end
21
+
22
+ private
23
+ def getCarrierId2Carrier(originData)
24
+ carriers = originData["Carriers"]
25
+ carrierId2Carrier = Hash.new()
26
+ carriers.each do |carrier|
27
+ carrierId2Carrier[carrier["CarrierId"]] = carrier["Name"]
28
+ end
29
+ carrierId2Carrier
30
+ end
31
+
32
+ private
33
+ def getPlaceId2Place(originData)
34
+ places = originData["Places"]
35
+ placeId2Place = Hash.new()
36
+ places.each do |place|
37
+ if place["Type"] == "Station"
38
+ placeId2Place[place["PlaceId"]] = place["Name"] #+","+place["CountryName"]
39
+ end
40
+ end
41
+ placeId2Place
42
+ end
43
+
44
+ private
45
+ def extractFlightInfo(carrierId2Carrier, placeId2Place, originData)
46
+ quotes = originData["Quotes"]
47
+ quotes.each do |quote|
48
+ if(quote["OutboundLeg"]["CarrierIds"].empty? == false)
49
+ for i in 0..quote["OutboundLeg"]["CarrierIds"].length
50
+ quote["OutboundLeg"]["CarrierIds"][i] = carrierId2Carrier[quote["OutboundLeg"]["CarrierIds"][i]]
51
+ end
52
+ end
53
+ quote["OutboundLeg"]["OriginId"] = placeId2Place[quote["OutboundLeg"]["OriginId"]]
54
+ quote["OutboundLeg"]["DestinationId"] = placeId2Place[quote["OutboundLeg"]["DestinationId"]]
55
+ end
56
+ quotes
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,29 @@
1
+ require 'http'
2
+
3
+ module Skyscanner
4
+ class SkyscannerApi
5
+ Skyscanner_URL = 'http://partners.api.skyscanner.net/apiservices/browseroutes/'
6
+ API_VER = 'v1.0'
7
+ Skyscanner_API_URL = URI.join(Skyscanner_URL, "#{API_VER}/")
8
+
9
+ def self.config=(credentials)
10
+ @config ? @config.update(credentials) : @config = credentials
11
+ end
12
+
13
+ def self.config
14
+ return @config if @config
15
+ @config = { skyscanner_id: ENV['SKYSCANNER_API'] }
16
+ end
17
+
18
+ def self.getOriginData(market, currency, locale, originPlace, destinationPlace, outboundPartialDate)
19
+ url = URI.join(Skyscanner_API_URL, market+"/", currency+"/", locale+"/", originPlace+"/", destinationPlace+"/", outboundPartialDate);
20
+ skyscanner_response = HTTP.get(url,
21
+ params: {
22
+ apiKey: config[:skyscanner_id]
23
+ })
24
+
25
+ originData = JSON.load(skyscanner_response.body.to_s)
26
+ originData
27
+ end
28
+ end
29
+ end
@@ -1,3 +1,3 @@
1
1
  module Time_Traveler
2
- VERSION = '0.1.50'
2
+ VERSION = '0.1.60'
3
3
  end
@@ -0,0 +1,25 @@
1
+ require_relative 'spec_helper.rb'
2
+
3
+ describe 'Load specifications' do
4
+ VCR.configure do |c|
5
+ c.cassette_library_dir = CASSETTES_FOLDER
6
+ c.hook_into :webmock
7
+
8
+ c.filter_sensitive_data('<SKYSCANNER_ID>') {ENV['SKYSCANNER_API'] }
9
+ end
10
+
11
+ before do
12
+ VCR.insert_cassette CASSETTE_FILE_SKYSCANNER, record: :new_episodes
13
+ end
14
+
15
+ after do
16
+ VCR.eject_cassette
17
+ end
18
+
19
+ it 'should be able to get the data from Skyscanner' do
20
+ skyscanner_load = Skyscanner::FlightInfo.find(market: 'TW', currency: 'TWD', locale: 'en-GB', originPlace: 'TW', destinationPlace: 'UK', outboundPartialDate: '2016-11-20')
21
+ flightInfo = skyscanner_load.flightInfo
22
+ flightInfo.length.must_be :>,0
23
+ end
24
+
25
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Time_Traveler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.50
4
+ version: 0.1.60
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yvonne Shih
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-11-07 00:00:00.000000000 Z
13
+ date: 2016-11-08 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: http
@@ -158,6 +158,7 @@ email:
158
158
  - q2221252@gmail.com
159
159
  - wtlin0711@gmail.com
160
160
  executables:
161
+ - flight
161
162
  - rent
162
163
  - traffic
163
164
  extensions: []
@@ -171,17 +172,21 @@ files:
171
172
  - README.md
172
173
  - Rakefile
173
174
  - Time_Traveler.gemspec
175
+ - bin/flight
174
176
  - bin/rent
175
177
  - bin/traffic
176
178
  - lib/Time_Traveler.rb
177
179
  - lib/Time_Traveler/airbnb_api.rb
180
+ - lib/Time_Traveler/flightInfo.rb
178
181
  - lib/Time_Traveler/google_api.rb
179
182
  - lib/Time_Traveler/rentInfo.rb
183
+ - lib/Time_Traveler/skyscanner_api.rb
180
184
  - lib/Time_Traveler/trafficinfo.rb
181
185
  - lib/Time_Traveler/version.rb
182
186
  - spec/.load_spec.rb.swp
183
187
  - spec/airbnbapi_spec.rb
184
188
  - spec/googledistanceapi_spec.rb
189
+ - spec/skyscanner_spec.rb
185
190
  - spec/spec_helper.rb
186
191
  homepage: https://github.com/Mew-Traveler/Time_Traveler
187
192
  licenses:
@@ -203,11 +208,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
203
208
  version: '0'
204
209
  requirements: []
205
210
  rubyforge_project:
206
- rubygems_version: 2.5.1
211
+ rubygems_version: 2.6.8
207
212
  signing_key:
208
213
  specification_version: 4
209
214
  summary: Gets room content from Airbnb
210
215
  test_files:
211
216
  - spec/airbnbapi_spec.rb
212
217
  - spec/googledistanceapi_spec.rb
218
+ - spec/skyscanner_spec.rb
213
219
  - spec/spec_helper.rb