gdrivestrg 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ module Gdrivestrg
2
+ class Folder < ActiveRecord::Base
3
+ attr_accessible :folder_name, :remote_id, :user_id
4
+
5
+ belongs_to :user, :class_name => Gdrivestrg.user_class
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Gdrivestrg
2
+ class Folder < ActiveRecord::Base
3
+ attr_accessible :folder_name, :remote_id
4
+
5
+ belongs_to :user, :class_name => Gdrivestrg.user_class
6
+ end
7
+ end
@@ -0,0 +1,10 @@
1
+ class CreateGdrivestrgFolders < ActiveRecord::Migration
2
+ def change
3
+ create_table :gdrivestrg_folders do |t|
4
+ t.string :folder_name
5
+ t.string :remote_id
6
+
7
+ t.timestamps
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,5 @@
1
+ class AddUserIdToGdrivestrgFolders < ActiveRecord::Migration
2
+ def change
3
+ add_column :gdrivestrg_folders, :user_id, :integer
4
+ end
5
+ end
@@ -72,7 +72,27 @@ class GdriveStrg < CloudStrg::CloudStorage
72
72
  end
73
73
  else
74
74
  begin
75
- @client.execute!(:api_method => @auth_api.userinfo.get)
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 scenario', 'mimeType' => 'text/json'})
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
- #def create_folder params
100
- #end
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
- r = @client.execute!(:api_method => @auth_api.userinfo.get)
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 scenario', 'mimeType' => 'text/json'})
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
- #def create_folder params
100
- #end
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!(
@@ -1,3 +1,3 @@
1
1
  module Gdrivestrg
2
- VERSION = "0.0.9"
2
+ VERSION = "0.0.10"
3
3
  end
@@ -1,3 +1,3 @@
1
1
  module Gdrivestrg
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.9"
3
3
  end
data/lib/gdrivestrg.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require "gdrivestrg/engine"
2
2
 
3
3
  module Gdrivestrg
4
- mattr_accessor :user_class
4
+ mattr_accessor :user_class, :app_name
5
5
  end
data/lib/gdrivestrg.rb~ CHANGED
@@ -1,4 +1,5 @@
1
1
  require "gdrivestrg/engine"
2
2
 
3
3
  module Gdrivestrg
4
+ mattr_accessor :user_class
4
5
  end
@@ -0,0 +1,9 @@
1
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
2
+
3
+ one:
4
+ folder_name: MyString
5
+ remote_id: MyString
6
+
7
+ two:
8
+ folder_name: MyString
9
+ remote_id: MyString
@@ -0,0 +1,9 @@
1
+ require 'test_helper'
2
+
3
+ module Gdrivestrg
4
+ class FolderTest < ActiveSupport::TestCase
5
+ # test "the truth" do
6
+ # assert true
7
+ # end
8
+ end
9
+ end
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.9
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-11 00:00:00.000000000 Z
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