tinby 0.1.0 → 0.1.1
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/Gemfile +2 -2
- data/Gemfile.lock +49 -1
- data/README.md +1 -1
- data/Rakefile +3 -3
- data/bin/console +3 -3
- data/lib/tinby.rb +1 -7
- data/lib/tinby/client.rb +95 -0
- data/lib/tinby/facebook.rb +44 -0
- data/lib/tinby/version.rb +1 -1
- data/tinby.gemspec +21 -16
- metadata +74 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2659d0ea572088178f2e7faa8903e700e3f4427b341e1f6a33782a2a830fd853
|
|
4
|
+
data.tar.gz: 9ff4aeb6612100d5ef197889bb12506b7d31d0980c8892405c7542425627119a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: be93f24857461c155a9e980d01a5f942dd9ce5b9f6f0dc2fba959ed87111847be21be0c1b7a5a8c105d2ab23757d5e42c67f6e4a21e88f2f29b05e8f223b7db5
|
|
7
|
+
data.tar.gz: b7ab7ae3ca22715418b79f2b39a5c31e2ca05f6bafd55a184b93e331b7dc3f384fefa2c0c16af696c323d1f53364562178c8a0b50e94dba4fcefce4ced77a7c8
|
data/Gemfile
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
source
|
|
1
|
+
source 'https://rubygems.org'
|
|
2
2
|
|
|
3
|
-
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
|
3
|
+
git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
|
|
4
4
|
|
|
5
5
|
# Specify your gem's dependencies in tinby.gemspec
|
|
6
6
|
gemspec
|
data/Gemfile.lock
CHANGED
|
@@ -1,12 +1,50 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
tinby (0.1.
|
|
4
|
+
tinby (0.1.1)
|
|
5
|
+
faraday (~> 0)
|
|
6
|
+
faraday_middleware (~> 0)
|
|
7
|
+
json (~> 2.1)
|
|
8
|
+
selenium-webdriver (~> 3.13)
|
|
9
|
+
tinder_auth_fetcher (~> 0)
|
|
5
10
|
|
|
6
11
|
GEM
|
|
7
12
|
remote: https://rubygems.org/
|
|
8
13
|
specs:
|
|
14
|
+
childprocess (0.9.0)
|
|
15
|
+
ffi (~> 1.0, >= 1.0.11)
|
|
16
|
+
connection_pool (2.2.2)
|
|
9
17
|
diff-lcs (1.3)
|
|
18
|
+
domain_name (0.5.20180417)
|
|
19
|
+
unf (>= 0.0.5, < 1.0.0)
|
|
20
|
+
faraday (0.15.2)
|
|
21
|
+
multipart-post (>= 1.2, < 3)
|
|
22
|
+
faraday_middleware (0.12.2)
|
|
23
|
+
faraday (>= 0.7.4, < 1.0)
|
|
24
|
+
ffi (1.9.25)
|
|
25
|
+
http-cookie (1.0.3)
|
|
26
|
+
domain_name (~> 0.5)
|
|
27
|
+
json (2.1.0)
|
|
28
|
+
mechanize (2.7.6)
|
|
29
|
+
domain_name (~> 0.5, >= 0.5.1)
|
|
30
|
+
http-cookie (~> 1.0)
|
|
31
|
+
mime-types (>= 1.17.2)
|
|
32
|
+
net-http-digest_auth (~> 1.1, >= 1.1.1)
|
|
33
|
+
net-http-persistent (>= 2.5.2)
|
|
34
|
+
nokogiri (~> 1.6)
|
|
35
|
+
ntlm-http (~> 0.1, >= 0.1.1)
|
|
36
|
+
webrobots (>= 0.0.9, < 0.2)
|
|
37
|
+
mime-types (3.1)
|
|
38
|
+
mime-types-data (~> 3.2015)
|
|
39
|
+
mime-types-data (3.2016.0521)
|
|
40
|
+
mini_portile2 (2.3.0)
|
|
41
|
+
multipart-post (2.0.0)
|
|
42
|
+
net-http-digest_auth (1.4.1)
|
|
43
|
+
net-http-persistent (3.0.0)
|
|
44
|
+
connection_pool (~> 2.2)
|
|
45
|
+
nokogiri (1.8.4)
|
|
46
|
+
mini_portile2 (~> 2.3.0)
|
|
47
|
+
ntlm-http (0.1.1)
|
|
10
48
|
rake (10.5.0)
|
|
11
49
|
rspec (3.7.0)
|
|
12
50
|
rspec-core (~> 3.7.0)
|
|
@@ -21,6 +59,16 @@ GEM
|
|
|
21
59
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
22
60
|
rspec-support (~> 3.7.0)
|
|
23
61
|
rspec-support (3.7.1)
|
|
62
|
+
rubyzip (1.2.1)
|
|
63
|
+
selenium-webdriver (3.13.1)
|
|
64
|
+
childprocess (~> 0.5)
|
|
65
|
+
rubyzip (~> 1.2)
|
|
66
|
+
tinder_auth_fetcher (0.1.0)
|
|
67
|
+
mechanize (~> 2.0)
|
|
68
|
+
unf (0.1.4)
|
|
69
|
+
unf_ext
|
|
70
|
+
unf_ext (0.0.7.5)
|
|
71
|
+
webrobots (0.1.2)
|
|
24
72
|
|
|
25
73
|
PLATFORMS
|
|
26
74
|
ruby
|
data/README.md
CHANGED
data/Rakefile
CHANGED
data/bin/console
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
|
|
3
|
-
require
|
|
4
|
-
require
|
|
3
|
+
require 'bundler/setup'
|
|
4
|
+
require 'tinby'
|
|
5
5
|
|
|
6
6
|
# You can add fixtures and/or initialization code here to make experimenting
|
|
7
7
|
# with your gem easier. You can also use a different console, if you like.
|
|
@@ -10,5 +10,5 @@ require "tinby"
|
|
|
10
10
|
# require "pry"
|
|
11
11
|
# Pry.start
|
|
12
12
|
|
|
13
|
-
require
|
|
13
|
+
require 'irb'
|
|
14
14
|
IRB.start(__FILE__)
|
data/lib/tinby.rb
CHANGED
data/lib/tinby/client.rb
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
require 'faraday'
|
|
2
|
+
require 'faraday_middleware'
|
|
3
|
+
require 'tinder_auth_fetcher'
|
|
4
|
+
|
|
5
|
+
module Tinby
|
|
6
|
+
class Client
|
|
7
|
+
class Unauthorized < StandardError; end
|
|
8
|
+
TINDER_API_URL = 'https://api.gotinder.com'.freeze
|
|
9
|
+
CONNECTION_USER_AGENT = 'Tinder/7.5.3 (iPhone; iOS 10.3.2; Scale/2.00)'.freeze
|
|
10
|
+
|
|
11
|
+
attr_reader :connection, :email, :password, :facebook
|
|
12
|
+
attr_accessor :logined
|
|
13
|
+
|
|
14
|
+
def initialize(email, password, profile_url)
|
|
15
|
+
@email = email
|
|
16
|
+
@password = password
|
|
17
|
+
@facebook = Tinby::Facebook.new(profile_url)
|
|
18
|
+
@logined = false
|
|
19
|
+
build_tinder_connection
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def profile
|
|
23
|
+
sign_in unless login?
|
|
24
|
+
response = connection.get('profile').body
|
|
25
|
+
raise Unauthorized if response == 'Unauthorized'
|
|
26
|
+
JSON.parse(response, symbolize_names: true)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def recommended_users
|
|
30
|
+
sign_in unless login?
|
|
31
|
+
response = connection.post('user/recs').body
|
|
32
|
+
raise Unauthorized if response == 'Unauthorized'
|
|
33
|
+
results = JSON.parse(response)['results']
|
|
34
|
+
users = results.reject { |r| r['name'] == 'Tinder Team' } if results
|
|
35
|
+
users || []
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def matches
|
|
39
|
+
sign_in unless login?
|
|
40
|
+
response = connection.post('updates', last_activity_date: '').body
|
|
41
|
+
response ? JSON.parse(response) : []
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def like(user_id)
|
|
45
|
+
sign_in unless login?
|
|
46
|
+
connection.get("like/#{user_id}")
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def dislike(user_id)
|
|
50
|
+
sign_in unless login?
|
|
51
|
+
connection.get("pass/#{user_id}")
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def send_message(user_id, message)
|
|
55
|
+
sign_in unless login?
|
|
56
|
+
connection.post("user/matches/#{user_id}", message: message)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
private
|
|
60
|
+
|
|
61
|
+
def sign_in
|
|
62
|
+
connection.token_auth(tinder_authentication_token)
|
|
63
|
+
connection.headers['X-Auth-Token'] = tinder_authentication_token
|
|
64
|
+
logined = true
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def login?
|
|
68
|
+
logined
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def tinder_authentication_token
|
|
72
|
+
@tinder_authentication_token ||= JSON.parse(auth_request)['token']
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def auth_request
|
|
76
|
+
connection.post('/auth', facebook_token: facebook_authentication_token, facebook_id: facebook_user_id).body
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def build_tinder_connection
|
|
80
|
+
@connection = Faraday.new(url: TINDER_API_URL) do |faraday|
|
|
81
|
+
faraday.request :json
|
|
82
|
+
faraday.adapter Faraday.default_adapter
|
|
83
|
+
end
|
|
84
|
+
connection.headers[:user_agent] = CONNECTION_USER_AGENT
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def facebook_authentication_token
|
|
88
|
+
TinderAuthFetcher.fetch_token(email, password)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def facebook_user_id
|
|
92
|
+
facebook.fetch_facebook_id
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require 'selenium-webdriver'
|
|
2
|
+
module Tinby
|
|
3
|
+
class Facebook
|
|
4
|
+
FIND_FACEBOOK_ID_URL = 'https://findmyfbid.com'.freeze
|
|
5
|
+
|
|
6
|
+
attr_reader :driver, :profile_url
|
|
7
|
+
|
|
8
|
+
def initialize(profile_url)
|
|
9
|
+
@profile_url = profile_url
|
|
10
|
+
@driver = initialize_selenium_driver
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def fetch_facebook_id
|
|
14
|
+
open_findfbid
|
|
15
|
+
fill_in_user_profile_url
|
|
16
|
+
submit
|
|
17
|
+
find_facebook_id
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
def initialize_selenium_driver
|
|
23
|
+
options = Selenium::WebDriver::Chrome::Options.new
|
|
24
|
+
options.add_argument('--headless')
|
|
25
|
+
Selenium::WebDriver.for :chrome, options: options
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def open_findfbid
|
|
29
|
+
driver.get(FIND_FACEBOOK_ID_URL)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def fill_in_user_profile_url
|
|
33
|
+
driver.find_element(:name, 'url').send_keys(profile_url)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def submit
|
|
37
|
+
driver.find_element(:class, 'btn').click
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def find_facebook_id
|
|
41
|
+
driver.find_element(:tag_name, 'code').text
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
data/lib/tinby/version.rb
CHANGED
data/tinby.gemspec
CHANGED
|
@@ -1,29 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
lib = File.expand_path("../lib", __FILE__)
|
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
-
require
|
|
3
|
+
require 'tinby/version'
|
|
5
4
|
|
|
6
5
|
Gem::Specification.new do |spec|
|
|
7
|
-
spec.name =
|
|
6
|
+
spec.name = 'tinby'
|
|
8
7
|
spec.version = Tinby::VERSION
|
|
9
|
-
spec.authors = [
|
|
10
|
-
spec.email = [
|
|
8
|
+
spec.authors = ['joe']
|
|
9
|
+
spec.email = ['kinjoyuji@gmail.com']
|
|
11
10
|
|
|
12
|
-
spec.summary =
|
|
13
|
-
spec.description =
|
|
14
|
-
spec.homepage =
|
|
15
|
-
spec.license =
|
|
11
|
+
spec.summary = 'this is tinder api wrapper. we can fetch and post to tinder.'
|
|
12
|
+
spec.description = 'this is tinder api wrapper. we can fetch and post to tinder.'
|
|
13
|
+
spec.homepage = 'https://github.com/Cam1no/tinby.git'
|
|
14
|
+
spec.license = 'MIT'
|
|
16
15
|
|
|
17
16
|
# Specify which files should be added to the gem when it is released.
|
|
18
17
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
|
19
|
-
spec.files = Dir.chdir(File.expand_path(
|
|
18
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
|
20
19
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
21
20
|
end
|
|
22
|
-
spec.bindir =
|
|
21
|
+
spec.bindir = 'exe'
|
|
23
22
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
24
|
-
spec.require_paths = [
|
|
23
|
+
spec.require_paths = ['lib']
|
|
24
|
+
|
|
25
|
+
spec.add_development_dependency 'bundler', '~> 1.16'
|
|
26
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
|
27
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
|
25
28
|
|
|
26
|
-
spec.
|
|
27
|
-
spec.
|
|
28
|
-
spec.
|
|
29
|
+
spec.add_dependency 'faraday', '~> 0'
|
|
30
|
+
spec.add_dependency 'faraday_middleware', '~> 0'
|
|
31
|
+
spec.add_dependency 'json', '~> 2.1'
|
|
32
|
+
spec.add_dependency 'selenium-webdriver', '~> 3.13'
|
|
33
|
+
spec.add_dependency 'tinder_auth_fetcher', '~> 0'
|
|
29
34
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: tinby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- joe
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2018-07-
|
|
11
|
+
date: 2018-07-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -52,6 +52,76 @@ dependencies:
|
|
|
52
52
|
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
54
|
version: '3.0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: faraday
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
type: :runtime
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: faraday_middleware
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - "~>"
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :runtime
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - "~>"
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: json
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - "~>"
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '2.1'
|
|
90
|
+
type: :runtime
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - "~>"
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '2.1'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: selenium-webdriver
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - "~>"
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '3.13'
|
|
104
|
+
type: :runtime
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - "~>"
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '3.13'
|
|
111
|
+
- !ruby/object:Gem::Dependency
|
|
112
|
+
name: tinder_auth_fetcher
|
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
|
114
|
+
requirements:
|
|
115
|
+
- - "~>"
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: '0'
|
|
118
|
+
type: :runtime
|
|
119
|
+
prerelease: false
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - "~>"
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: '0'
|
|
55
125
|
description: this is tinder api wrapper. we can fetch and post to tinder.
|
|
56
126
|
email:
|
|
57
127
|
- kinjoyuji@gmail.com
|
|
@@ -71,6 +141,8 @@ files:
|
|
|
71
141
|
- bin/console
|
|
72
142
|
- bin/setup
|
|
73
143
|
- lib/tinby.rb
|
|
144
|
+
- lib/tinby/client.rb
|
|
145
|
+
- lib/tinby/facebook.rb
|
|
74
146
|
- lib/tinby/version.rb
|
|
75
147
|
- tinby.gemspec
|
|
76
148
|
homepage: https://github.com/Cam1no/tinby.git
|