· 7 years ago · Mar 21, 2018, 01:12 AM
1class Grabbers::Base
2
3 def self.grabber_for(service_name)
4 "Grabbers::#{service_name.camelize}".constantize
5 end
6
7 def initialize(access_token, secret_key=nil)
8 @access_token, @secret_key = access_token, secret_key
9 @app_token, @app_key = OmniauthData[service]['token'], OmniauthData[service]['key']
10 build_client(access_token, secret_key)
11 end
12
13 def process_endpoint(social_profile, endpoint, options={})
14 grab_endpoint(endpoint, options)
15 end
16
17 def invalid_tokens!
18 profile = SocialProfile.find_by_access_token(@access_token)
19 profile.update_attribute(:invalid_tokens, true) if profile.present?
20
21 profile
22 end
23
24 def tokens_error(method, error, raise_error=true)
25 invalid_tokens!
26 register_error(method, error)
27
28 raise ApiExceptions::TokensError
29 end
30
31 def common_error(method, error, options={})
32 register_error(method, error)
33
34 raise ApiExceptions::CommonError
35 end
36
37 def rate_limit_error(method, error, retry_at=nil)
38 register_error(method, error)
39
40 raise ApiExceptions::RateLimitError.new((retry_at || error.rate_limit.reset_in), error.to_s)
41 end
42
43 def server_error(method, error, retry_at=nil)
44 register_error(method, error)
45
46 raise ApiExceptions::ServerError.new((retry_at || error.rate_limit.reset_in), error.to_s)
47 end
48
49 def service
50 raise 'Not implemented'
51 end
52
53 def build_client(access_token, secret_key)
54 raise 'Not implemented'
55 end
56end