strava-cli 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/strava.rb +5 -0
- data/lib/strava/app.rb +29 -13
- data/lib/strava/cache.rb +11 -0
- data/lib/strava/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6b91beaa1f5816931d2c4fd42031fa9cdd15577b
|
4
|
+
data.tar.gz: 674d99f373e57f3560ea6f0741feec13c11d5a72
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d7ddb1356926a8b6c143c2b9092a6efeae23f2dee759d3accb4ba1f2d865941eba58641e36fa15a37a677387959167655fbfa339ae8bad5a070d74d9e2cb907
|
7
|
+
data.tar.gz: 8375598e1b3a3682d03ae449ce025dc7cfe62c177da46fcfa6e78980e8b3c0bac5b4f8242c145ddda59e59e3adf1a891e066cd9270cfd04dca6a0dc906c65d0c
|
data/lib/strava.rb
CHANGED
@@ -4,6 +4,11 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
|
|
4
4
|
require 'hashie'
|
5
5
|
class Hash; include Hashie::Extensions::MethodAccess; end
|
6
6
|
|
7
|
+
module Strava
|
8
|
+
BASE_NAME = 'strava'.freeze
|
9
|
+
end
|
10
|
+
|
11
|
+
require 'strava/cache'
|
7
12
|
require 'strava/version'
|
8
13
|
require 'strava/activity'
|
9
14
|
require 'strava/app'
|
data/lib/strava/app.rb
CHANGED
@@ -2,13 +2,6 @@ require 'easy_app_helper'
|
|
2
2
|
require 'terminal-table'
|
3
3
|
require 'ascii_charts'
|
4
4
|
require 'strava/api/v3'
|
5
|
-
require 'vcr'
|
6
|
-
|
7
|
-
# Configure HTTP records
|
8
|
-
VCR.configure do |config|
|
9
|
-
config.cassette_library_dir = "#{File.expand_path('~')}/.strava"
|
10
|
-
config.hook_into :webmock
|
11
|
-
end
|
12
5
|
|
13
6
|
module Strava
|
14
7
|
class App
|
@@ -17,10 +10,10 @@ module Strava
|
|
17
10
|
NAME = 'Strava Dashboard'
|
18
11
|
DESCRIPTION = 'Fetchs data from strava to report what you have done'
|
19
12
|
|
20
|
-
attr_accessor :client, :types, :graph, :activities
|
13
|
+
attr_accessor :client, :types, :graph, :activities, :publicize, :simulate
|
21
14
|
|
22
15
|
def initialize
|
23
|
-
config.config_file_base_name =
|
16
|
+
config.config_file_base_name = Strava::BASE_NAME
|
24
17
|
config.describes_application app_name: NAME,
|
25
18
|
app_version: Strava::VERSION,
|
26
19
|
app_description: DESCRIPTION
|
@@ -29,6 +22,8 @@ module Strava
|
|
29
22
|
slop.on :strava_access_token, 'Strava access token', argument: true, as: String
|
30
23
|
slop.on :activity, 'Display this activity type only (Run, Ride, Swim)', argument: true
|
31
24
|
slop.on :graph, 'Display a graph instead of a table', argument: false
|
25
|
+
slop.on :scope, 'Display limited scoped activities (public or private)', argument: true
|
26
|
+
slop.on :publicize, 'Make private activities public', argument: false
|
32
27
|
end
|
33
28
|
|
34
29
|
if config[:help]
|
@@ -42,6 +37,10 @@ module Strava
|
|
42
37
|
@types = %w(Run Ride Swim)
|
43
38
|
end
|
44
39
|
@graph = config[:graph]
|
40
|
+
@scope = config[:scope]
|
41
|
+
@cache_key = config[:cache_key] || "activities"
|
42
|
+
@publicize = config[:publicize]
|
43
|
+
@simulate = config[:simulate]
|
45
44
|
@activities = []
|
46
45
|
end
|
47
46
|
|
@@ -56,7 +55,9 @@ module Strava
|
|
56
55
|
|
57
56
|
for type in types
|
58
57
|
|
59
|
-
if
|
58
|
+
if publicize
|
59
|
+
publicize_activities(type)
|
60
|
+
elsif graph
|
60
61
|
output_screen = build_graph_speed(type)
|
61
62
|
else
|
62
63
|
output_screen = build_table(type)
|
@@ -140,18 +141,33 @@ module Strava
|
|
140
141
|
end
|
141
142
|
|
142
143
|
def fetch_activities_data
|
143
|
-
VCR.use_cassette(
|
144
|
+
VCR.use_cassette(@cache_key, record: :new_episodes) do
|
144
145
|
page = 0
|
145
146
|
per_page = 100
|
147
|
+
|
146
148
|
while activities.count == page*per_page
|
147
149
|
page +=1
|
148
|
-
@activities += client.list_athlete_activities(per_page: per_page,page: page)
|
150
|
+
@activities += client.list_athlete_activities(per_page: per_page, page: page)
|
149
151
|
end
|
150
152
|
end
|
151
153
|
end
|
152
154
|
|
153
155
|
def select_activities(type)
|
154
|
-
activities.select
|
156
|
+
activities.select do |activity|
|
157
|
+
activity.type == type &&
|
158
|
+
@scope.nil? || (!activity.private ^ (@scope == 'private'))
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
def publicize_activities(type)
|
163
|
+
filtered_activities = select_activities(type)
|
164
|
+
$stdout.puts "You are about to make #{filtered_activities.count} public. Are you sure? (y/n)"
|
165
|
+
if $stdin.gets.strip == 'y' && !simulate
|
166
|
+
filtered_activities.each do |activity|
|
167
|
+
client.update_an_activity(activity.id, private: false)
|
168
|
+
end
|
169
|
+
$stdout.puts "#{filtered_activities.count} activities were made public! /o/"
|
170
|
+
end
|
155
171
|
end
|
156
172
|
end
|
157
173
|
end
|
data/lib/strava/cache.rb
ADDED
data/lib/strava/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: strava-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paul Bonaud
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: easy_app_helper
|
@@ -318,6 +318,7 @@ files:
|
|
318
318
|
- lib/strava.rb
|
319
319
|
- lib/strava/activity.rb
|
320
320
|
- lib/strava/app.rb
|
321
|
+
- lib/strava/cache.rb
|
321
322
|
- lib/strava/version.rb
|
322
323
|
- strava.gemspec
|
323
324
|
homepage: https://rubygems.org/gems/strava-cli
|
@@ -340,7 +341,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
340
341
|
version: '0'
|
341
342
|
requirements: []
|
342
343
|
rubyforge_project:
|
343
|
-
rubygems_version: 2.6.
|
344
|
+
rubygems_version: 2.6.13
|
344
345
|
signing_key:
|
345
346
|
specification_version: 4
|
346
347
|
summary: Generate strava dashboards.
|