rescuetime 0.3.2 → 1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6464e2b8b391cfa2b334288ba6cdbd81fe7728f6
4
- data.tar.gz: e293998bd6552509d6225422b1a7f029a26dcde3
3
+ metadata.gz: 2a432c96ac3df86019ae962948bdddacfcb74d6d
4
+ data.tar.gz: 34d4785182403bc262e017592e4f911700e39768
5
5
  SHA512:
6
- metadata.gz: 4e022e5eefb8a858051f8c5264d394562ba6939381beb5b9072807f2dad2a70f9d8047ada933a2be9172ba050ed5b71ed41e51934e1b2a8ade83bd67d7a645c2
7
- data.tar.gz: 8c09915abb016f0680d9b48c1f45362ccf6312fc970f1e58d38feeb25e15afda6cfeba1d5f18a877712ac7b29bce2e65f39cdf14ebea57caf79f26fbcdc5df33
6
+ metadata.gz: 7b584353be255e265d40f93e80c04cb6a8542b20f12c37520ac2dead84d1caad627493755f3bd1e267da155e6e5c38fe212a5975acc38fef58bc0af15a582ca0
7
+ data.tar.gz: 7758b44a45ee0fef13e367a85bbf84ea18576ff226234adc4e68abaaa7b3d2b0c3b00d421ab0024fae0d8755ef38e004ac56e5017372b94a5bc545470af8e3ae
data/.gitignore CHANGED
@@ -8,4 +8,7 @@
8
8
  /spec/reports/
9
9
  /tmp/
10
10
 
11
- secret.rb
11
+ secret.rb
12
+
13
+ # asdf ruby version management
14
+ .tool-versions
@@ -1 +1,4 @@
1
- inherit_from: .rubocop_todo.yml
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ Style/SignalException:
4
+ EnforcedStyle: only_raise
@@ -1,80 +1,58 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2016-05-22 00:42:00 -0400 using RuboCop version 0.40.0.
3
+ # on 2016-05-26 15:32:03 -0400 using RuboCop version 0.40.0.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
8
 
9
- # Offense count: 1
10
- Lint/AmbiguousOperator:
11
- Exclude:
12
- - 'lib/rescuetime/collection.rb'
9
+ # Offense count: 23
10
+ # Configuration parameters: AllowHeredoc, AllowURI, URISchemes.
11
+ # URISchemes: http, https
12
+ Metrics/LineLength:
13
+ Max: 91
13
14
 
14
15
  # Offense count: 1
15
16
  # Configuration parameters: CountComments.
16
17
  Metrics/MethodLength:
17
18
  Max: 13
18
19
 
19
- # Offense count: 1
20
+ # Offense count: 8
20
21
  # Cop supports --auto-correct.
21
- Performance/StringReplacement:
22
+ # Configuration parameters: EnforcedStyle, SupportedStyles, ProceduralMethods, FunctionalMethods, IgnoredMethods.
23
+ # SupportedStyles: line_count_based, semantic, braces_for_chaining
24
+ # ProceduralMethods: benchmark, bm, bmbm, create, each_with_object, measure, new, realtime, tap, with_object
25
+ # FunctionalMethods: let, let!, subject, watch
26
+ # IgnoredMethods: lambda, proc, it
27
+ Style/BlockDelimiters:
22
28
  Exclude:
23
- - 'lib/rescuetime/date_parser.rb'
29
+ - 'spec/rescuetime/core_extensions/object/blank_spec.rb'
30
+ - 'spec/rescuetime/date_parser_spec.rb'
31
+ - 'spec/rescuetime/formatters/array_formatter_spec.rb'
32
+ - 'spec/rescuetime/formatters/csv_formatter_spec.rb'
33
+ - 'spec/rescuetime/report_formatters_spec.rb'
34
+ - 'spec/rescuetime/requester_spec.rb'
24
35
 
25
- # Offense count: 1
26
- # Cop supports --auto-correct.
36
+ # Offense count: 7
27
37
  # Configuration parameters: EnforcedStyle, SupportedStyles.
28
- # SupportedStyles: always, conditionals
29
- Style/AndOr:
38
+ # SupportedStyles: nested, compact
39
+ Style/ClassAndModuleChildren:
30
40
  Exclude:
31
- - 'lib/rescuetime/query_buildable.rb'
41
+ - 'lib/rescuetime/core_extensions/object.rb'
42
+ - 'lib/rescuetime/core_extensions/object/blank.rb'
43
+ - 'lib/rescuetime/core_extensions/string.rb'
44
+ - 'lib/rescuetime/formatters/array_formatter.rb'
45
+ - 'lib/rescuetime/formatters/base_formatter.rb'
46
+ - 'lib/rescuetime/formatters/csv_formatter.rb'
47
+ - 'spec/fixtures/formatters/fake_formatter.rb'
32
48
 
33
- # Offense count: 5
34
- # Cop supports --auto-correct.
35
- # Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth.
36
- # SupportedStyles: aligned, indented
37
- Style/MultilineMethodCallIndentation:
38
- Enabled: false
39
-
40
- # Offense count: 9
41
- # Cop supports --auto-correct.
42
- Style/MutableConstant:
43
- Exclude:
44
- - 'lib/rescuetime/collection.rb'
45
- - 'lib/rescuetime/date_parser.rb'
46
- - 'lib/rescuetime/errors.rb'
47
- - 'lib/rescuetime/query_buildable.rb'
48
- - 'lib/rescuetime/requester.rb'
49
- - 'lib/rescuetime/version.rb'
50
- - 'spec/sample_secret.rb'
51
- - 'spec/secret.rb'
52
-
53
- # Offense count: 3
54
- # Cop supports --auto-correct.
55
- Style/NestedParenthesizedCalls:
49
+ # Offense count: 1
50
+ Style/DoubleNegation:
56
51
  Exclude:
57
- - 'spec/rescuetime/query_buildable_spec.rb'
52
+ - 'lib/rescuetime/core_extensions/object/blank.rb'
58
53
 
59
54
  # Offense count: 1
60
55
  # Cop supports --auto-correct.
61
56
  Style/ParallelAssignment:
62
57
  Exclude:
63
58
  - 'spec/rescuetime/query_buildable_spec.rb'
64
-
65
- # Offense count: 1
66
- # Cop supports --auto-correct.
67
- Style/RedundantSelf:
68
- Exclude:
69
- - 'lib/rescuetime/query_buildable.rb'
70
-
71
- # Offense count: 10
72
- # Cop supports --auto-correct.
73
- # Configuration parameters: EnforcedStyle, SupportedStyles.
74
- # SupportedStyles: only_raise, only_fail, semantic
75
- Style/SignalException:
76
- Exclude:
77
- - 'lib/rescuetime/collection.rb'
78
- - 'lib/rescuetime/date_parser.rb'
79
- - 'lib/rescuetime/query_buildable.rb'
80
- - 'lib/rescuetime/requester.rb'
@@ -5,7 +5,9 @@ rvm:
5
5
  - 2.0.0
6
6
  - 2.1
7
7
  - 2.2
8
- - ruby-head
8
+ - 2.3
9
+ - 2.4
10
+ - 2.5
9
11
 
10
12
  addons:
11
13
  code_climate:
@@ -0,0 +1,320 @@
1
+ # Change Log
2
+
3
+ All notable changes to this project will be documented in this file.
4
+ This project adheres to [Semantic Versioning](http://semver.org/).
5
+
6
+ See also
7
+ - [GitHub releases](https://github.com/leesharma/rescuetime/releases)
8
+
9
+ ## [Unreleased] - current
10
+
11
+ ...
12
+
13
+ ---
14
+
15
+ ## [v1.0.1] - 2019-02-16
16
+
17
+ Mention max ruby version in gemspec
18
+
19
+ ### Updates
20
+
21
+ No code updates. It looks like some functionality breaks under ruby 2.4+, so
22
+ this change updates the gemspec to reflect this. A future update will probably
23
+ resolve the bug.
24
+
25
+ ## [v1.0.0] - 2016-08-26
26
+
27
+ Bump Version and Misc Updates
28
+
29
+ ### Updates
30
+
31
+ The only update (aside from the version bump) is specifying that executables
32
+ are kept in the `bin` directory, not the `exe` directory. This version bump
33
+ is mainly to signify that the API is stable.
34
+
35
+ ## [v0.4.0] - 2016-04-26
36
+
37
+ Add Custom Formatters and Misc Updates
38
+
39
+ ### Breaking Changes
40
+
41
+ Exception classes, which were previously in the top-level Rescuetime (ex. Rescuetime::InvalidQueryError) are now under the Rescuetime::Errors module. This change was made for better code organization.
42
+
43
+ ### Updates
44
+
45
+ #### Allow Frozen String Literals
46
+
47
+ If you're using ruby 2.3, rescuetime will now work with the `# frozen_string_literals: true` option set.
48
+
49
+ #### Custom Formatters
50
+
51
+ The big change in this update is that users can now add/configure custom formatters.
52
+
53
+ Rescuetime ships with two report formats: CSV and Array. If you would like your
54
+ report in a different format, don't worry–it's easy to add a custom formatter.
55
+
56
+ Three things are required to add a custom formatter:
57
+
58
+ - Write a class within the module `Rescuetime::Formatters` that inherits from `Rescuetime::Formatters::BaseFormatter` or one of its descendants
59
+ - Define the class methods `.name` and `.format`
60
+ - Register your formatters using `Rescuetime.configure`
61
+
62
+ ##### Writing a Formatter
63
+
64
+ First, the formatters themselves. Here is a basic formatter:
65
+
66
+ ```ruby
67
+ # config/formatters/nil_formatter.rb
68
+ module Rescuetime::Formatters
69
+ # Turns a productivity report into nothing useful.
70
+ class NilFormatter < BaseFormatter
71
+ # @return [String] name of this report format
72
+ def self.name
73
+ 'nil'
74
+ end
75
+
76
+ # @param [CSV] _report the raw CSV report from Rescuetime
77
+ # @return [nil] the formatted output (in this case, nil)
78
+ def self.format(_report)
79
+ nil
80
+ end
81
+ end
82
+ end
83
+ ```
84
+
85
+ You can even inherit from an existing formatter:
86
+
87
+ ```ruby
88
+ # config/formatters/shouty_array_formatter.rb
89
+ module Rescuetime::Formatters
90
+ # Formats a rescuetime report as an array of hashes, except shouting.
91
+ class ShoutyArrayFormatter < ArrayFormatter
92
+ # @return [String] name of this report format
93
+ def self.name
94
+ 'shouty_array'
95
+ end
96
+
97
+ # @param [CSV] report the raw CSV report from Rescuetime
98
+ # @return [Array<Hash>] the formatted output (in this case, a shouty
99
+ # array of hashes)
100
+ def self.format(report)
101
+ array = super(report)
102
+ array.map do |hash|
103
+ terms = hash.map { |key, value| [key.to_s.upcase, value.to_s.upcase] }
104
+ Hash[terms]
105
+ end
106
+ end
107
+ end
108
+ end
109
+ ```
110
+
111
+ ##### Registering your Formatters
112
+
113
+ Before setting your report format, add the path to your formatter(s) to the
114
+ Rescuetime configuration using the Rescuetime.configure method. You will be
115
+ able to set, append to, or manipulate the formatter_paths setting.
116
+
117
+ ```ruby
118
+ Rescuetime.configure do |config|
119
+ path = File.expand_path('../my_custom_formatter.rb', __FILE__)
120
+ config.formatter_paths = [path]
121
+ end
122
+ ```
123
+
124
+ Now Rescuetime will look for the my_custom_formatter.rb file. Multiple paths
125
+ may be added as well.
126
+
127
+ ```ruby
128
+ Rescuetime.configure do |config|
129
+ config.formatter_paths = [
130
+ 'config/formatters/*_formatter.rb',
131
+ 'lib/formatters/**/*_formatter.rb',
132
+ ]
133
+ end
134
+ ```
135
+
136
+ ### Documentation
137
+
138
+ Increased documentation coverage/quality
139
+
140
+ ### Test Coverage
141
+
142
+ Increased
143
+
144
+ ## [v0.3.3] - 2016-05-21
145
+
146
+ Remove the dependency to Faraday
147
+
148
+ ### Refactoring
149
+
150
+ Switch from using Faraday to Net::HTTP in order to reduce production dependencies.
151
+
152
+ ---
153
+
154
+ ## [v0.3.2] - 2016-05-21
155
+
156
+ Documentation Comments and Refactoring
157
+
158
+ ### Documentation
159
+
160
+ Public methods and classes now have 100% documentation coverage, and the documentation was expanded to include descriptions, examples, links, and more.
161
+
162
+ ###Refactoring
163
+
164
+ The `Rescuetime::DateParser` class was extracted from the `Rescuetime::QueryBuilder`, keyword arguments were added in preference to the options hash, and other code readability/maintainability changes were made.
165
+
166
+ This release shouldn't affect the behavior or interface of the gem, and it adds no new features.
167
+
168
+ ---
169
+
170
+ ## [v0.3.1] - 2015-05-04
171
+
172
+ Fix gemspec description
173
+
174
+ ### Minor fix:
175
+
176
+ gemspec description used `%w(...)`, changed to string
177
+
178
+ ---
179
+
180
+ ## [v0.3.0] - 2015-05-04
181
+
182
+ ### Focus
183
+
184
+ Method Chaining and Lazy Evaluation
185
+
186
+ ### Updates
187
+
188
+ This release introduces many breaking changes to the codebase. Since the gem is still in development (v0.x.x), the major version has not increased.
189
+
190
+ The major goal of this release was refactoring and adding method chaining and lazy evaluation. Additionally, results can now be limited by overview/category/activity name as well as document name,.
191
+
192
+ Queries can now be formed with the following syntax:
193
+
194
+ ```ruby
195
+ client = Rescuetime::Client.new RESCUETIME_API_KEY
196
+ #=> <#Rescuetime::Client:...>
197
+
198
+ # Build the query
199
+ activities = client.activities.from(1.week.ago).where(name: 'github.com').format('csv')
200
+ #=> <#Rescuetime::Collection:...>
201
+
202
+ # Perform the query with #all or an enumerable method (#each, #map, #any?, etc.)
203
+ activities.all
204
+ #=> <#CSV:...>
205
+ ```
206
+
207
+ ---
208
+
209
+ ## [v0.2.0] - 2015-04-23
210
+
211
+ ### Scope
212
+
213
+ Provides nearly-full coverage of the RescueTime Analytic Data API.
214
+
215
+ ### Features
216
+
217
+ ```ruby
218
+ # Basics
219
+ @client = Rescuetime::Client.new
220
+
221
+ @client.api_key? #=> false
222
+ @client.valid_credentials? #=> false
223
+ @client.activities #=> Rescuetime::MissingCredentials
224
+
225
+ @client.api_key='invalid'
226
+ @client.api_key? #=> true
227
+ @client.valid_credentials? #=> false
228
+ @client.activities #=> Rescuetime::InvalidCredentials
229
+
230
+ @client.api_key= VALID_KEY
231
+ @client.valid_credentials? #=> true
232
+
233
+
234
+
235
+
236
+ # #productivity_levels
237
+ @client.productivity_levels #=> Hash
238
+ @client.productivity_levels[-2] #=> 'Very Unproductive'
239
+ @client.productivity_levels[0] #=> 'Neutral'
240
+
241
+
242
+
243
+
244
+ # #activities
245
+ @client.activities #=> Array<Hash>
246
+ @client.activities.first #=> Hash
247
+
248
+ # :by (report order/perspective)
249
+ @client.activities(by: 'rank') # returns ranked report by time spent per activity/category
250
+ @client.activities(by: 'time') # returns chronological report
251
+ @client.activities(by: 'member') # returns report grouped by member
252
+
253
+ # :detail (detail level of report)
254
+ @client.activities(detail: 'overview') # returns report at the 'overview' level (ie. Entertainment)
255
+ @client.activities(detail: 'category') # returns report at the 'category' level (ie. News and Opionion)
256
+ @client.activities(detail: 'activity') # returns report at the 'activity' level (ie. reddit.com)
257
+ # note: 'productivity' and 'efficiency' are options as well, but
258
+ # #productivity and #efficiency are the preferred way to
259
+ # get that information.
260
+
261
+ # :date, :from, and :to (date range of report)
262
+ @client.activities(date: '2015-04-02') # returns report for selected date
263
+ @client.activities(from: '2015-04-18') # returns report between selected and current date
264
+ @client.activities(from: Time.new(2015,04,19)) # time objects work too
265
+ @client.activities(from: '2015-04-02', to: '2015-04-02') # returns report between start and end date
266
+
267
+ # :interval (time interval of the report)
268
+ @client.activities(by: 'time', interval: 'minute') # returns report in 5-minute intervals
269
+ @client.activities(by: 'time', interval: 'hour') # returns report in 1-hour intervals
270
+ @client.activities(by: 'time', interval: 'day') # returns report in 1-day intervals
271
+ @client.activities(by: 'time', interval: 'week') # returns report in 1-week intervals
272
+ @client.activities(by: 'time', interval: 'month') # returns report in 1-month intervals
273
+
274
+ # :format (output format)
275
+ @client.activities #=> Array<Hash>
276
+ @client.activities(format: 'csv') #=> CSV
277
+
278
+
279
+
280
+
281
+ # #productivity
282
+ @client.productivity(...) # productivity takes the same options as #activities except :detail
283
+ # returns a productivity report with the given options
284
+
285
+
286
+
287
+ # #efficiency
288
+ @client.efficiency(...) # efficiency takes the same options as #activities except :detail
289
+ # returns an efficiency report with the given options
290
+
291
+
292
+
293
+ # All of this can be used together
294
+ @client.efficiency( from: '2015-03-20', # returns weekly efficiency report between March 20th and
295
+ to: '2015-04-20' , # April 20th of 2015 by member in csv format
296
+ interval: 'week',
297
+ format: 'csv' )
298
+ ```
299
+
300
+ ---
301
+
302
+ ## [v0.1.0] - 2015-04-15
303
+
304
+ Initial gem release
305
+
306
+ ### Features
307
+ - Rescuetime has a version number
308
+ - `Rescuetime::Client` exists
309
+ - `Rescuetime::Client#api_key?` returns existence of api key
310
+ - `Rescuetime::Client#api_key=` overwrites api key
311
+ - `Rescuetime::Client#activities` returns list of activities
312
+
313
+ [Unreleased]: https://github.com/leesharma/rescuetime/compare/v0.4.0...HEAD
314
+ [v0.4.0]: https://github.com/leesharma/rescuetime/compare/v0.3.3...v0.4.0
315
+ [v0.3.3]: https://github.com/leesharma/rescuetime/compare/v0.3.2...v0.3.3
316
+ [v0.3.2]: https://github.com/leesharma/rescuetime/compare/v0.3.1...v0.3.2
317
+ [v0.3.1]: https://github.com/leesharma/rescuetime/compare/v0.3.0...v0.3.1
318
+ [v0.3.0]: https://github.com/leesharma/rescuetime/compare/v0.2.0...v0.3.0
319
+ [v0.2.0]: https://github.com/leesharma/rescuetime/compare/v0.1.0...v0.2.0
320
+ [v0.1.0]: https://github.com/leesharma/rescuetime/commits/v0.1.0