echelon 1.0.2 → 1.0.3

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: db14024c0e3222ac1c609300cbae0f50b895aa5c
4
+ data.tar.gz: a6862271c7b5f01885e74d3bb5f2e6a79d3ed22b
5
+ SHA512:
6
+ metadata.gz: 6e40449b0b6d65d6f737378f0348d828cc63466af9e2a5a050ce9a36d5f5adedcfeba78de2761967d906541cf91dcf1ec8b18e5397d3d41eba691a82a18fae70
7
+ data.tar.gz: f309887fde0eede1b840699ee106eb4d9949806b97104fb7501d4d5b31e84d7e8739ff0ec98e33ed003f1cf641a58875d5992bca9222968bb9363376c42a1dd9
@@ -0,0 +1 @@
1
+ echelon
@@ -0,0 +1 @@
1
+ 2.0.0
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in echelon.gemspec
4
4
  gemspec
@@ -1,17 +1,19 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- echelon (1.0.1)
4
+ echelon (1.0.2)
5
5
  json_pure (= 1.4.6)
6
6
  nokogiri (~> 1.5)
7
7
  zip (= 2.0.2)
8
8
 
9
9
  GEM
10
- remote: http://rubygems.org/
10
+ remote: https://rubygems.org/
11
11
  specs:
12
12
  diff-lcs (1.1.2)
13
13
  json_pure (1.4.6)
14
- nokogiri (1.5.5)
14
+ mini_portile (0.5.2)
15
+ nokogiri (1.6.1)
16
+ mini_portile (~> 0.5.0)
15
17
  rake (0.9.2.2)
16
18
  rspec (2.4.0)
17
19
  rspec-core (~> 2.4.0)
@@ -57,10 +57,11 @@ Currently only the following parks are supported...
57
57
  Echelon::Seaworld::SanDiego.new()
58
58
 
59
59
  # Disney World
60
- Echelon::DisneyWorld::AnimalKingdom.new()
61
- Echelon::DisneyWorld::Epcot.new()
62
- Echelon::DisneyWorld::HollywoodStudios.new()
63
- Echelon::DisneyWorld::MagicKingdom.new()
60
+ wdw = Echelon::DisneyWorld.new()
61
+ wdw.animal_kingdom
62
+ wdw.epcot
63
+ wdw.hollywood_studios
64
+ wdw.magic_kingdom
64
65
 
65
66
  # Disneyland California
66
67
  Echelon::Disneyland::Disneyland.new()
@@ -81,7 +82,7 @@ Currently only the following parks are supported...
81
82
 
82
83
  (The MIT License)
83
84
 
84
- Copyright (c) 2010-2012 Lloyd Pick
85
+ Copyright (c) 2010-2014 Lloyd Pick
85
86
 
86
87
  Permission is hereby granted, free of charge, to any person obtaining
87
88
  a copy of this software and associated documentation files (the
@@ -14,10 +14,11 @@ require "#{File.dirname(__FILE__)}/echelon/parks/seaworld/san_diego.rb"
14
14
  require "#{File.dirname(__FILE__)}/echelon/parks/seaworld/orlando.rb"
15
15
 
16
16
  # Disney World Resort
17
- require "#{File.dirname(__FILE__)}/echelon/parks/disney_world/magic_kingdom.rb"
18
- require "#{File.dirname(__FILE__)}/echelon/parks/disney_world/epcot.rb"
19
- require "#{File.dirname(__FILE__)}/echelon/parks/disney_world/hollywood_studios.rb"
20
- require "#{File.dirname(__FILE__)}/echelon/parks/disney_world/animal_kingdom.rb"
17
+ require "#{File.dirname(__FILE__)}/echelon/parks/disney_world.rb"
18
+ # require "#{File.dirname(__FILE__)}/echelon/parks/disney_world/magic_kingdom.rb"
19
+ # require "#{File.dirname(__FILE__)}/echelon/parks/disney_world/epcot.rb"
20
+ # require "#{File.dirname(__FILE__)}/echelon/parks/disney_world/hollywood_studios.rb"
21
+ # require "#{File.dirname(__FILE__)}/echelon/parks/disney_world/animal_kingdom.rb"
21
22
 
22
23
  # Disneyland Resort California
23
24
  require "#{File.dirname(__FILE__)}/echelon/parks/disneyland/disneyland.rb"
@@ -27,4 +28,9 @@ require "#{File.dirname(__FILE__)}/echelon/parks/disneyland/california_adventure
27
28
  require "#{File.dirname(__FILE__)}/echelon/parks/disneyland_paris.rb"
28
29
 
29
30
  module Echelon
31
+
32
+ def self.parameterize(params)
33
+ URI.escape(params.collect{|k,v| "#{k}=#{v}"}.join('&'))
34
+ end
35
+
30
36
  end
@@ -0,0 +1,122 @@
1
+ require 'rubygems'
2
+ require 'json'
3
+ require 'net/http'
4
+ require 'net/https'
5
+
6
+ module Echelon
7
+ class DisneyWorld
8
+
9
+ attr_reader :access_token, :expires_at
10
+
11
+ def initialize
12
+
13
+ uri = URI.parse("https://authorization.go.com/token")
14
+ http = Net::HTTP.new(uri.host, uri.port)
15
+ http.use_ssl = true
16
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
17
+
18
+ params = Echelon::parameterize({ grant_type: 'assertion', assertion_type: 'public', client_id: 'WDPRO-MOBILE.CLIENT-PROD' })
19
+ resp = http.post(uri.request_uri, params)
20
+
21
+ data = JSON.parse(resp.body)
22
+ @access_token = data['access_token']
23
+ @expires_at = Time.now.to_i + data['expires_in'].to_i
24
+
25
+ end
26
+
27
+ def animal_kingdom
28
+ @animal_kingdom ||= DisneyWorld::AnimalKingdom.new(self.access_token)
29
+ end
30
+
31
+ def magic_kingdom
32
+ @magic_kingdom ||= DisneyWorld::MagicKingdom.new(self.access_token)
33
+ end
34
+
35
+ def hollywood_studios
36
+ @hollywood_studios ||= DisneyWorld::HollywoodStudios.new(self.access_token)
37
+ end
38
+
39
+ def epcot
40
+ @epcot ||= DisneyWorld::Epcot.new(self.access_token)
41
+ end
42
+
43
+ class Park < Echelon::Park
44
+
45
+ attr_reader :json_data
46
+
47
+ def ride_list
48
+ self.json_data['entries'].inject({}) { |r,a| r[a['id'].split(';').first.to_i] = a['name']; r }
49
+ end
50
+
51
+ def initialize(access_token, park_id)
52
+
53
+ uri = URI.parse("https://api.wdpro.disney.go.com/facility-service/theme-parks/#{park_id};entityType=theme-park/wait-times")
54
+ http = Net::HTTP.new(uri.host, uri.port)
55
+ http.use_ssl = true
56
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
57
+
58
+ headers = {
59
+ 'Authorization' => "BEARER #{access_token}",
60
+ 'Accept' => 'application/json;apiversion=1',
61
+ 'X-Conversation-Id' => '~WDPRO-MOBILE.CLIENT-PROD'
62
+ }
63
+
64
+ resp = http.get(uri.request_uri, headers)
65
+ @json_data = JSON.parse(resp.body)
66
+
67
+ end
68
+
69
+ private
70
+
71
+ def create_ride_object(ref)
72
+ self.json_data['entries'].each do |ride|
73
+ if ride['id'].split(';').first.to_i == ref
74
+
75
+ ride_status = ride['waitTime']['status']
76
+ status = 1 if ride_status == 'Operating'
77
+ status = 0 if ride_status == 'Closed'
78
+ status = -1 if ride_status == 'Down'
79
+
80
+ queue_times = {
81
+ actual: ride['waitTime']['actualWaitMinutes'].to_i,
82
+ posted: ride['waitTime']['postedWaitMinutes'].to_i
83
+ }
84
+
85
+ meta = {
86
+ fastpass_available: ride['waitTime']['fastPass']['available'],
87
+ single_rider: ride['waitTime']['singleRider']
88
+ }
89
+
90
+ return Ride.new(:name => self.ride_list[ref], :queue_time => queue_times, :active => status, :meta => meta)
91
+ end
92
+ end
93
+ end
94
+
95
+ end
96
+
97
+ class Epcot < Park
98
+ def initialize(access_token)
99
+ super(access_token, 80007838)
100
+ end
101
+ end
102
+
103
+ class MagicKingdom < Park
104
+ def initialize(access_token)
105
+ super(access_token, 80007944)
106
+ end
107
+ end
108
+
109
+ class HollywoodStudios < Park
110
+ def initialize(access_token)
111
+ super(access_token, 80007998)
112
+ end
113
+ end
114
+
115
+ class AnimalKingdom < Park
116
+ def initialize(access_token)
117
+ super(access_token, 80007823)
118
+ end
119
+ end
120
+
121
+ end
122
+ end
@@ -1,6 +1,6 @@
1
1
  module Echelon
2
2
  class Ride
3
- attr_reader :name, :queue_time, :active, :updated_at
3
+ attr_reader :name, :queue_time, :active, :updated_at, :meta
4
4
 
5
5
  def initialize(*params)
6
6
  params.each do |key|
@@ -1,3 +1,3 @@
1
1
  module Echelon
2
- VERSION = '1.0.2'
2
+ VERSION = '1.0.3'
3
3
  end
metadata CHANGED
@@ -1,52 +1,46 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: echelon
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
5
- prerelease:
4
+ version: 1.0.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Lloyd Pick
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-08-21 00:00:00.000000000 Z
11
+ date: 2014-01-22 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: bundler
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: 1.0.0
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: 1.0.0
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rspec
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: 2.4.0
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: 2.4.0
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: json_pure
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - '='
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - '='
60
53
  - !ruby/object:Gem::Version
@@ -62,7 +55,6 @@ dependencies:
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: zip
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
59
  - - '='
68
60
  - !ruby/object:Gem::Version
@@ -70,7 +62,6 @@ dependencies:
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
66
  - - '='
76
67
  - !ruby/object:Gem::Version
@@ -78,7 +69,6 @@ dependencies:
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: nokogiri
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
73
  - - ~>
84
74
  - !ruby/object:Gem::Version
@@ -86,7 +76,6 @@ dependencies:
86
76
  type: :runtime
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
80
  - - ~>
92
81
  - !ruby/object:Gem::Version
@@ -102,6 +91,8 @@ extensions: []
102
91
  extra_rdoc_files: []
103
92
  files:
104
93
  - .gitignore
94
+ - .ruby-gemset
95
+ - .ruby-version
105
96
  - .travis.yml
106
97
  - Gemfile
107
98
  - Gemfile.lock
@@ -113,10 +104,7 @@ files:
113
104
  - lib/echelon.rb
114
105
  - lib/echelon/park.rb
115
106
  - lib/echelon/parks/alton_towers.rb
116
- - lib/echelon/parks/disney_world/animal_kingdom.rb
117
- - lib/echelon/parks/disney_world/epcot.rb
118
- - lib/echelon/parks/disney_world/hollywood_studios.rb
119
- - lib/echelon/parks/disney_world/magic_kingdom.rb
107
+ - lib/echelon/parks/disney_world.rb
120
108
  - lib/echelon/parks/disneyland/california_adventure.rb
121
109
  - lib/echelon/parks/disneyland/disneyland.rb
122
110
  - lib/echelon/parks/disneyland_paris.rb
@@ -133,26 +121,25 @@ files:
133
121
  - spec/thorpe_park_spec.rb
134
122
  homepage: http://github.com/lloydpick/echelon
135
123
  licenses: []
124
+ metadata: {}
136
125
  post_install_message:
137
126
  rdoc_options: []
138
127
  require_paths:
139
128
  - lib
140
129
  required_ruby_version: !ruby/object:Gem::Requirement
141
- none: false
142
130
  requirements:
143
- - - ! '>='
131
+ - - '>='
144
132
  - !ruby/object:Gem::Version
145
133
  version: '0'
146
134
  required_rubygems_version: !ruby/object:Gem::Requirement
147
- none: false
148
135
  requirements:
149
- - - ! '>='
136
+ - - '>='
150
137
  - !ruby/object:Gem::Version
151
138
  version: 1.3.6
152
139
  requirements: []
153
140
  rubyforge_project: echelon
154
- rubygems_version: 1.8.24
141
+ rubygems_version: 2.0.6
155
142
  signing_key:
156
- specification_version: 3
143
+ specification_version: 4
157
144
  summary: RubyGem to give quick access to Theme Park queue times
158
145
  test_files: []
@@ -1,40 +0,0 @@
1
- require 'rubygems'
2
- require 'json'
3
- require 'net/http'
4
-
5
- module Echelon
6
- module DisneyWorld
7
- class AnimalKingdom < Park
8
-
9
- attr_reader :json_data
10
-
11
- def ride_list
12
- self.json_data.keys.inject({}) { |r,k| r[k] = k; r }
13
- end
14
-
15
- def initialize
16
- # fetch the json feed
17
- url = "http://dparks.uiemedia.net/dmm_v2/jsondata/JsonUpdateData?version=14&p=80007823"
18
- resp = Net::HTTP.get_response(URI.parse(url))
19
- data = resp.body
20
-
21
- # were only interested in the ride data, throw everything else away
22
- json_data = JSON.parse(data)
23
- ride_data = json_data["attractions"]["homeLabels"]
24
- queue_data = json_data["attractions"]["homeValues"].map { |v| v.to_i }
25
- @json_data = json_data["attractions"]["homeLabels"].each_with_index.inject({}) { |r,i| r[i.first] = queue_data[i.last]; r }
26
- end
27
-
28
- private
29
-
30
- def create_ride_object(ref)
31
- self.json_data.each do |ride|
32
- if ride[0] == ref
33
- return Ride.new(:name => ride[0], :queue_time => ride[1])
34
- end
35
- end
36
- end
37
-
38
- end
39
- end
40
- end
@@ -1,40 +0,0 @@
1
- require 'rubygems'
2
- require 'json'
3
- require 'net/http'
4
-
5
- module Echelon
6
- module DisneyWorld
7
- class Epcot < Park
8
-
9
- attr_reader :json_data
10
-
11
- def ride_list
12
- self.json_data.keys.inject({}) { |r,k| r[k] = k; r }
13
- end
14
-
15
- def initialize
16
- # fetch the json feed
17
- url = "http://dparks.uiemedia.net/dmm_v2/jsondata/JsonUpdateData?version=14&p=80007838"
18
- resp = Net::HTTP.get_response(URI.parse(url))
19
- data = resp.body
20
-
21
- # were only interested in the ride data, throw everything else away
22
- json_data = JSON.parse(data)
23
- ride_data = json_data["attractions"]["homeLabels"]
24
- queue_data = json_data["attractions"]["homeValues"].map { |v| v.to_i }
25
- @json_data = json_data["attractions"]["homeLabels"].each_with_index.inject({}) { |r,i| r[i.first] = queue_data[i.last]; r }
26
- end
27
-
28
- private
29
-
30
- def create_ride_object(ref)
31
- self.json_data.each do |ride|
32
- if ride[0] == ref
33
- return Ride.new(:name => ride[0], :queue_time => ride[1])
34
- end
35
- end
36
- end
37
-
38
- end
39
- end
40
- end
@@ -1,40 +0,0 @@
1
- require 'rubygems'
2
- require 'json'
3
- require 'net/http'
4
-
5
- module Echelon
6
- module DisneyWorld
7
- class HollywoodStudios < Park
8
-
9
- attr_reader :json_data
10
-
11
- def ride_list
12
- self.json_data.keys.inject({}) { |r,k| r[k] = k; r }
13
- end
14
-
15
- def initialize
16
- # fetch the json feed
17
- url = "http://dparks.uiemedia.net/dmm_v2/jsondata/JsonUpdateData?version=14&p=80007998"
18
- resp = Net::HTTP.get_response(URI.parse(url))
19
- data = resp.body
20
-
21
- # were only interested in the ride data, throw everything else away
22
- json_data = JSON.parse(data)
23
- ride_data = json_data["attractions"]["homeLabels"]
24
- queue_data = json_data["attractions"]["homeValues"].map { |v| v.to_i }
25
- @json_data = json_data["attractions"]["homeLabels"].each_with_index.inject({}) { |r,i| r[i.first] = queue_data[i.last]; r }
26
- end
27
-
28
- private
29
-
30
- def create_ride_object(ref)
31
- self.json_data.each do |ride|
32
- if ride[0] == ref
33
- return Ride.new(:name => ride[0], :queue_time => ride[1])
34
- end
35
- end
36
- end
37
-
38
- end
39
- end
40
- end
@@ -1,40 +0,0 @@
1
- require 'rubygems'
2
- require 'json'
3
- require 'net/http'
4
-
5
- module Echelon
6
- module DisneyWorld
7
- class MagicKingdom < Park
8
-
9
- attr_reader :json_data
10
-
11
- def ride_list
12
- self.json_data.keys.inject({}) { |r,k| r[k] = k; r }
13
- end
14
-
15
- def initialize
16
- # fetch the json feed
17
- url = "http://dparks.uiemedia.net/dmm_v2/jsondata/JsonUpdateData?version=14&p=80007944"
18
- resp = Net::HTTP.get_response(URI.parse(url))
19
- data = resp.body
20
-
21
- # were only interested in the ride data, throw everything else away
22
- json_data = JSON.parse(data)
23
- ride_data = json_data["attractions"]["homeLabels"]
24
- queue_data = json_data["attractions"]["homeValues"].map { |v| v.to_i }
25
- @json_data = json_data["attractions"]["homeLabels"].each_with_index.inject({}) { |r,i| r[i.first] = queue_data[i.last]; r }
26
- end
27
-
28
- private
29
-
30
- def create_ride_object(ref)
31
- self.json_data.each do |ride|
32
- if ride[0] == ref
33
- return Ride.new(:name => ride[0], :queue_time => ride[1])
34
- end
35
- end
36
- end
37
-
38
- end
39
- end
40
- end