gdrivestrg 0.0.9 → 0.0.10
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.
- 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
|