Class: SocialAuth::TwitterService
- Inherits:
-
Service
show all
- Defined in:
- app/models/social_auth/twitter_service.rb
Constant Summary
Constants inherited
from Service
Service::ACCEPTED_METHODS, Service::REDIS_CACHE
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Service
#access_token, append_to_associated_services, #append_to_friends_list, #authenticated?, #connected?, create_with_request, #disconnect, disconnect_user, #redis_instance, #redis_key, #services
Class Method Details
.connect_with(user, auth_token = {}, method = "Connected") ⇒ Object
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'app/models/social_auth/twitter_service.rb', line 28
def self.connect_with(user, auth_token={}, method="Connected")
request = create_connection(auth_token)
return create_with_request(
request.user.id,
user,
method,
{access_token: request.access_token, access_token_secret: request.access_token_secret}
)
rescue Twitter::Error::Unauthorized => e
raise InvalidToken.new(e.message)
rescue Twitter::Error::TooManyRequests => e
raise RateLimitExceeded.new(e.message)
rescue Twitter::Error => e
raise Error.new(e.message)
end
|
.create_connection(auth_token = {}) ⇒ Object
46
47
48
49
50
51
52
53
54
55
|
# File 'app/models/social_auth/twitter_service.rb', line 46
def self.create_connection(auth_token={})
Twitter::REST::Client.new do |config|
config.consumer_key = SocialAuth.
config.consumer_secret = SocialAuth.
config.access_token = auth_token[:access_token]
config.access_token_secret = auth_token[:access_token_secret]
end
end
|
.init_with(auth_token = {}) ⇒ Object
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# File 'app/models/social_auth/twitter_service.rb', line 10
def self.init_with(auth_token={})
request = create_connection(auth_token)
return create_with_request(
request.user.id,
User.(request.user),
"Authenticated",
{access_token: request.access_token, access_token_secret: request.access_token_secret}
)
rescue Twitter::Error::Unauthorized => e
raise InvalidToken.new(e.message)
rescue Twitter::Error::TooManyRequests => e
raise RateLimitExceeded.new(e.message)
rescue Twitter::Error => e
raise Error.new(e.message)
end
|
Instance Method Details
#friend_ids ⇒ Object
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
# File 'app/models/social_auth/twitter_service.rb', line 57
def friend_ids
if redis_instance.exists(redis_key(:friends))
friend_ids = redis_instance.smembers(redis_key(:friends))
else
friend_ids = self.class.create_connection(access_token).friend_ids.to_hash[:ids].map(&:to_s)
unless friend_ids.empty?
redis_instance.del(redis_key(:friends))
redis_instance.sadd(redis_key(:friends), friend_ids.to_s)
redis_instance.expire(redis_key(:friends), REDIS_CACHE)
end
end
friend_ids
rescue Twitter::Error::Unauthorized => e
disconnect
return []
end
|
#name ⇒ Object
6
7
8
|
# File 'app/models/social_auth/twitter_service.rb', line 6
def name
"Twitter"
end
|