lolcommits 0.9.1 → 0.9.2.pre1

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: 51f5961dc47dd447b3a49d5ef75402c79aa96462
4
- data.tar.gz: 41b5a1f144ad1bc502fc2259ac502944499aedc5
3
+ metadata.gz: bdf5058a699862aaf28c86de13336c0fb9ce2fe8
4
+ data.tar.gz: 71a0deced06447c2fe8469a5caec00739edf233e
5
5
  SHA512:
6
- metadata.gz: a7f4f5e80cbd2acb50ef556cc0a07d03cf3d715f04433f0bf30046857075e877fb073015898af5cd79b0813ca6faff4af5041bf9b38f75e0878eb50cab2eed06
7
- data.tar.gz: c55dd1654d64411c0c6b02d83a5d5986900fb45067fe7a527a363e446b6bdcb6405443234deee0f9672f79ae842dbf94c35eb6e1e2ee9a892870a7f1855f39ac
6
+ metadata.gz: 7c2a1fdcff28ce329a77c38da2e47cfa3c6c92bdab14a05b27003385e46895ff3e4e1c51a78185390e7183d6771507863f45b27e667f75a21c4336b87ad90392
7
+ data.tar.gz: f4a5d25dab8080e4ecc132b148f39b6df1fb78c2afdf5cc1708540fade8b61b07d4df21ddaf3cb6a38a8676515a6fec2cafbed3467e21eb77a037bd3963d0417
data/.travis.yml CHANGED
@@ -7,6 +7,7 @@ rvm:
7
7
  - 2.2.4
8
8
  - 2.3.0
9
9
  - 2.3.3
10
+ - 2.4.0
10
11
  - ruby-head
11
12
 
12
13
  before_install:
data/CHANGELOG.md CHANGED
@@ -8,6 +8,9 @@ project adheres to [Semantic Versioning][Semver].
8
8
  * WIP - extract plugins to separate gems ...
9
9
  * Your contribution here!
10
10
 
11
+ ## [0.9.2][] (3 January 2017)
12
+ * Remove twitter gem, fixes Ruby 2.4 issues (@matthutchinson #328)
13
+
11
14
  ## [0.9.1][] (20 December 2016)
12
15
  * Remove Choice gem, use Methadone (@matthutchinson #326)
13
16
 
@@ -262,7 +265,8 @@ project adheres to [Semantic Versioning][Semver].
262
265
  instead of compositing multiply image Caption objects (this seems to be more
263
266
  reliable to not glitch.)
264
267
 
265
- [Unreleased]: https://github.com/mroth/lolcommits/compare/v0.9.1...HEAD
268
+ [Unreleased]: https://github.com/mroth/lolcommits/compare/v0.9.2...HEAD
269
+ [0.9.1]: https://github.com/mroth/lolcommits/compare/v0.9.1...v0.9.2
266
270
  [0.9.1]: https://github.com/mroth/lolcommits/compare/v0.9.0...v0.9.1
267
271
  [0.9.0]: https://github.com/mroth/lolcommits/compare/v0.8.1...v0.9.0
268
272
  [0.8.1]: https://github.com/mroth/lolcommits/compare/v0.8.0...v0.8.1
@@ -1,16 +1,19 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  require 'yaml'
3
3
  require 'oauth'
4
- require 'twitter'
4
+ require 'simple_oauth'
5
+ require 'rest_client'
6
+ require 'addressable/uri'
5
7
 
6
8
  module Lolcommits
7
9
  class LolTwitter < Plugin
8
- TWITTER_API_ENDPOINT = 'https://api.twitter.com'.freeze
9
- TWITTER_CONSUMER_KEY = 'qc096dJJCxIiqDNUqEsqQ'.freeze
10
- TWITTER_CONSUMER_SECRET = 'rvjNdtwSr1H0TvBvjpk6c4bvrNydHmmbvv7gXZQI'.freeze
11
- TWITTER_RETRIES = 2
12
- TWITTER_PIN_REGEX = /^\d{4,}$/ # 4 or more digits
13
- DEFAULT_SUFFIX = '#lolcommits'.freeze
10
+ TWITTER_API_ENDPOINT = 'https://api.twitter.com'.freeze
11
+ TWITTER_CONSUMER_KEY = 'qc096dJJCxIiqDNUqEsqQ'.freeze
12
+ TWITTER_CONSUMER_SECRET = 'rvjNdtwSr1H0TvBvjpk6c4bvrNydHmmbvv7gXZQI'.freeze
13
+ TWITTER_RESERVED_MEDIA_CHARS = 24
14
+ TWITTER_RETRIES = 2
15
+ TWITTER_PIN_REGEX = /^\d{4,}$/ # 4 or more digits
16
+ DEFAULT_SUFFIX = '#lolcommits'.freeze
14
17
 
15
18
  def run_postcapture
16
19
  return unless valid_configuration?
@@ -21,17 +24,30 @@ module Lolcommits
21
24
  attempts += 1
22
25
  puts "Tweeting: #{tweet}"
23
26
  debug "--> Tweeting! (attempt: #{attempts}, tweet length: #{tweet.length} chars)"
24
- if client.update_with_media(tweet, File.open(runner.main_image, 'r'))
25
- puts "\t--> Tweet Sent!"
26
- end
27
- rescue Twitter::Error::ServerError,
28
- Twitter::Error::ClientError => e
27
+ post_tweet(tweet, File.open(runner.main_image, 'r'))
28
+ rescue StandardError => e
29
29
  debug "Tweet FAILED! #{e.class} - #{e.message}"
30
30
  retry if attempts < TWITTER_RETRIES
31
31
  puts "ERROR: Tweet FAILED! (after #{attempts} attempts) - #{e.message}"
32
32
  end
33
33
  end
34
34
 
35
+ def post_url
36
+ # TODO: this endpoint is deprecated, use the new approach instead
37
+ # https://dev.twitter.com/rest/reference/post/statuses/update_with_mediath_media
38
+ @post_url ||= TWITTER_API_ENDPOINT + '/1.1/statuses/update_with_media.json'
39
+ end
40
+
41
+ def post_tweet(status, media)
42
+ RestClient.post(
43
+ post_url,
44
+ {
45
+ 'media[]' => media,
46
+ 'status' => status
47
+ }, Authorization: oauth_header
48
+ )
49
+ end
50
+
35
51
  def build_tweet(commit_message)
36
52
  prefix = config_with_default('prefix', '')
37
53
  suffix = " #{config_with_default('suffix', DEFAULT_SUFFIX)}"
@@ -113,13 +129,18 @@ module Lolcommits
113
129
  configuration['secret']
114
130
  end
115
131
 
116
- def client
117
- @client ||= Twitter::REST::Client.new do |config|
118
- config.consumer_key = TWITTER_CONSUMER_KEY
119
- config.consumer_secret = TWITTER_CONSUMER_SECRET
120
- config.access_token = configuration['access_token']
121
- config.access_token_secret = configuration['secret']
122
- end
132
+ def oauth_header
133
+ uri = Addressable::URI.parse(post_url)
134
+ SimpleOAuth::Header.new(:post, uri, {}, oauth_credentials)
135
+ end
136
+
137
+ def oauth_credentials
138
+ {
139
+ consumer_key: TWITTER_CONSUMER_KEY,
140
+ consumer_secret: TWITTER_CONSUMER_SECRET,
141
+ token: configuration['access_token'],
142
+ token_secret: configuration['secret']
143
+ }
123
144
  end
124
145
 
125
146
  def oauth_consumer
@@ -141,7 +162,7 @@ module Lolcommits
141
162
  end
142
163
 
143
164
  def max_tweet_size
144
- 139 - client.configuration.characters_reserved_per_media
165
+ 139 - TWITTER_RESERVED_MEDIA_CHARS
145
166
  end
146
167
 
147
168
  def self.name
@@ -1,4 +1,4 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  module Lolcommits
3
- VERSION = '0.9.1'.freeze
3
+ VERSION = '0.9.2.pre1'.freeze
4
4
  end
data/lolcommits.gemspec CHANGED
@@ -31,11 +31,10 @@ Gem::Specification.new do |s|
31
31
  # hold back upgrading (and why)
32
32
  s.add_development_dependency('aruba', '=0.6.2') # upgrading requires a lot of test code changes
33
33
  s.add_development_dependency('rake', '=10.5.0') # ~> 11+ introduces lots of warnings from other deps
34
- s.add_runtime_dependency('twitter', '~> 5.17.0') # twitter 6+ requires higher faraday
35
34
  s.add_runtime_dependency('net-http-persistent', '=2.9.4') # ~> 3+ requires Ruby 2.1
36
35
 
37
36
  # core
38
- s.add_runtime_dependency('methadone', '~> 1.9.3')
37
+ s.add_runtime_dependency('methadone', '~> 1.9.5')
39
38
  s.add_runtime_dependency('mercurial-ruby', '~> 0.7.12')
40
39
  s.add_runtime_dependency('mini_magick', '~> 4.6.0')
41
40
  s.add_runtime_dependency('launchy', '~> 2.4.3')
@@ -48,13 +47,14 @@ Gem::Specification.new do |s|
48
47
  s.add_runtime_dependency('tumblr_client', '~> 0.8.5') # tumblr
49
48
 
50
49
  # development gems
51
- s.add_development_dependency('rdoc', '~> 5.0.0')
52
-
53
- # testing gems
54
- s.add_development_dependency('rubocop', '~> 0.46.0')
55
- s.add_development_dependency('travis', '~> 1.8.5')
56
- s.add_development_dependency('minitest', '~> 5.10.1')
57
- s.add_development_dependency('coveralls', '~> 0.8.17')
58
- s.add_development_dependency('ffaker', '~> 2.3.0')
59
- s.add_development_dependency('cucumber', '~> 2.4.0')
50
+ s.add_development_dependency('rdoc')
51
+ s.add_development_dependency('pry')
52
+
53
+ # testing gems (latest versions)
54
+ s.add_development_dependency('rubocop')
55
+ s.add_development_dependency('travis')
56
+ s.add_development_dependency('minitest')
57
+ s.add_development_dependency('coveralls')
58
+ s.add_development_dependency('ffaker')
59
+ s.add_development_dependency('cucumber')
60
60
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lolcommits
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.9.2.pre1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Rothenberg
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-12-20 00:00:00.000000000 Z
12
+ date: 2017-01-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: aruba
@@ -39,20 +39,6 @@ dependencies:
39
39
  - - '='
40
40
  - !ruby/object:Gem::Version
41
41
  version: 10.5.0
42
- - !ruby/object:Gem::Dependency
43
- name: twitter
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - "~>"
47
- - !ruby/object:Gem::Version
48
- version: 5.17.0
49
- type: :runtime
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - "~>"
54
- - !ruby/object:Gem::Version
55
- version: 5.17.0
56
42
  - !ruby/object:Gem::Dependency
57
43
  name: net-http-persistent
58
44
  requirement: !ruby/object:Gem::Requirement
@@ -73,14 +59,14 @@ dependencies:
73
59
  requirements:
74
60
  - - "~>"
75
61
  - !ruby/object:Gem::Version
76
- version: 1.9.3
62
+ version: 1.9.5
77
63
  type: :runtime
78
64
  prerelease: false
79
65
  version_requirements: !ruby/object:Gem::Requirement
80
66
  requirements:
81
67
  - - "~>"
82
68
  - !ruby/object:Gem::Version
83
- version: 1.9.3
69
+ version: 1.9.5
84
70
  - !ruby/object:Gem::Dependency
85
71
  name: mercurial-ruby
86
72
  requirement: !ruby/object:Gem::Requirement
@@ -197,100 +183,114 @@ dependencies:
197
183
  name: rdoc
198
184
  requirement: !ruby/object:Gem::Requirement
199
185
  requirements:
200
- - - "~>"
186
+ - - ">="
201
187
  - !ruby/object:Gem::Version
202
- version: 5.0.0
188
+ version: '0'
203
189
  type: :development
204
190
  prerelease: false
205
191
  version_requirements: !ruby/object:Gem::Requirement
206
192
  requirements:
207
- - - "~>"
193
+ - - ">="
208
194
  - !ruby/object:Gem::Version
209
- version: 5.0.0
195
+ version: '0'
196
+ - !ruby/object:Gem::Dependency
197
+ name: pry
198
+ requirement: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - ">="
201
+ - !ruby/object:Gem::Version
202
+ version: '0'
203
+ type: :development
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
210
210
  - !ruby/object:Gem::Dependency
211
211
  name: rubocop
212
212
  requirement: !ruby/object:Gem::Requirement
213
213
  requirements:
214
- - - "~>"
214
+ - - ">="
215
215
  - !ruby/object:Gem::Version
216
- version: 0.46.0
216
+ version: '0'
217
217
  type: :development
218
218
  prerelease: false
219
219
  version_requirements: !ruby/object:Gem::Requirement
220
220
  requirements:
221
- - - "~>"
221
+ - - ">="
222
222
  - !ruby/object:Gem::Version
223
- version: 0.46.0
223
+ version: '0'
224
224
  - !ruby/object:Gem::Dependency
225
225
  name: travis
226
226
  requirement: !ruby/object:Gem::Requirement
227
227
  requirements:
228
- - - "~>"
228
+ - - ">="
229
229
  - !ruby/object:Gem::Version
230
- version: 1.8.5
230
+ version: '0'
231
231
  type: :development
232
232
  prerelease: false
233
233
  version_requirements: !ruby/object:Gem::Requirement
234
234
  requirements:
235
- - - "~>"
235
+ - - ">="
236
236
  - !ruby/object:Gem::Version
237
- version: 1.8.5
237
+ version: '0'
238
238
  - !ruby/object:Gem::Dependency
239
239
  name: minitest
240
240
  requirement: !ruby/object:Gem::Requirement
241
241
  requirements:
242
- - - "~>"
242
+ - - ">="
243
243
  - !ruby/object:Gem::Version
244
- version: 5.10.1
244
+ version: '0'
245
245
  type: :development
246
246
  prerelease: false
247
247
  version_requirements: !ruby/object:Gem::Requirement
248
248
  requirements:
249
- - - "~>"
249
+ - - ">="
250
250
  - !ruby/object:Gem::Version
251
- version: 5.10.1
251
+ version: '0'
252
252
  - !ruby/object:Gem::Dependency
253
253
  name: coveralls
254
254
  requirement: !ruby/object:Gem::Requirement
255
255
  requirements:
256
- - - "~>"
256
+ - - ">="
257
257
  - !ruby/object:Gem::Version
258
- version: 0.8.17
258
+ version: '0'
259
259
  type: :development
260
260
  prerelease: false
261
261
  version_requirements: !ruby/object:Gem::Requirement
262
262
  requirements:
263
- - - "~>"
263
+ - - ">="
264
264
  - !ruby/object:Gem::Version
265
- version: 0.8.17
265
+ version: '0'
266
266
  - !ruby/object:Gem::Dependency
267
267
  name: ffaker
268
268
  requirement: !ruby/object:Gem::Requirement
269
269
  requirements:
270
- - - "~>"
270
+ - - ">="
271
271
  - !ruby/object:Gem::Version
272
- version: 2.3.0
272
+ version: '0'
273
273
  type: :development
274
274
  prerelease: false
275
275
  version_requirements: !ruby/object:Gem::Requirement
276
276
  requirements:
277
- - - "~>"
277
+ - - ">="
278
278
  - !ruby/object:Gem::Version
279
- version: 2.3.0
279
+ version: '0'
280
280
  - !ruby/object:Gem::Dependency
281
281
  name: cucumber
282
282
  requirement: !ruby/object:Gem::Requirement
283
283
  requirements:
284
- - - "~>"
284
+ - - ">="
285
285
  - !ruby/object:Gem::Version
286
- version: 2.4.0
286
+ version: '0'
287
287
  type: :development
288
288
  prerelease: false
289
289
  version_requirements: !ruby/object:Gem::Requirement
290
290
  requirements:
291
- - - "~>"
291
+ - - ">="
292
292
  - !ruby/object:Gem::Version
293
- version: 2.4.0
293
+ version: '0'
294
294
  description: |2
295
295
  lolcommits takes a snapshot with your webcam every time you git commit code,
296
296
  and archives a lolcat style image with it. It's selfies for software
@@ -395,9 +395,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
395
395
  version: '2.0'
396
396
  required_rubygems_version: !ruby/object:Gem::Requirement
397
397
  requirements:
398
- - - ">="
398
+ - - ">"
399
399
  - !ruby/object:Gem::Version
400
- version: '0'
400
+ version: 1.3.1
401
401
  requirements:
402
402
  - imagemagick
403
403
  - a webcam