dropbox-sdk 1.6.4 → 1.6.5

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.
@@ -9,139 +9,139 @@ APP_SECRET = ''
9
9
  STATE_FILE = 'copy_between_accounts.json'
10
10
 
11
11
  def main()
12
- prog_name = __FILE__
13
- if APP_KEY == '' or APP_SECRET == ''
14
- warn "ERROR: Set your APP_KEY and APP_SECRET at the top of #{prog_name}"
15
- exit
16
- end
17
- args = ARGV
18
- if args.size == 0
19
- warn("Usage:\n")
20
- warn(" #{prog_name} link Link to a user's account. Also displays UID.")
21
- warn(" #{prog_name} list List linked users including UID.")
22
- warn(" #{prog_name} copy '<uid>:<path>' '<uid>:<path>' Copies a file from the first user's path, to the second user's path.")
23
- warn("\n\n <uid> is the account UID shown when linked. <path> is a path to a file on that user's dropbox.")
24
- exit
25
- end
26
-
27
- command = args[0]
28
- if command == 'link'
29
- command_link(args)
30
- elsif command == 'list'
31
- command_list(args)
32
- elsif command == 'copy'
33
- command_copy(args)
34
- else
35
- warn "ERROR: Unknown command: #{command}"
36
- warn "Run with no arguments for help."
37
- exit(1)
38
- end
12
+ prog_name = __FILE__
13
+ if APP_KEY == '' or APP_SECRET == ''
14
+ warn "ERROR: Set your APP_KEY and APP_SECRET at the top of #{prog_name}"
15
+ exit
16
+ end
17
+ args = ARGV
18
+ if args.size == 0
19
+ warn("Usage:\n")
20
+ warn(" #{prog_name} link Link to a user's account. Also displays UID.")
21
+ warn(" #{prog_name} list List linked users including UID.")
22
+ warn(" #{prog_name} copy '<uid>:<path>' '<uid>:<path>' Copies a file from the first user's path, to the second user's path.")
23
+ warn("\n\n <uid> is the account UID shown when linked. <path> is a path to a file on that user's dropbox.")
24
+ exit
25
+ end
26
+
27
+ command = args[0]
28
+ if command == 'link'
29
+ command_link(args)
30
+ elsif command == 'list'
31
+ command_list(args)
32
+ elsif command == 'copy'
33
+ command_copy(args)
34
+ else
35
+ warn "ERROR: Unknown command: #{command}"
36
+ warn "Run with no arguments for help."
37
+ exit(1)
38
+ end
39
39
  end
40
40
 
41
41
  def command_link(args)
42
- if args.size != 1
43
- warn "ERROR: \"link\" doesn't take any arguments"
44
- exit
45
- end
46
-
47
- web_auth = DropboxOAuth2FlowNoRedirect.new(APP_KEY, APP_SECRET)
48
- authorize_url = web_auth.start()
49
- puts "1. Go to: #{authorize_url}"
50
- puts "2. Click \"Allow\" (you might have to log in first)."
51
- puts "3. Copy the authorization code."
52
-
53
- print "Enter the authorization code here: "
54
- STDOUT.flush
55
- auth_code = STDIN.gets.strip
56
-
57
- access_token, user_id = web_auth.finish(auth_code)
58
-
59
- c = DropboxClient.new(access_token)
60
- account_info = c.account_info()
61
- puts "Link successful. #{account_info['display_name']} is uid #{account_info['uid']} "
62
-
63
- state = load_state()
64
- state[account_info['uid']] = {
65
- 'access_token' => access_token,
66
- 'display_name' => account_info['display_name'],
67
- }
68
-
69
- if account_info['team']
70
- state[account_info['uid']]['team_name'] = account_info['team']['name']
71
- end
72
-
73
- save_state(state)
42
+ if args.size != 1
43
+ warn "ERROR: \"link\" doesn't take any arguments"
44
+ exit
45
+ end
46
+
47
+ web_auth = DropboxOAuth2FlowNoRedirect.new(APP_KEY, APP_SECRET)
48
+ authorize_url = web_auth.start()
49
+ puts "1. Go to: #{authorize_url}"
50
+ puts "2. Click \"Allow\" (you might have to log in first)."
51
+ puts "3. Copy the authorization code."
52
+
53
+ print "Enter the authorization code here: "
54
+ STDOUT.flush
55
+ auth_code = STDIN.gets.strip
56
+
57
+ access_token, user_id = web_auth.finish(auth_code)
58
+
59
+ c = DropboxClient.new(access_token)
60
+ account_info = c.account_info()
61
+ puts "Link successful. #{account_info['display_name']} is uid #{account_info['uid']} "
62
+
63
+ state = load_state()
64
+ state[account_info['uid']] = {
65
+ 'access_token' => access_token,
66
+ 'display_name' => account_info['display_name'],
67
+ }
68
+
69
+ if account_info['team']
70
+ state[account_info['uid']]['team_name'] = account_info['team']['name']
71
+ end
72
+
73
+ save_state(state)
74
74
  end
75
75
 
76
76
  def command_list(args)
77
- if args.size != 1
78
- warn "ERROR: \"list\" doesn't take any arguments"
79
- exit
80
- end
81
-
82
- state = load_state()
83
- for e in state.keys()
84
- if state[e]['team_name']
85
- puts "#{state[e]['display_name']} (#{state[e]['team_name']}) is uid #{e}"
86
- else
87
- puts "#{state[e]['display_name']} is uid #{e}"
88
- end
77
+ if args.size != 1
78
+ warn "ERROR: \"list\" doesn't take any arguments"
79
+ exit
80
+ end
81
+
82
+ state = load_state()
83
+ for e in state.keys()
84
+ if state[e]['team_name']
85
+ puts "#{state[e]['display_name']} (#{state[e]['team_name']}) is uid #{e}"
86
+ else
87
+ puts "#{state[e]['display_name']} is uid #{e}"
89
88
  end
89
+ end
90
90
  end
91
91
 
92
92
  def command_copy(args)
93
- if args.size != 3
94
- warn "ERROR: \"copy\" takes exactly two arguments"
95
- exit
96
- end
93
+ if args.size != 3
94
+ warn "ERROR: \"copy\" takes exactly two arguments"
95
+ exit
96
+ end
97
97
 
98
- state = load_state()
98
+ state = load_state()
99
99
 
100
- if state.keys().length < 2
101
- warn "ERROR: You can't use the copy command until at least two users have linked"
102
- exit
103
- end
100
+ if state.keys().length < 2
101
+ warn "ERROR: You can't use the copy command until at least two users have linked"
102
+ exit
103
+ end
104
104
 
105
- from = args[1].gsub(/['"]/,'')
106
- to = args[2].gsub(/['"]/,'')
105
+ from = args[1].gsub(/['"]/,'')
106
+ to = args[2].gsub(/['"]/,'')
107
107
 
108
- if not to.index(':') or not from.index(':')
109
- warn "ERROR: Ill-formated paths. Run #{prog_name} without arugments to see documentation."
110
- exit
111
- end
108
+ if not to.index(':') or not from.index(':')
109
+ warn "ERROR: Ill-formated paths. Run #{prog_name} without arugments to see documentation."
110
+ exit
111
+ end
112
112
 
113
- from_uid, from_path = from.split ":"
114
- to_uid, to_path = to.split ":"
113
+ from_uid, from_path = from.split ":"
114
+ to_uid, to_path = to.split ":"
115
115
 
116
- if not state.has_key?(to_uid) or not state.has_key?(from_uid)
117
- warn "ERROR: Those UIDs have not linked. Run #{prog_name} list to see linked UIDs."
118
- exit
119
- end
116
+ if not state.has_key?(to_uid) or not state.has_key?(from_uid)
117
+ warn "ERROR: Those UIDs have not linked. Run #{prog_name} list to see linked UIDs."
118
+ exit
119
+ end
120
120
 
121
- from_client = DropboxClient.new(state[from_uid]['access_token'])
122
- to_client = DropboxClient.new(state[to_uid]['access_token'])
121
+ from_client = DropboxClient.new(state[from_uid]['access_token'])
122
+ to_client = DropboxClient.new(state[to_uid]['access_token'])
123
123
 
124
- #Create a copy ref under the identity of the from user
125
- copy_ref = from_client.create_copy_ref(from_path)['copy_ref']
124
+ #Create a copy ref under the identity of the from user
125
+ copy_ref = from_client.create_copy_ref(from_path)['copy_ref']
126
126
 
127
- metadata = to_client.add_copy_ref(to_path, copy_ref)
127
+ metadata = to_client.add_copy_ref(to_path, copy_ref)
128
128
 
129
- puts "File successly copied from #{state[from_uid]['display_name']} to #{state[to_uid]['display_name']}!"
130
- puts "The file now exists at #{metadata['path']}"
129
+ puts "File successly copied from #{state[from_uid]['display_name']} to #{state[to_uid]['display_name']}!"
130
+ puts "The file now exists at #{metadata['path']}"
131
131
 
132
132
  end
133
133
 
134
134
  def save_state(state)
135
- File.open(STATE_FILE,"w") do |f|
136
- f.write(JSON.pretty_generate(state))
137
- end
135
+ File.open(STATE_FILE,"w") do |f|
136
+ f.write(JSON.pretty_generate(state))
137
+ end
138
138
  end
139
139
 
140
140
  def load_state()
141
- if not FileTest.exists?(STATE_FILE)
142
- return {}
143
- end
144
- JSON.parse(File.read(STATE_FILE))
141
+ if not FileTest.exists?(STATE_FILE)
142
+ return {}
143
+ end
144
+ JSON.parse(File.read(STATE_FILE))
145
145
  end
146
146
 
147
147
 
@@ -28,86 +28,86 @@ APP_SECRET = ""
28
28
 
29
29
  class DropboxController < ApplicationController
30
30
 
31
- def main
32
- client = get_dropbox_client
33
- unless client
34
- redirect_to(:action => 'auth_start') and return
35
- end
36
-
37
- account_info = client.account_info
38
-
39
- # Show a file upload page
40
- render :inline =>
41
- "#{account_info['email']} <br/><%= form_tag({:action => :upload}, :multipart => true) do %><%= file_field_tag 'file' %><%= submit_tag 'Upload' %><% end %>"
31
+ def main
32
+ client = get_dropbox_client
33
+ unless client
34
+ redirect_to(:action => 'auth_start') and return
42
35
  end
43
36
 
44
- def upload
45
- client = get_dropbox_client
46
- unless client
47
- redirect_to(:action => 'auth_start') and return
48
- end
37
+ account_info = client.account_info
38
+
39
+ # Show a file upload page
40
+ render :inline =>
41
+ "#{account_info['email']} <br/><%= form_tag({:action => :upload}, :multipart => true) do %><%= file_field_tag 'file' %><%= submit_tag 'Upload' %><% end %>"
42
+ end
49
43
 
50
- begin
51
- # Upload the POST'd file to Dropbox, keeping the same name
52
- resp = client.put_file(params[:file].original_filename, params[:file].read)
53
- render :text => "Upload successful. File now at #{resp['path']}"
54
- rescue DropboxAuthError => e
55
- session.delete(:access_token) # An auth error means the access token is probably bad
56
- logger.info "Dropbox auth error: #{e}"
57
- render :text => "Dropbox auth error"
58
- rescue DropboxError => e
59
- logger.info "Dropbox API error: #{e}"
60
- render :text => "Dropbox API error"
61
- end
44
+ def upload
45
+ client = get_dropbox_client
46
+ unless client
47
+ redirect_to(:action => 'auth_start') and return
62
48
  end
63
49
 
64
- def get_dropbox_client
65
- if session[:access_token]
66
- begin
67
- access_token = session[:access_token]
68
- DropboxClient.new(access_token)
69
- rescue
70
- # Maybe something's wrong with the access token?
71
- session.delete(:access_token)
72
- raise
73
- end
74
- end
50
+ begin
51
+ # Upload the POST'd file to Dropbox, keeping the same name
52
+ resp = client.put_file(params[:file].original_filename, params[:file].read)
53
+ render :text => "Upload successful. File now at #{resp['path']}"
54
+ rescue DropboxAuthError => e
55
+ session.delete(:access_token) # An auth error means the access token is probably bad
56
+ logger.info "Dropbox auth error: #{e}"
57
+ render :text => "Dropbox auth error"
58
+ rescue DropboxError => e
59
+ logger.info "Dropbox API error: #{e}"
60
+ render :text => "Dropbox API error"
75
61
  end
62
+ end
76
63
 
77
- def get_web_auth()
78
- redirect_uri = url_for(:action => 'auth_finish')
79
- DropboxOAuth2Flow.new(APP_KEY, APP_SECRET, redirect_uri, session, :dropbox_auth_csrf_token)
64
+ def get_dropbox_client
65
+ if session[:access_token]
66
+ begin
67
+ access_token = session[:access_token]
68
+ DropboxClient.new(access_token)
69
+ rescue
70
+ # Maybe something's wrong with the access token?
71
+ session.delete(:access_token)
72
+ raise
73
+ end
80
74
  end
75
+ end
81
76
 
82
- def auth_start
83
- authorize_url = get_web_auth().start()
77
+ def get_web_auth()
78
+ redirect_uri = url_for(:action => 'auth_finish')
79
+ DropboxOAuth2Flow.new(APP_KEY, APP_SECRET, redirect_uri, session, :dropbox_auth_csrf_token)
80
+ end
84
81
 
85
- # Send the user to the Dropbox website so they can authorize our app. After the user
86
- # authorizes our app, Dropbox will redirect them here with a 'code' parameter.
87
- redirect_to authorize_url
88
- end
82
+ def auth_start
83
+ authorize_url = get_web_auth().start()
84
+
85
+ # Send the user to the Dropbox website so they can authorize our app. After the user
86
+ # authorizes our app, Dropbox will redirect them here with a 'code' parameter.
87
+ redirect_to authorize_url
88
+ end
89
89
 
90
- def auth_finish
91
- begin
92
- access_token, user_id, url_state = get_web_auth.finish(params)
93
- session[:access_token] = access_token
94
- redirect_to :action => 'main'
95
- rescue DropboxOAuth2Flow::BadRequestError => e
96
- render :text => "Error in OAuth 2 flow: Bad request: #{e}"
97
- rescue DropboxOAuth2Flow::BadStateError => e
98
- logger.info("Error in OAuth 2 flow: No CSRF token in session: #{e}")
99
- redirect_to(:action => 'auth_start')
100
- rescue DropboxOAuth2Flow::CsrfError => e
101
- logger.info("Error in OAuth 2 flow: CSRF mismatch: #{e}")
102
- render :text => "CSRF error"
103
- rescue DropboxOAuth2Flow::NotApprovedError => e
104
- render :text => "Not approved? Why not, bro?"
105
- rescue DropboxOAuth2Flow::ProviderError => e
106
- logger.info "Error in OAuth 2 flow: Error redirect from Dropbox: #{e}"
107
- render :text => "Strange error."
108
- rescue DropboxError => e
109
- logger.info "Error getting OAuth 2 access token: #{e}"
110
- render :text => "Error communicating with Dropbox servers."
111
- end
90
+ def auth_finish
91
+ begin
92
+ access_token, user_id, url_state = get_web_auth.finish(params)
93
+ session[:access_token] = access_token
94
+ redirect_to :action => 'main'
95
+ rescue DropboxOAuth2Flow::BadRequestError => e
96
+ render :text => "Error in OAuth 2 flow: Bad request: #{e}"
97
+ rescue DropboxOAuth2Flow::BadStateError => e
98
+ logger.info("Error in OAuth 2 flow: No CSRF token in session: #{e}")
99
+ redirect_to(:action => 'auth_start')
100
+ rescue DropboxOAuth2Flow::CsrfError => e
101
+ logger.info("Error in OAuth 2 flow: CSRF mismatch: #{e}")
102
+ render :text => "CSRF error"
103
+ rescue DropboxOAuth2Flow::NotApprovedError => e
104
+ render :text => "Not approved? Why not, bro?"
105
+ rescue DropboxOAuth2Flow::ProviderError => e
106
+ logger.info "Error in OAuth 2 flow: Error redirect from Dropbox: #{e}"
107
+ render :text => "Strange error."
108
+ rescue DropboxError => e
109
+ logger.info "Error getting OAuth 2 access token: #{e}"
110
+ render :text => "Error communicating with Dropbox servers."
112
111
  end
112
+ end
113
113
  end
@@ -7,34 +7,34 @@ APP_KEY = ''
7
7
  APP_SECRET = ''
8
8
 
9
9
  def main
10
- if APP_KEY == '' or APP_SECRET == ''
11
- warn "ERROR: Set your APP_KEY and APP_SECRET at the top of search_cache.rb"
12
- exit
13
- end
14
-
15
- prog_name = __FILE__
16
- args = ARGV
17
- if args.size != 2
18
- warn "Usage: #{prog_name} <oauth1-access-token-key> <oauth1-access-token-secret>"
19
- exit 1
20
- end
21
-
22
- access_token_key = args[0]
23
- access_token_secret = args[1]
24
-
25
- sess = DropboxSession.new(APP_KEY, APP_SECRET)
26
- sess.set_access_token(access_token_key, access_token_secret)
27
- c = DropboxClient.new(sess)
28
-
29
- print "Creating OAuth 2 access token...\n"
30
- oauth2_access_token = c.create_oauth2_access_token
31
-
32
- print "Using OAuth 2 access token to get account info...\n"
33
- c2 = DropboxClient.new(oauth2_access_token)
34
- pp c2.account_info
35
-
36
- print "Disabling OAuth 1 access token...\n"
37
- c.disable_access_token
10
+ if APP_KEY == '' or APP_SECRET == ''
11
+ warn "ERROR: Set your APP_KEY and APP_SECRET at the top of search_cache.rb"
12
+ exit
13
+ end
14
+
15
+ prog_name = __FILE__
16
+ args = ARGV
17
+ if args.size != 2
18
+ warn "Usage: #{prog_name} <oauth1-access-token-key> <oauth1-access-token-secret>"
19
+ exit 1
20
+ end
21
+
22
+ access_token_key = args[0]
23
+ access_token_secret = args[1]
24
+
25
+ sess = DropboxSession.new(APP_KEY, APP_SECRET)
26
+ sess.set_access_token(access_token_key, access_token_secret)
27
+ c = DropboxClient.new(sess)
28
+
29
+ print "Creating OAuth 2 access token...\n"
30
+ oauth2_access_token = c.create_oauth2_access_token
31
+
32
+ print "Using OAuth 2 access token to get account info...\n"
33
+ c2 = DropboxClient.new(oauth2_access_token)
34
+ pp c2.account_info
35
+
36
+ print "Disabling OAuth 1 access token...\n"
37
+ c.disable_access_token
38
38
  end
39
39
 
40
40
  main()