epicmix 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.
- checksums.yaml +4 -4
- data/.rspec +1 -0
- data/.travis.yml +11 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +20 -0
- data/README.md +59 -0
- data/Rakefile +7 -0
- data/epicmix.gemspec +24 -0
- data/examples/demo.rb +6 -0
- data/lib/epicmix.rb +59 -0
- data/lib/epicmix/version.rb +5 -0
- data/spec/spec_helper.rb +8 -0
- metadata +13 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4038947f18b886ab07057c5de5a92a175dc1581c
|
4
|
+
data.tar.gz: 5758a06abdcb0d6ca34145288c90970b81963d0d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2b463525c08d283aa0fe6057b86ac7847d3e4a7903ccfc58a1c0018ad2bdd2f4ab2e0a17d416479e7da9cc021637bbc65d26ae31106ec9d2f0f6ef54f594767a
|
7
|
+
data.tar.gz: e2a48c9c850e0555e1b38e2b279c1ada5f4c7a7fd3cbae0c69c81ca52a690982bd87ef2a8eaa5b4b3b33036cf85bcf0fc2eb849def71785876ccb92d73aa0d4f
|
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
epicmix (0.0.1)
|
5
|
+
httparty
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
httparty (0.12.0)
|
11
|
+
json (~> 1.8)
|
12
|
+
multi_xml (>= 0.5.2)
|
13
|
+
json (1.8.1)
|
14
|
+
multi_xml (0.5.5)
|
15
|
+
|
16
|
+
PLATFORMS
|
17
|
+
ruby
|
18
|
+
|
19
|
+
DEPENDENCIES
|
20
|
+
epicmix!
|
data/README.md
CHANGED
@@ -2,3 +2,62 @@ EpicMix Gem
|
|
2
2
|
===========
|
3
3
|
|
4
4
|
A Ruby gem for accessing your EpicMix data.
|
5
|
+
|
6
|
+
### Usage
|
7
|
+
|
8
|
+
gem install epicmix
|
9
|
+
|
10
|
+
Or add it to your Gemfile
|
11
|
+
|
12
|
+
gem 'epicmix'
|
13
|
+
|
14
|
+
|
15
|
+
### Example
|
16
|
+
|
17
|
+
``` ruby
|
18
|
+
# require the gem
|
19
|
+
require 'epicmix'
|
20
|
+
|
21
|
+
# connect using your epic mix username and password
|
22
|
+
client = Epicmix::Client.new('username', 'password')
|
23
|
+
|
24
|
+
# display your stats for each season
|
25
|
+
puts client.season_stats
|
26
|
+
|
27
|
+
[{
|
28
|
+
"year" => 2011,
|
29
|
+
"yearString" => "2011/12",
|
30
|
+
"verticalFeet" => 61810,
|
31
|
+
"lifts" => 52,
|
32
|
+
"photos" => 40,
|
33
|
+
"pins" => 17,
|
34
|
+
"points" => 1457,
|
35
|
+
"checkins" => 6,
|
36
|
+
"daysOnMountain" => 6,
|
37
|
+
"mostVisitedMountainID" => 5,
|
38
|
+
"timeTagID" => 780,
|
39
|
+
"isCurrentSeason" => false,
|
40
|
+
"medals" => 0,
|
41
|
+
"lessons" => 0,
|
42
|
+
"academyLevel" => 0,
|
43
|
+
"academyDiscipline" => "Ski"
|
44
|
+
}, {
|
45
|
+
"year" => 2012,
|
46
|
+
"yearString" => "2012/13",
|
47
|
+
"verticalFeet" => 41554,
|
48
|
+
"lifts" => 29,
|
49
|
+
"photos" => 4,
|
50
|
+
"pins" => 12,
|
51
|
+
"points" => 907,
|
52
|
+
"checkins" => 5,
|
53
|
+
"daysOnMountain" => 5,
|
54
|
+
"mostVisitedMountainID" => 5,
|
55
|
+
"timeTagID" => 1269,
|
56
|
+
"isCurrentSeason" => false,
|
57
|
+
"medals" => 0,
|
58
|
+
"lessons" => 0,
|
59
|
+
"academyLevel" => 0,
|
60
|
+
"academyDiscipline" => "Ski"
|
61
|
+
}]
|
62
|
+
|
63
|
+
```
|
data/Rakefile
ADDED
data/epicmix.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
|
5
|
+
require 'epicmix/version'
|
6
|
+
|
7
|
+
Gem::Specification.new do |spec|
|
8
|
+
spec.name = "epicmix"
|
9
|
+
spec.version = Epicmix::VERSION
|
10
|
+
spec.authors = ["Joseph Silvashy"]
|
11
|
+
spec.email = ["jpsilvashy@gmail.com"]
|
12
|
+
spec.summary = %q{A Ruby gem for accessing your EpicMix data.}
|
13
|
+
spec.description = %q{A Ruby gem for accessing your EpicMix data.}
|
14
|
+
spec.homepage = "https://github.com/jpsilvashy/epicmix"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
spec.files = `git ls-files`.split($/)
|
18
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
19
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
|
+
spec.require_paths = ["lib"]
|
21
|
+
|
22
|
+
spec.add_dependency "httparty"
|
23
|
+
|
24
|
+
end
|
data/examples/demo.rb
ADDED
data/lib/epicmix.rb
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
# require "epicmix/version"
|
3
|
+
require 'httparty'
|
4
|
+
|
5
|
+
module Epicmix
|
6
|
+
class Client
|
7
|
+
|
8
|
+
attr_accessor :username, :password, :token
|
9
|
+
|
10
|
+
# Initializes and logs in to Epicmix
|
11
|
+
def initialize(username, password)
|
12
|
+
@username, @password = username, password
|
13
|
+
@token = login
|
14
|
+
end
|
15
|
+
|
16
|
+
# Login to epic mix
|
17
|
+
def login
|
18
|
+
url = 'https://www.epicmix.com/vailresorts/sites/epicmix/api/mobile/authenticate.ashx'
|
19
|
+
|
20
|
+
options = { :query => { :loginID => username, :password => password }}
|
21
|
+
response = HTTParty.post(url, options)
|
22
|
+
|
23
|
+
token_from(response) # if response.instance_of? Net::HTTPOK
|
24
|
+
end
|
25
|
+
|
26
|
+
# Gets all your season stats
|
27
|
+
def season_stats
|
28
|
+
url = 'https://www.epicmix.com/vailresorts/sites/epicmix/api/mobile/userstats.ashx'
|
29
|
+
|
30
|
+
options = { :timetype => 'season', :token => token }
|
31
|
+
response = HTTParty.get(url, :query => options, :headers => headers)
|
32
|
+
|
33
|
+
JSON.parse(response.body)['seasonStats']
|
34
|
+
end
|
35
|
+
|
36
|
+
# Gets token out of response cookies
|
37
|
+
def token_from(response)
|
38
|
+
response.headers['Set-Cookie'][%r{ASP.NET_SessionId=([^;]+);}, 1]
|
39
|
+
end
|
40
|
+
|
41
|
+
# Sets headers
|
42
|
+
def headers(extra = {})
|
43
|
+
extra.merge 'Cookie' => [session_id, website, session_id].join('; '),
|
44
|
+
'Accept-Encoding' => 'gzip',
|
45
|
+
'User-Agent' => 'EpicMix 15880 rv:2.1 (iPhone; iPhone OS 5.0.1; en_US)',
|
46
|
+
'Host' => 'www.epicmix.com'
|
47
|
+
end
|
48
|
+
|
49
|
+
# Get the sesson id, to be inserted into the cookies in the header
|
50
|
+
def session_id
|
51
|
+
"ASP.NET_SessionId=#{token}"
|
52
|
+
end
|
53
|
+
|
54
|
+
def website
|
55
|
+
"website#sc_wede=1"
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: epicmix
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joseph Silvashy
|
@@ -32,8 +32,18 @@ extensions: []
|
|
32
32
|
extra_rdoc_files: []
|
33
33
|
files:
|
34
34
|
- .gitignore
|
35
|
+
- .rspec
|
36
|
+
- .travis.yml
|
37
|
+
- Gemfile
|
38
|
+
- Gemfile.lock
|
35
39
|
- LICENSE
|
36
40
|
- README.md
|
41
|
+
- Rakefile
|
42
|
+
- epicmix.gemspec
|
43
|
+
- examples/demo.rb
|
44
|
+
- lib/epicmix.rb
|
45
|
+
- lib/epicmix/version.rb
|
46
|
+
- spec/spec_helper.rb
|
37
47
|
homepage: https://github.com/jpsilvashy/epicmix
|
38
48
|
licenses:
|
39
49
|
- MIT
|
@@ -58,5 +68,6 @@ rubygems_version: 2.1.1
|
|
58
68
|
signing_key:
|
59
69
|
specification_version: 4
|
60
70
|
summary: A Ruby gem for accessing your EpicMix data.
|
61
|
-
test_files:
|
71
|
+
test_files:
|
72
|
+
- spec/spec_helper.rb
|
62
73
|
has_rdoc:
|