TwitterOfBabel 0.2.0 → 0.3.0

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
  SHA256:
3
- metadata.gz: e8e6754ba1a200a6a48a38ff39c08a5d47237b384f20875399ac0ade48d6ed24
4
- data.tar.gz: d8d73bbd787150a90f4d3bfc044d37c961a2fdf4f02ff1121e6ed5580bca44f9
3
+ metadata.gz: 7dff78539b1bb9c7992c0df48120e0bce62f46bdd3f1ed75b7ac35d8d8732229
4
+ data.tar.gz: a78610d892d63436e4697256e5a18633dd071fbb23bfe6ac51dfabe9f66f3076
5
5
  SHA512:
6
- metadata.gz: 10ed5c57e192c9ce7d66517c8312bae9a84b34c03197315eafaa4b09a3e60e27d1e6098ee12bebc7e4283f72a0225808743dc8d3ea0c2aa3a5986fadd0328317
7
- data.tar.gz: bacecc3299008806c961eb998b0ec4ae2884cdb867e9a1a5fa490997875127e4105607a8199e1b23cef5588a9ad5f65a8e4a6bcf9fbb421ceb5b4c29dc779837
6
+ metadata.gz: 0c832e68de0265b5df48413f592897ad1c839b0fef4f4fa7b2c71394847f6ec2d2f68400c6d856c37605e2fdf6aed2439f8437982683467d174cafabd8af4865
7
+ data.tar.gz: f2a87ff2e0e0c08db9e39e1978e8818f83a231955cc54371469d47a4b2029c1ed9c031355b51ae7d1ed6778be5abfd539e76378820e8d60bd192835d810468f6
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## [0.3.0]
2
+
3
+ * There is no longer a memoization file; this option is no longer requested.
4
+ * There is no longer a request to the user's timeline; instead the client is expected to supply what tweet needs to be responded to.
5
+
1
6
  ## [0.2.0]
2
7
 
3
8
  * All tweets now lead with mention of the person who initially tweeted
@@ -1,15 +1,16 @@
1
1
  module TwitterOfBabel
2
2
  class AddressExtractor
3
- ADDRESS_REGEX = /0x[a-f0-9]{1,195}/
3
+ ADDRESS_REGEX = /[^a-z0-9]/i
4
+ ACCEPTED_CHARS = /\A[a-z0-9]+\z/
4
5
 
5
6
  attr_reader :address
6
7
 
7
8
  def initialize(input_tweet)
8
- @address = input_tweet.scan(ADDRESS_REGEX).last || ''
9
+ @address = input_tweet.downcase.gsub(/\s+/, '').gsub(ADDRESS_REGEX, '')
9
10
  end
10
11
 
11
12
  def valid?
12
- !address.empty?
13
+ !address.empty? && address =~ ACCEPTED_CHARS
13
14
  end
14
15
 
15
16
  def to_s
@@ -6,7 +6,7 @@ module TwitterOfBabel
6
6
  attr_reader :prepped_rando
7
7
 
8
8
  def initialize(address)
9
- @address = address.to_i(16)
9
+ @address = address.to_i(36)
10
10
  @prepped_rando = Random.new(@address)
11
11
  @str = ''
12
12
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TwitterOfBabel
4
- VERSION = "0.2.0"
4
+ VERSION = "0.3.0"
5
5
  end
@@ -9,50 +9,35 @@ require_relative "TwitterOfBabel/address_extractor"
9
9
  module TwitterOfBabel
10
10
  class TwitterOfBabel
11
11
  def initialize(opts = {})
12
- @consumer_key = opts[:consumer_key] || ENV['TOB_API_KEY']
13
- @consumer_secret = opts[:consumer_secret] || ENV['TOB_SECRET']
14
- @access_token = opts[:access_token] || ENV['TOB_ACCESS']
12
+ @consumer_key = opts[:consumer_key] || ENV['TOB_API_KEY']
13
+ @consumer_secret = opts[:consumer_secret] || ENV['TOB_SECRET']
14
+ @access_token = opts[:access_token] || ENV['TOB_ACCESS']
15
15
  @access_token_secret = opts[:access_token_secret] || ENV['TOB_ACCESS_SECRET']
16
- @memoize_file = opts[:memoize_file] || ENV['TOB_MEMOIZE_FILE']
17
16
  end
18
17
 
19
- def respond_to_tweets
20
- client = twitter_client
21
- tweets = client.mentions_timeline
22
- .map { |t| { addr: AddressExtractor.new(t.full_text), tweet: t} }
23
- .select { |h| h[:addr].valid? && h[:tweet].user.screen_name }
24
- .reject { |h| previous_tweets.include?(h[:tweet].id) }
25
- .map { |h|
26
- h.merge({ tweet_text: BabelTweet.new(h[:addr].to_s).response_to(h[:tweet].user.screen_name) })
27
- }
18
+ def respond_to(tweet)
19
+ address = AddressExtractor.new(tweet.full_text)
20
+ return not_valid_address(tweet) unless address.valid? && tweet.user.screen_name
28
21
 
29
- tweets.each do |t|
30
- twitter_client.update(t[:tweet_text], in_reply_to_status_id: t[:tweet].id)
31
- previous_tweets << t[:tweet].id
32
- end
33
-
34
- save_previous_tweets
22
+ b_tweet = BabelTweet.new(address.to_s).response_to(tweet.user.screen_name)
23
+ twitter_client.update(b_tweet, in_reply_to_status_id: tweet.id)
24
+ true
35
25
  end
36
26
 
37
27
  private
38
28
 
39
29
  def twitter_client
40
30
  @twitter_client ||= Twitter::REST::Client.new do |config|
41
- config.consumer_key = @consumer_key
42
- config.consumer_secret = @consumer_secret
43
- config.access_token = @access_token
31
+ config.consumer_key = @consumer_key
32
+ config.consumer_secret = @consumer_secret
33
+ config.access_token = @access_token
44
34
  config.access_token_secret = @access_token_secret
45
35
  end
46
36
  end
47
37
 
48
- def previous_tweets
49
- @previous_tweets ||= []
50
- end
51
-
52
- def save_previous_tweets
53
- File.open(@memoize_file, 'w') do |f|
54
- f.write(previous_tweets.to_yaml)
55
- end
38
+ def not_valid_address(tweet)
39
+ tweet.update("@#{tweet.user.screen_name} the address you provided is invalid.",
40
+ in_reply_to_status_id: tweet.id)
56
41
  end
57
42
  end
58
43
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: TwitterOfBabel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andre LaFleur
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-11-15 00:00:00.000000000 Z
11
+ date: 2021-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: twitter
@@ -33,7 +33,6 @@ executables: []
33
33
  extensions: []
34
34
  extra_rdoc_files: []
35
35
  files:
36
- - ".ruby-version"
37
36
  - CHANGELOG.md
38
37
  - CODE_OF_CONDUCT.md
39
38
  - Gemfile
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 2.7.4