sf-gdrive 0.1.13 → 0.1.14
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.
- checksums.yaml +4 -4
- data/app/controllers/gdrive/drive_controller.rb +0 -114
- data/config/routes.rb +0 -3
- data/lib/gdrive/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64f830ceae7243bc8720ec6c7d6236db894a35e67ecbaedd58abfd64e750019b
|
4
|
+
data.tar.gz: e84d4f7fe9cc14a98cf859e90e51087d7d172356befc927ae97f47efcc9b8927
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46d4a6fc924f75cfc8c6606f5f58f49d18feb83f8d67215dcffe924a12b0c661f6d1e2102be6e122d06d1e28adebfcdaa27f44d70b91515e2de504c5a9c1e2d6
|
7
|
+
data.tar.gz: b04470583560f4ab76d3af1ad43be99c2aa6d0bb1474556298094c15e224f1d4f619ccc70595e9b825c0a01ff05c564f5e107a487bd257bf9b78865bc2bc9d28
|
@@ -36,119 +36,5 @@ module Gdrive
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
39
|
-
|
40
|
-
def decrypt_temp_file
|
41
|
-
require 'open-uri'
|
42
|
-
content = open('https://raw.githubusercontent.com/standardfile/decrypt-html-page/master/decrypt.html').read
|
43
|
-
tmp = Tempfile.new("decrypt")
|
44
|
-
tmp.write(content)
|
45
|
-
tmp.rewind
|
46
|
-
return tmp
|
47
|
-
end
|
48
|
-
|
49
|
-
def sync_decrypt_file(drive, folder)
|
50
|
-
file_name = "decrypt.html"
|
51
|
-
existing = drive.list_files(q: "name = '#{file_name}'", fields: "files(id, name, created_time)")
|
52
|
-
if existing.files.length > 0
|
53
|
-
file = existing.files[0]
|
54
|
-
days_old = DateTime.now - file.created_time
|
55
|
-
if days_old < 14
|
56
|
-
return
|
57
|
-
end
|
58
|
-
drive.update_file(file.id, upload_source: decrypt_temp_file().path)
|
59
|
-
else
|
60
|
-
drive.create_file({:name => file_name, :parents => [folder.id]}, upload_source: decrypt_temp_file().path, content_type: "text/html")
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
def find_or_create_folder(drive, folder_name, parent_folder)
|
65
|
-
folder_mime = "application/vnd.google-apps.folder"
|
66
|
-
folder_search = nil
|
67
|
-
begin
|
68
|
-
if parent_folder
|
69
|
-
folder_search = drive.list_files(q: "mimeType='#{folder_mime}' and name='#{folder_name}' and parents in '#{parent_folder.id}'")
|
70
|
-
else
|
71
|
-
folder_search = drive.list_files(q: "mimeType='#{folder_mime}' and name='#{folder_name}'")
|
72
|
-
end
|
73
|
-
rescue Exception => e
|
74
|
-
puts "\n\n find_or_create_folder exception: #{e}\n\n"
|
75
|
-
return
|
76
|
-
end
|
77
|
-
|
78
|
-
if folder_search.files.length > 0
|
79
|
-
folder = folder_search.files[0]
|
80
|
-
else
|
81
|
-
folder_data = {
|
82
|
-
name: folder_name,
|
83
|
-
mime_type: folder_mime
|
84
|
-
}
|
85
|
-
if parent_folder
|
86
|
-
folder_data[:parents] = [parent_folder.id]
|
87
|
-
end
|
88
|
-
folder = drive.create_file(folder_data, fields: 'id')
|
89
|
-
end
|
90
|
-
|
91
|
-
return folder
|
92
|
-
end
|
93
|
-
|
94
|
-
def sync
|
95
|
-
client_secrets = Google::APIClient::ClientSecrets.load
|
96
|
-
client_params = client_secrets.to_authorization.as_json
|
97
|
-
secret_hash = JSON.parse(Base64.decode64(params[:key]))
|
98
|
-
client_params.merge!(secret_hash)
|
99
|
-
auth_client = Signet::OAuth2::Client.new(client_params)
|
100
|
-
drive = Google::Apis::DriveV3::DriveService.new
|
101
|
-
drive.authorization = auth_client
|
102
|
-
|
103
|
-
parent = nil
|
104
|
-
folders = ["Standard Notes", "#{Time.current.year}", "#{DateTime.now.strftime("%B")}"]
|
105
|
-
resolved_folders = []
|
106
|
-
folders.each do |current_folder_name|
|
107
|
-
result = find_or_create_folder(drive, current_folder_name, parent)
|
108
|
-
resolved_folders.push(result)
|
109
|
-
parent = result
|
110
|
-
end
|
111
|
-
|
112
|
-
folder = resolved_folders.last
|
113
|
-
|
114
|
-
self.sync_decrypt_file(drive, resolved_folders.first)
|
115
|
-
|
116
|
-
auth_params = params[:auth_params]
|
117
|
-
items = params[:items]
|
118
|
-
if items && items.length > 0
|
119
|
-
tmp = Tempfile.new(SecureRandom.hex)
|
120
|
-
payload = { "items" => items}
|
121
|
-
payload["auth_params"] = auth_params if auth_params != nil
|
122
|
-
tmp.write("#{JSON.pretty_generate(payload.as_json)}")
|
123
|
-
tmp.rewind
|
124
|
-
|
125
|
-
file_name = "#{DateTime.now.strftime("%B %-d, %Y").sub(',', '')}.txt"
|
126
|
-
existing = drive.list_files(q: "name = '#{file_name}'")
|
127
|
-
if existing.files.length > 0
|
128
|
-
file = existing.files[0]
|
129
|
-
drive.update_file(file.id, upload_source: tmp.path)
|
130
|
-
else
|
131
|
-
file = drive.create_file({:name => file_name, :parents => [folder.id]}, upload_source: tmp.path, content_type: "text/plain")
|
132
|
-
end
|
133
|
-
end
|
134
|
-
rescue Signet::AuthorizationError => _e
|
135
|
-
render(
|
136
|
-
json: {
|
137
|
-
error: {
|
138
|
-
message: 'Could not authorize with Google Drive. Please verify your integration.'
|
139
|
-
}
|
140
|
-
},
|
141
|
-
status: :bad_request
|
142
|
-
)
|
143
|
-
rescue Google::Apis::Error => _e
|
144
|
-
render(
|
145
|
-
json: {
|
146
|
-
error: {
|
147
|
-
message: 'Could not sync with Google Drive. Please verify your integration.'
|
148
|
-
}
|
149
|
-
},
|
150
|
-
status: :bad_request
|
151
|
-
)
|
152
|
-
end
|
153
39
|
end
|
154
40
|
end
|
data/config/routes.rb
CHANGED
data/lib/gdrive/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sf-gdrive
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- "@StandardNotes"
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-09-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|