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 +4 -4
- data/CHANGELOG.md +5 -0
- data/lib/TwitterOfBabel/address_extractor.rb +4 -3
- data/lib/TwitterOfBabel/babel_tweet.rb +1 -1
- data/lib/TwitterOfBabel/version.rb +1 -1
- data/lib/TwitterOfBabel.rb +15 -30
- metadata +2 -3
- data/.ruby-version +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7dff78539b1bb9c7992c0df48120e0bce62f46bdd3f1ed75b7ac35d8d8732229
|
4
|
+
data.tar.gz: a78610d892d63436e4697256e5a18633dd071fbb23bfe6ac51dfabe9f66f3076
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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 = /
|
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.
|
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
|
data/lib/TwitterOfBabel.rb
CHANGED
@@ -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]
|
13
|
-
@consumer_secret = opts[:consumer_secret]
|
14
|
-
@access_token = opts[:access_token]
|
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
|
20
|
-
|
21
|
-
|
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
|
-
|
30
|
-
|
31
|
-
|
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
|
42
|
-
config.consumer_secret
|
43
|
-
config.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
|
49
|
-
|
50
|
-
|
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.
|
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-
|
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
|