· 7 years ago · Jun 10, 2018, 05:22 AM
1module API
2 def self.has_access?(token)
3 network = const_get token.for
4 network.has_access? token.key, token.secret
5 end
6
7 def display_files(files, token)
8 network = const_get token.for
9 network.display_files files, token.key, token.secret
10 end
11
12 module Dropbox
13 def self.key
14 'asdasd'
15 end
16
17 def self.secret
18 'asdasd'
19 end
20
21 def self.version
22 0
23 end
24
25 def self.oauth=(val)
26 @oauth = val
27 end
28
29 def self.oauth
30 return @oauth if @oauth
31 @oauth = OauthUtil.new
32 @oauth.consumer_key = key
33 @oauth.consumer_secret = secret
34 @oauth
35 end
36
37 def self.account_info(token, secret)
38 url = request_url(:path => '/account/info',
39 :token => token,
40 :secret => secret)
41 get(url)
42 end
43
44 def self.ls(path, token, secret)
45 url = request_url(:path => "/metadata/dropbox#{path}",
46 :token => token,
47 :secret => secret)
48 get(url)
49 end
50
51 def self.thumbnail(path, token, secret)
52 url = request_url(:path => "/thumbnails/dropbox#{path}",
53 :token => token,
54 :secret => secret,
55 :host => 'api-content.dropbox.com',
56 :query => {'size' => 'large'})
57 end
58
59 def self.request_url(opts)
60 options = {
61 :path => '/',
62 :version => 0,
63 :host => 'api.dropbox.com',
64 :method => :get,
65 :token => '',
66 :secret => '',
67 :query => {} }
68
69 options.merge!(opts)
70
71 oauth.token = options[:token]
72 oauth.token_secret = options[:secret]
73
74 query = options[:query].collect{|k,v| "#{k}=#{v}" }.join('&')
75
76 uri = URI::HTTP.build(:scheme => 'http',
77 :host => options[:host],
78 :path => "/#{options[:version]}#{options[:path]}",
79 :query => query)
80
81 oauth_uri = oauth.sign(uri)
82
83 p "#{uri.scheme}://#{uri.host}#{uri.path}?#{oauth.sign(uri).query_string}"
84 "#{uri.scheme}://#{uri.host}#{uri.path}?#{oauth.sign(uri).query_string}"
85 end
86
87 def self.get(url)
88 response = Typhoeus::Request.get(url)
89 Yajl::Parser.parse(response.body)
90 end
91
92
93 def self.post(url)
94
95 end
96 end
97end