gdrivestrg 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- data/app/models/gdrivestrg/folder.rb +7 -0
- data/app/models/gdrivestrg/folder.rb~ +7 -0
- data/db/migrate/20130313115251_create_gdrivestrg_folders.rb +10 -0
- data/db/migrate/20130313124441_add_user_id_to_gdrivestrg_folders.rb +5 -0
- data/lib/gdrivestrg/gdrivestrg.rb +61 -5
- data/lib/gdrivestrg/gdrivestrg.rb~ +64 -5
- data/lib/gdrivestrg/version.rb +1 -1
- data/lib/gdrivestrg/version.rb~ +1 -1
- data/lib/gdrivestrg.rb +1 -1
- data/lib/gdrivestrg.rb~ +1 -0
- data/test/fixtures/gdrivestrg/folders.yml +9 -0
- data/test/unit/gdrivestrg/folder_test.rb +9 -0
- metadata +10 -2
@@ -72,7 +72,27 @@ class GdriveStrg < CloudStrg::CloudStorage
|
|
72
72
|
end
|
73
73
|
else
|
74
74
|
begin
|
75
|
-
|
75
|
+
if @user.gdrivestrgfolder
|
76
|
+
@client.execute!(:api_method => @auth_api.userinfo.get)
|
77
|
+
else
|
78
|
+
#Search for folder and if it's not present create it and insert existing files on it.
|
79
|
+
l = search_files_by_title Gdrivestrg.app_name
|
80
|
+
if l.length > 0
|
81
|
+
folder = @user.build_gdrivestrgfolder(:folder_name => l[0][0], :remote_id => l[0][1])
|
82
|
+
folder.save
|
83
|
+
else
|
84
|
+
f_id = create_folder({:foldername => Gdrivestrg.app_name})
|
85
|
+
folder = @user.build_gdrivestrgfolder(:folder_name => Gdrivestrg.app_name, :remote_id => f_id)
|
86
|
+
folder.save
|
87
|
+
files = Cloudstrg::Remoteobject.where(:user_id => @user.id, :cloudstrgplugin_id => Cloudstrg::Cloudstrgplugin.find_by_plugin_name('gdrive').id)
|
88
|
+
_params = {}
|
89
|
+
files.each do |file|
|
90
|
+
_params[:folder_id] = f_id
|
91
|
+
_params[:file_id] = file.file_remote_id
|
92
|
+
insert_parent _params
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
76
96
|
rescue Exception => e
|
77
97
|
session.delete(:gdrive_access_token)
|
78
98
|
session = requestAccessToken(session, user_params)
|
@@ -84,9 +104,10 @@ class GdriveStrg < CloudStrg::CloudStorage
|
|
84
104
|
end
|
85
105
|
|
86
106
|
def create_file params
|
107
|
+
# TODO check folder
|
87
108
|
filename = params[:filename]
|
88
|
-
|
89
|
-
file = @drive_api.files.insert.request_schema.new({'title' => filename, 'description' => 'Netlab
|
109
|
+
parentID = @user.gdrivestrgfolder.remote_id
|
110
|
+
file = @drive_api.files.insert.request_schema.new({'title' => filename, 'parents' => [{'id' => parentID}], 'description' => 'Netlab file', 'mimeType' => 'text/json'})
|
90
111
|
media=Google::APIClient::UploadIO.new(StringIO.new(params[:file_content]), 'text/json')
|
91
112
|
r = @client.execute(:api_method => @drive_api.files.insert, :body_object => file, :media => media, :parameters => {'uploadType' => 'multipart', 'alt' => 'json'})
|
92
113
|
if r.status != 200
|
@@ -96,8 +117,16 @@ class GdriveStrg < CloudStrg::CloudStorage
|
|
96
117
|
|
97
118
|
end
|
98
119
|
|
99
|
-
|
100
|
-
|
120
|
+
def create_folder params
|
121
|
+
foldername = params[:foldername]
|
122
|
+
|
123
|
+
file = @drive_api.files.insert.request_schema.new({'title' => foldername, 'mimeType' => 'application/vnd.google-apps.folder'})
|
124
|
+
r = @client.execute(:api_method => @drive_api.files.insert, :body_object => file)
|
125
|
+
if r.status != 200
|
126
|
+
return false
|
127
|
+
end
|
128
|
+
return r.data.id
|
129
|
+
end
|
101
130
|
|
102
131
|
def get_file params
|
103
132
|
r = @client.execute!(:api_method => @drive_api.files.get, :parameters => {'fileId' => params[:fileid]})
|
@@ -143,6 +172,33 @@ class GdriveStrg < CloudStrg::CloudStorage
|
|
143
172
|
return lines
|
144
173
|
end
|
145
174
|
|
175
|
+
def search_files_by_title file_title
|
176
|
+
parameters = {'q' => "title = '#{file_title}'"}
|
177
|
+
r=@client.execute!(:api_method => @drive_api.files.list, :parameters => parameters)
|
178
|
+
if r.status != 200
|
179
|
+
return []
|
180
|
+
end
|
181
|
+
|
182
|
+
lines = []
|
183
|
+
if r.data.items
|
184
|
+
r.data.items.each do |line|
|
185
|
+
lines.append([line.title, line.id])
|
186
|
+
end
|
187
|
+
end
|
188
|
+
return lines
|
189
|
+
end
|
190
|
+
|
191
|
+
def insert_parent params
|
192
|
+
new_parent = @drive_api.parents.insert.request_schema.new({'id' => params[:folder_id]})
|
193
|
+
result = @client.execute!( :api_method => @drive_api.parents.insert, :body_object => new_parent, :parameters => { 'fileId' => params[:file_id] })
|
194
|
+
if result.status == 200
|
195
|
+
return result.data
|
196
|
+
else
|
197
|
+
puts "An error occurred: #{result.data['error']['message']}"
|
198
|
+
return nil
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
146
202
|
def share_file params
|
147
203
|
new_permission = @drive_api.permissions.insert.request_schema.new({'value' => params[:share_email], 'type' => 'user', 'role' => 'writer'})
|
148
204
|
result = @client.execute!(
|
@@ -61,9 +61,12 @@ class GdriveStrg < CloudStrg::CloudStorage
|
|
61
61
|
:expires_in => user_params.expires_in,
|
62
62
|
:issued_at => user_params.issued_at)
|
63
63
|
if @client.authorization.refresh_token && @client.authorization.expired?
|
64
|
+
p "aqui1"
|
64
65
|
session = requestAccessToken(session, user_params)
|
65
66
|
else
|
67
|
+
p "aqui2"
|
66
68
|
if not authorized?
|
69
|
+
p "aqui3"
|
67
70
|
if @client.authorization.refresh_token
|
68
71
|
session = requestAccessToken(session, user_params)
|
69
72
|
else
|
@@ -72,7 +75,27 @@ class GdriveStrg < CloudStrg::CloudStorage
|
|
72
75
|
end
|
73
76
|
else
|
74
77
|
begin
|
75
|
-
|
78
|
+
if @user.gdrivestrgfolder
|
79
|
+
@client.execute!(:api_method => @auth_api.userinfo.get)
|
80
|
+
else
|
81
|
+
#Search for folder and if it's not present create it and insert existing files on it.
|
82
|
+
l = search_files_by_title Gdrivestrg.app_name
|
83
|
+
if l.length > 0
|
84
|
+
folder = @user.build_gdrivestrgfolder(:folder_name => l[0][0], :remote_id => l[0][1])
|
85
|
+
folder.save
|
86
|
+
else
|
87
|
+
f_id = create_folder({:foldername => Gdrivestrg.app_name})
|
88
|
+
folder = @user.build_gdrivestrgfolder(:folder_name => Gdrivestrg.app_name, :remote_id => f_id)
|
89
|
+
folder.save
|
90
|
+
files = Cloudstrg::Remoteobject.where(:user_id => @user.id, :cloudstrgplugin_id => Cloudstrg::Cloudstrgplugin.find_by_plugin_name('gdrive').id)
|
91
|
+
_params = {}
|
92
|
+
files.each do |file|
|
93
|
+
_params[:folder_id] = f_id
|
94
|
+
_params[:file_id] = file.file_remote_id
|
95
|
+
insert_parent _params
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
76
99
|
rescue Exception => e
|
77
100
|
session.delete(:gdrive_access_token)
|
78
101
|
session = requestAccessToken(session, user_params)
|
@@ -84,9 +107,10 @@ class GdriveStrg < CloudStrg::CloudStorage
|
|
84
107
|
end
|
85
108
|
|
86
109
|
def create_file params
|
110
|
+
# TODO check folder
|
87
111
|
filename = params[:filename]
|
88
|
-
|
89
|
-
file = @drive_api.files.insert.request_schema.new({'title' => filename, 'description' => 'Netlab
|
112
|
+
parentID = @user.gdrivestrgfolder.remote_id
|
113
|
+
file = @drive_api.files.insert.request_schema.new({'title' => filename, 'parents' => [{'id' => parentID}], 'description' => 'Netlab file', 'mimeType' => 'text/json'})
|
90
114
|
media=Google::APIClient::UploadIO.new(StringIO.new(params[:file_content]), 'text/json')
|
91
115
|
r = @client.execute(:api_method => @drive_api.files.insert, :body_object => file, :media => media, :parameters => {'uploadType' => 'multipart', 'alt' => 'json'})
|
92
116
|
if r.status != 200
|
@@ -96,8 +120,16 @@ class GdriveStrg < CloudStrg::CloudStorage
|
|
96
120
|
|
97
121
|
end
|
98
122
|
|
99
|
-
|
100
|
-
|
123
|
+
def create_folder params
|
124
|
+
foldername = params[:foldername]
|
125
|
+
|
126
|
+
file = @drive_api.files.insert.request_schema.new({'title' => foldername, 'mimeType' => 'application/vnd.google-apps.folder'})
|
127
|
+
r = @client.execute(:api_method => @drive_api.files.insert, :body_object => file)
|
128
|
+
if r.status != 200
|
129
|
+
return false
|
130
|
+
end
|
131
|
+
return r.data.id
|
132
|
+
end
|
101
133
|
|
102
134
|
def get_file params
|
103
135
|
r = @client.execute!(:api_method => @drive_api.files.get, :parameters => {'fileId' => params[:fileid]})
|
@@ -143,6 +175,33 @@ class GdriveStrg < CloudStrg::CloudStorage
|
|
143
175
|
return lines
|
144
176
|
end
|
145
177
|
|
178
|
+
def search_files_by_title file_title
|
179
|
+
parameters = {'q' => "title = '#{file_title}'"}
|
180
|
+
r=@client.execute!(:api_method => @drive_api.files.list, :parameters => parameters)
|
181
|
+
if r.status != 200
|
182
|
+
return []
|
183
|
+
end
|
184
|
+
|
185
|
+
lines = []
|
186
|
+
if r.data.items
|
187
|
+
r.data.items.each do |line|
|
188
|
+
lines.append([line.title, line.id])
|
189
|
+
end
|
190
|
+
end
|
191
|
+
return lines
|
192
|
+
end
|
193
|
+
|
194
|
+
def insert_parent params
|
195
|
+
new_parent = @drive_api.parents.insert.request_schema.new({'id' => params[:folder_id]})
|
196
|
+
result = @client.execute!( :api_method => @drive_api.parents.insert, :body_object => new_parent, :parameters => { 'fileId' => params[:file_id] })
|
197
|
+
if result.status == 200
|
198
|
+
return result.data
|
199
|
+
else
|
200
|
+
puts "An error occurred: #{result.data['error']['message']}"
|
201
|
+
return nil
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
146
205
|
def share_file params
|
147
206
|
new_permission = @drive_api.permissions.insert.request_schema.new({'value' => params[:share_email], 'type' => 'user', 'role' => 'writer'})
|
148
207
|
result = @client.execute!(
|
data/lib/gdrivestrg/version.rb
CHANGED
data/lib/gdrivestrg/version.rb~
CHANGED
data/lib/gdrivestrg.rb
CHANGED
data/lib/gdrivestrg.rb~
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gdrivestrg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-03-
|
12
|
+
date: 2013-03-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -84,8 +84,10 @@ extra_rdoc_files: []
|
|
84
84
|
files:
|
85
85
|
- app/helpers/gdrivestrg/params_helper.rb
|
86
86
|
- app/helpers/gdrivestrg/application_helper.rb
|
87
|
+
- app/models/gdrivestrg/folder.rb
|
87
88
|
- app/models/gdrivestrg/param.rb~
|
88
89
|
- app/models/gdrivestrg/param.rb
|
90
|
+
- app/models/gdrivestrg/folder.rb~
|
89
91
|
- app/assets/stylesheets/scaffold.css
|
90
92
|
- app/assets/stylesheets/gdrivestrg/params.css
|
91
93
|
- app/assets/stylesheets/gdrivestrg/application.css
|
@@ -101,6 +103,8 @@ files:
|
|
101
103
|
- app/controllers/gdrivestrg/params_controller.rb
|
102
104
|
- config/routes.rb
|
103
105
|
- db/migrate/20121107140721_create_gdrivestrg_params.rb~
|
106
|
+
- db/migrate/20130313124441_add_user_id_to_gdrivestrg_folders.rb
|
107
|
+
- db/migrate/20130313115251_create_gdrivestrg_folders.rb
|
104
108
|
- db/migrate/20121107140721_create_gdrivestrg_params.rb
|
105
109
|
- db/migrate/20121108121038_add_user_id_to_gdrivestrg_params.rb
|
106
110
|
- db/migrate/20121108121038_add_user_id_to_gdrivestrg_params.rb~
|
@@ -120,9 +124,11 @@ files:
|
|
120
124
|
- test/gdrivestrg_test.rb
|
121
125
|
- test/unit/helpers/gdrivestrg/params_helper_test.rb
|
122
126
|
- test/unit/gdrivestrg/param_test.rb
|
127
|
+
- test/unit/gdrivestrg/folder_test.rb
|
123
128
|
- test/test_helper.rb
|
124
129
|
- test/integration/navigation_test.rb
|
125
130
|
- test/fixtures/gdrivestrg/params.yml
|
131
|
+
- test/fixtures/gdrivestrg/folders.yml
|
126
132
|
- test/dummy/script/rails
|
127
133
|
- test/dummy/config.ru
|
128
134
|
- test/dummy/app/helpers/application_helper.rb
|
@@ -180,9 +186,11 @@ test_files:
|
|
180
186
|
- test/gdrivestrg_test.rb
|
181
187
|
- test/unit/helpers/gdrivestrg/params_helper_test.rb
|
182
188
|
- test/unit/gdrivestrg/param_test.rb
|
189
|
+
- test/unit/gdrivestrg/folder_test.rb
|
183
190
|
- test/test_helper.rb
|
184
191
|
- test/integration/navigation_test.rb
|
185
192
|
- test/fixtures/gdrivestrg/params.yml
|
193
|
+
- test/fixtures/gdrivestrg/folders.yml
|
186
194
|
- test/dummy/script/rails
|
187
195
|
- test/dummy/config.ru
|
188
196
|
- test/dummy/app/helpers/application_helper.rb
|