tomodachi 0.0.1 → 0.1.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/LICENSE.txt +1 -1
- data/README.md +13 -12
- data/bin/tomodachi +2 -2
- data/lib/tomodachi.rb +47 -24
- data/lib/tomodachi/auth.rb +64 -102
- data/lib/tomodachi/client.rb +54 -30
- data/lib/tomodachi/version.rb +2 -2
- data/tomodachi.gemspec +16 -14
- metadata +63 -41
- data/spec/auth_spec.rb +0 -2
- data/spec/client_spec.rb +0 -2
- data/spec/spec_helper.rb +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3c09aafd7639e1e9b0edafc93c585e1e6b2105dd
|
4
|
+
data.tar.gz: e1c35f10a6d7204fd0bbb3f44088d9159deb403e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5f2f21fffac66a864a97d70b0a4ebf9d880fb40a0ab21ca5d197f847de63c7e7c70d924cf26f6a77810632f78a109dd19320e407c1570455e1606b15c75d8945
|
7
|
+
data.tar.gz: a8d799e1f03be6cec8c6e79cad5b498caa2f2aa139cb88043cd1f18c147910bf63bf3d74750ba14013779b1a24e5671fd7277e9fde8b841cd89c48465d11a7be
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -1,24 +1,25 @@
|
|
1
1
|
# Tomodachi
|
2
2
|
|
3
|
-
|
3
|
+
Automatic follow back tool with Twitter streaming API
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
|
-
|
7
|
+
```bash
|
8
|
+
$ gem install tomodachi
|
9
|
+
```
|
8
10
|
|
9
|
-
|
10
|
-
|
11
|
-
And then execute:
|
12
|
-
|
13
|
-
$ bundle
|
14
|
-
|
15
|
-
Or install it yourself as:
|
11
|
+
## Usage
|
16
12
|
|
17
|
-
|
13
|
+
```bash
|
14
|
+
# authenticate a twitter user and save its access token
|
15
|
+
$ tomodachi auth
|
18
16
|
|
19
|
-
|
17
|
+
# list your authenticated accounts' screen_name
|
18
|
+
$ tomodachi list
|
20
19
|
|
21
|
-
|
20
|
+
# start automatic following back
|
21
|
+
$ tomodachi start screen_name
|
22
|
+
```
|
22
23
|
|
23
24
|
## Contributing
|
24
25
|
|
data/bin/tomodachi
CHANGED
data/lib/tomodachi.rb
CHANGED
@@ -1,32 +1,55 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
1
|
+
require 'tomodachi/version'
|
2
|
+
require 'tomodachi/auth'
|
3
|
+
require 'tomodachi/client'
|
4
|
+
require 'unindent'
|
4
5
|
|
5
|
-
|
6
|
-
|
7
|
-
CONSUMER_KEY = 'IQKbtAYlXLripLGPWd0HUA'
|
6
|
+
class Tomodachi
|
7
|
+
CONSUMER_KEY = 'IQKbtAYlXLripLGPWd0HUA'
|
8
8
|
CONSUMER_SECRET = 'GgDYlkSvaPxGxC4X8liwpUoqKwwr3lCADbz8A7ADU'
|
9
9
|
|
10
|
-
def
|
11
|
-
case
|
12
|
-
when
|
13
|
-
auth = Tomodachi::Auth.new
|
10
|
+
def setup
|
11
|
+
case command
|
12
|
+
when 'auth'
|
14
13
|
auth.create
|
15
|
-
when
|
16
|
-
|
17
|
-
when
|
18
|
-
if
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
end
|
14
|
+
when 'list'
|
15
|
+
auth.list
|
16
|
+
when 'start'
|
17
|
+
return print_start_usage if screen_name.nil?
|
18
|
+
|
19
|
+
client = Tomodachi::Client.new(screen_name)
|
20
|
+
client.start
|
23
21
|
else
|
24
|
-
|
25
|
-
Usage:
|
26
|
-
tomodachi auth
|
27
|
-
tomodachi list
|
28
|
-
tomodachi start screen_name
|
29
|
-
EOS
|
22
|
+
print_usage
|
30
23
|
end
|
31
24
|
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def command
|
29
|
+
ARGV[0]
|
30
|
+
end
|
31
|
+
|
32
|
+
def screen_name
|
33
|
+
ARGV[1]
|
34
|
+
end
|
35
|
+
|
36
|
+
def auth
|
37
|
+
@auth ||= Tomodachi::Auth.new
|
38
|
+
end
|
39
|
+
|
40
|
+
def print_usage
|
41
|
+
puts <<-EOS.unindent
|
42
|
+
Usage:
|
43
|
+
tomodachi auth # add account
|
44
|
+
tomodachi list # authenticated account list
|
45
|
+
tomodachi start [screen_name] # start automatic following back
|
46
|
+
EOS
|
47
|
+
end
|
48
|
+
|
49
|
+
def print_start_usage
|
50
|
+
puts <<-EOS.unindent
|
51
|
+
Usage:
|
52
|
+
tomodachi start [screen_name]
|
53
|
+
EOS
|
54
|
+
end
|
32
55
|
end
|
data/lib/tomodachi/auth.rb
CHANGED
@@ -3,124 +3,86 @@ require 'oauth'
|
|
3
3
|
require 'thor'
|
4
4
|
require 'thor/group'
|
5
5
|
require 'twitter'
|
6
|
+
require 'pry'
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
include Thor::Actions
|
10
|
-
|
11
|
-
CONFIG_PATH = File.expand_path('~/.tomodachi/config.yml')
|
12
|
-
|
13
|
-
def create
|
14
|
-
consumer = OAuth::Consumer.new(
|
15
|
-
CONSUMER_KEY,
|
16
|
-
CONSUMER_SECRET,
|
17
|
-
:site => 'https://api.twitter.com'
|
18
|
-
)
|
19
|
-
request_token = consumer.get_request_token
|
8
|
+
class Tomodachi::Auth < Thor::Group
|
9
|
+
include Thor::Actions
|
20
10
|
|
21
|
-
|
22
|
-
system 'open', request_token.authorize_url
|
23
|
-
pin = ask 'PIN:'
|
11
|
+
CONFIG_PATH = File.expand_path('~/.tomodachi')
|
24
12
|
|
25
|
-
|
13
|
+
def create
|
14
|
+
load_access_token(access_token)
|
26
15
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
conf += [
|
40
|
-
id: user[:id],
|
41
|
-
screen_name: user[:screen_name],
|
42
|
-
access_token: access_token.token,
|
43
|
-
access_token_secret: access_token.secret
|
44
|
-
]
|
45
|
-
Auth.save_config(conf)
|
46
|
-
puts 'Added configuration for ' + user[:screen_name]
|
47
|
-
end
|
16
|
+
accounts = load_config || []
|
17
|
+
if accounts.find { |account| account[:id] == user[:id] }
|
18
|
+
puts "#{user[:screen_name]} is already added."
|
19
|
+
else
|
20
|
+
accounts += [
|
21
|
+
id: user[:id],
|
22
|
+
screen_name: user[:screen_name],
|
23
|
+
access_token: access_token.token,
|
24
|
+
access_token_secret: access_token.secret,
|
25
|
+
]
|
26
|
+
save_config(accounts)
|
27
|
+
puts "Added configuration for #{user[:screen_name]}"
|
48
28
|
end
|
29
|
+
end
|
49
30
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
else
|
57
|
-
puts "There is no authenticated account."
|
31
|
+
def list
|
32
|
+
accounts = load_config
|
33
|
+
if accounts
|
34
|
+
puts "Available accounts:"
|
35
|
+
accounts.each do |conf|
|
36
|
+
puts " #{conf[:screen_name]}"
|
58
37
|
end
|
38
|
+
else
|
39
|
+
puts "There is no authenticated account."
|
59
40
|
end
|
41
|
+
end
|
60
42
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
end
|
68
|
-
end
|
69
|
-
false
|
70
|
-
end
|
71
|
-
|
72
|
-
def self.exist_by_id?(id)
|
73
|
-
if confs = Auth.load_config
|
74
|
-
confs.each do |conf|
|
75
|
-
if conf[:id] == id
|
76
|
-
return true
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
false
|
43
|
+
def load_config
|
44
|
+
if File.exists?(CONFIG_PATH)
|
45
|
+
yaml = File.read(CONFIG_PATH)
|
46
|
+
YAML.load(yaml)
|
47
|
+
else
|
48
|
+
nil
|
81
49
|
end
|
50
|
+
end
|
82
51
|
|
83
|
-
|
84
|
-
path = File.expand_path('~/.tomodachi/')
|
85
|
-
if FileTest.exist?(path) == false
|
86
|
-
FileUtils.mkdir_p(path)
|
87
|
-
return nil
|
88
|
-
end
|
89
|
-
|
90
|
-
if FileTest.exist?(CONFIG_PATH)
|
91
|
-
str = nil
|
92
|
-
File.open(CONFIG_PATH, 'r') do |f|
|
93
|
-
str = f.read
|
94
|
-
end
|
95
|
-
YAML.load(str)
|
96
|
-
else
|
97
|
-
nil
|
98
|
-
end
|
99
|
-
end
|
52
|
+
private
|
100
53
|
|
101
|
-
|
102
|
-
|
103
|
-
File.open(CONFIG_PATH, 'r') do |f|
|
104
|
-
str = f.read
|
105
|
-
end
|
54
|
+
def access_token
|
55
|
+
return @access_token if @access_token
|
106
56
|
|
107
|
-
|
108
|
-
|
57
|
+
request_token = consumer.get_request_token
|
58
|
+
system('open', request_token.authorize_url)
|
59
|
+
@access_token = request_token.get_access_token(oauth_verifier: ask('PIN:'))
|
60
|
+
end
|
109
61
|
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
nil
|
117
|
-
end
|
62
|
+
def load_access_token(access_token)
|
63
|
+
Twitter.configure do |config|
|
64
|
+
config.consumer_key = Tomodachi::CONSUMER_KEY
|
65
|
+
config.consumer_secret = Tomodachi::CONSUMER_SECRET
|
66
|
+
config.oauth_token = access_token.token
|
67
|
+
config.oauth_token_secret = access_token.secret
|
118
68
|
end
|
69
|
+
end
|
119
70
|
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
71
|
+
def user
|
72
|
+
@user ||= Twitter.user
|
73
|
+
end
|
74
|
+
|
75
|
+
def consumer
|
76
|
+
@consumer ||= OAuth::Consumer.new(
|
77
|
+
Tomodachi::CONSUMER_KEY,
|
78
|
+
Tomodachi::CONSUMER_SECRET,
|
79
|
+
site: 'https://api.twitter.com',
|
80
|
+
)
|
81
|
+
end
|
82
|
+
|
83
|
+
def save_config(conf)
|
84
|
+
File.open(CONFIG_PATH, 'w') do |f|
|
85
|
+
f << conf.to_yaml
|
124
86
|
end
|
125
87
|
end
|
126
88
|
end
|
data/lib/tomodachi/client.rb
CHANGED
@@ -1,36 +1,60 @@
|
|
1
|
-
require 'twitter'
|
2
1
|
require 'user_stream'
|
3
2
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
config.oauth_token_secret = conf[:access_token_secret]
|
21
|
-
end
|
22
|
-
|
23
|
-
client = UserStream.client
|
24
|
-
client.user do |status|
|
25
|
-
if status["event"] == "follow" && status["source"]["screen_name"] != screen_name
|
26
|
-
puts 'followed ' + status["source"]["screen_name"]
|
27
|
-
Twitter.follow(status["source"]["id"])
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
else
|
32
|
-
puts screen_name + " is not authenticated."
|
3
|
+
class Tomodachi::Client
|
4
|
+
def initialize(screen_name)
|
5
|
+
@screen_name = screen_name
|
6
|
+
end
|
7
|
+
|
8
|
+
def start
|
9
|
+
unless account
|
10
|
+
puts "#{screen_name} is not authenticated."
|
11
|
+
return
|
12
|
+
end
|
13
|
+
|
14
|
+
configure(account)
|
15
|
+
client.user do |status|
|
16
|
+
if status['event'] == 'follow' && status['source']['screen_name'] != @screen_name
|
17
|
+
puts "followed #{status['source']['screen_name']}"
|
18
|
+
Twitter.follow(status['source']['id'])
|
33
19
|
end
|
34
20
|
end
|
35
21
|
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def client
|
26
|
+
@client ||= UserStream.client
|
27
|
+
end
|
28
|
+
|
29
|
+
def configure(account)
|
30
|
+
UserStream.configure do |config|
|
31
|
+
config.consumer_key = Tomodachi::CONSUMER_KEY
|
32
|
+
config.consumer_secret = Tomodachi::CONSUMER_SECRET
|
33
|
+
config.oauth_token = account[:access_token]
|
34
|
+
config.oauth_token_secret = account[:access_token_secret]
|
35
|
+
end
|
36
|
+
|
37
|
+
Twitter.configure do |config|
|
38
|
+
config.consumer_key = Tomodachi::CONSUMER_KEY
|
39
|
+
config.consumer_secret = Tomodachi::CONSUMER_SECRET
|
40
|
+
config.oauth_token = account[:access_token]
|
41
|
+
config.oauth_token_secret = account[:access_token_secret]
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def account
|
46
|
+
return @account if @account
|
47
|
+
|
48
|
+
accounts = auth.load_config
|
49
|
+
@account = accounts.find { |account| account[:screen_name] == @screen_name }
|
50
|
+
end
|
51
|
+
|
52
|
+
def account_exists?(screen_name)
|
53
|
+
accounts = auth.load_config
|
54
|
+
accounts.find { |account| account[:screen_name] == screen_name }
|
55
|
+
end
|
56
|
+
|
57
|
+
def auth
|
58
|
+
@auth ||= Tomodachi::Auth.new
|
59
|
+
end
|
36
60
|
end
|
data/lib/tomodachi/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
|
2
|
-
VERSION =
|
1
|
+
class Tomodachi
|
2
|
+
VERSION = '0.1.0'
|
3
3
|
end
|
data/tomodachi.gemspec
CHANGED
@@ -4,24 +4,26 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'tomodachi/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'tomodachi'
|
8
8
|
spec.version = Tomodachi::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
9
|
+
spec.authors = ['Takashi Kokubun']
|
10
|
+
spec.email = ['takashikkbn@gmail.com']
|
11
11
|
spec.description = %q{Automatic follow back tool with Twitter streaming API}
|
12
12
|
spec.summary = %q{Automatic follow back tool with Twitter streaming API}
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
13
|
+
spec.homepage = 'https://github.com/k0kubun/tomodachi'
|
14
|
+
spec.license = 'MIT'
|
15
15
|
|
16
16
|
spec.files = `git ls-files`.split($/)
|
17
|
-
spec.executables = [
|
18
|
-
spec.
|
19
|
-
spec.require_paths = ["lib"]
|
17
|
+
spec.executables = ['tomodachi']
|
18
|
+
spec.require_paths = ['lib']
|
20
19
|
|
21
|
-
spec.
|
22
|
-
spec.
|
23
|
-
spec.
|
24
|
-
spec.
|
25
|
-
spec.
|
26
|
-
spec.
|
20
|
+
spec.add_dependency 'faraday', '~> 0.8.0'
|
21
|
+
spec.add_dependency 'twitter', '~> 4.8.1'
|
22
|
+
spec.add_dependency 'thor', '~> 0.18.1'
|
23
|
+
spec.add_dependency 'userstream', '~> 1.4.0'
|
24
|
+
spec.add_dependency 'oauth', '~> 0.4.7'
|
25
|
+
spec.add_dependency 'unindent', '~> 1.0'
|
26
|
+
spec.add_dependency 'pry', '~> 0.9.12.6'
|
27
|
+
|
28
|
+
spec.add_development_dependency 'bundler'
|
27
29
|
end
|
metadata
CHANGED
@@ -1,87 +1,115 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tomodachi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Takashi Kokubun
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-06-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: faraday
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
20
|
-
type: :
|
19
|
+
version: 0.8.0
|
20
|
+
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 0.8.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: twitter
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
34
|
-
type: :
|
33
|
+
version: 4.8.1
|
34
|
+
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 4.8.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: thor
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
48
|
-
type: :
|
47
|
+
version: 0.18.1
|
48
|
+
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 0.18.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: userstream
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
62
|
-
type: :
|
61
|
+
version: 1.4.0
|
62
|
+
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 1.4.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: oauth
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ~>
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
76
|
-
type: :
|
75
|
+
version: 0.4.7
|
76
|
+
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ~>
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 0.4.7
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: unindent
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: pry
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ~>
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 0.9.12.6
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ~>
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.9.12.6
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: bundler
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
86
114
|
requirements:
|
87
115
|
- - '>='
|
@@ -96,7 +124,7 @@ dependencies:
|
|
96
124
|
version: '0'
|
97
125
|
description: Automatic follow back tool with Twitter streaming API
|
98
126
|
email:
|
99
|
-
-
|
127
|
+
- takashikkbn@gmail.com
|
100
128
|
executables:
|
101
129
|
- tomodachi
|
102
130
|
extensions: []
|
@@ -112,11 +140,8 @@ files:
|
|
112
140
|
- lib/tomodachi/auth.rb
|
113
141
|
- lib/tomodachi/client.rb
|
114
142
|
- lib/tomodachi/version.rb
|
115
|
-
- spec/auth_spec.rb
|
116
|
-
- spec/client_spec.rb
|
117
|
-
- spec/spec_helper.rb
|
118
143
|
- tomodachi.gemspec
|
119
|
-
homepage: https://github.com/
|
144
|
+
homepage: https://github.com/k0kubun/tomodachi
|
120
145
|
licenses:
|
121
146
|
- MIT
|
122
147
|
metadata: {}
|
@@ -136,11 +161,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
136
161
|
version: '0'
|
137
162
|
requirements: []
|
138
163
|
rubyforge_project:
|
139
|
-
rubygems_version: 2.0.
|
164
|
+
rubygems_version: 2.0.3
|
140
165
|
signing_key:
|
141
166
|
specification_version: 4
|
142
167
|
summary: Automatic follow back tool with Twitter streaming API
|
143
|
-
test_files:
|
144
|
-
- spec/auth_spec.rb
|
145
|
-
- spec/client_spec.rb
|
146
|
-
- spec/spec_helper.rb
|
168
|
+
test_files: []
|
data/spec/auth_spec.rb
DELETED
data/spec/client_spec.rb
DELETED
data/spec/spec_helper.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require 'tomodachi'
|