onlyoffice_s3_wrapper 0.1.0 → 0.1.1
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 +5 -5
- data/lib/onlyoffice_s3_wrapper/version.rb +1 -1
- data/lib/onlyoffice_s3_wrapper.rb +34 -18
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 48ef6d43732a45068d62ff4656240ff3176bd7b2e230408a740cf5b02a8d1880
|
4
|
+
data.tar.gz: cdf87b651e2de49a66a370b39aff82fe3713c6dd8dc07a5acb715d622cfea21e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 16d104821d05e85e26ed46d41af37140088c7ef6bcd165b13bef2ee409a102b9295398ddcda23154d35b617439312a2cc129018eae3993185f35d889a3de1a04
|
7
|
+
data.tar.gz: d2d1131bd96f3de426f9dd86c613c3282aae3cf3969e40339db5a13e5bf81c1946b82bc8e5ba6bd12b9f26914d4c386c598023b25dd045b9c03dc051e453f766
|
@@ -10,16 +10,7 @@ module OnlyofficeS3Wrapper
|
|
10
10
|
attr_accessor :s3, :bucket, :download_folder, :access_key_id, :secret_access_key
|
11
11
|
|
12
12
|
def initialize(bucket_name: 'nct-data-share', region: 'us-west-2')
|
13
|
-
|
14
|
-
@secret_access_key = ENV['S3_PRIVATE_KEY']
|
15
|
-
if @access_key_id.nil? || @secret_access_key.nil?
|
16
|
-
begin
|
17
|
-
@access_key_id = File.read(Dir.home + '/.s3/key').delete("\n")
|
18
|
-
@secret_access_key = File.read(Dir.home + '/.s3/private_key').delete("\n")
|
19
|
-
rescue Errno::ENOENT
|
20
|
-
raise Errno::ENOENT, "No key or private key found in #{Dir.home}/.s3/ directory. Please create files #{Dir.home}/.s3/key and #{Dir.home}/.s3/private_key"
|
21
|
-
end
|
22
|
-
end
|
13
|
+
read_keys
|
23
14
|
Aws.config = { access_key_id: @access_key_id,
|
24
15
|
secret_access_key: @secret_access_key,
|
25
16
|
region: region }
|
@@ -28,17 +19,18 @@ module OnlyofficeS3Wrapper
|
|
28
19
|
@download_folder = Dir.mktmpdir('amazon-s3-downloads')
|
29
20
|
end
|
30
21
|
|
31
|
-
def get_files_by_prefix(prefix = nil)
|
32
|
-
@bucket.objects(prefix: prefix).collect(
|
22
|
+
def get_files_by_prefix(prefix = nil, field: :key)
|
23
|
+
@bucket.objects(prefix: prefix).collect(&field).reject { |file| folder?(file) }
|
33
24
|
end
|
34
25
|
|
35
26
|
# param [String] prefix
|
36
|
-
# return [Array] of folder names with '/'
|
27
|
+
# return [Array] of folder names with '/'
|
28
|
+
# in end and filenames with fullpath (started ad prefix)
|
37
29
|
def get_elements_by_prefix(prefix = nil)
|
38
30
|
@bucket.objects(prefix: prefix).collect(&:key)
|
39
31
|
end
|
40
32
|
|
41
|
-
def
|
33
|
+
def folder?(str)
|
42
34
|
str.end_with? '/'
|
43
35
|
end
|
44
36
|
|
@@ -47,7 +39,8 @@ module OnlyofficeS3Wrapper
|
|
47
39
|
end
|
48
40
|
|
49
41
|
def download_file_by_name(file_name, download_folder = @download_folder)
|
50
|
-
OnlyofficeLoggerHelper.log("Download file with name #{file_name} to
|
42
|
+
OnlyofficeLoggerHelper.log("Download file with name #{file_name} to "\
|
43
|
+
"folder #{download_folder}")
|
51
44
|
OnlyofficeLoggerHelper.log('Try to find file:')
|
52
45
|
object = get_object(file_name)
|
53
46
|
download_object(object, download_folder)
|
@@ -55,18 +48,20 @@ module OnlyofficeS3Wrapper
|
|
55
48
|
|
56
49
|
def download_object(object, download_folder = @download_folder)
|
57
50
|
link = object.presigned_url(:get, expires_in: 3600)
|
58
|
-
OnlyofficeLoggerHelper.log("Try to download object with name #{object.key}
|
51
|
+
OnlyofficeLoggerHelper.log("Try to download object with name #{object.key} "\
|
52
|
+
"to folder #{download_folder}")
|
59
53
|
File.open("#{download_folder}/#{File.basename(object.key)}", 'w') do |f|
|
60
54
|
IO.copy_stream(open(link), f)
|
61
55
|
end
|
62
|
-
OnlyofficeLoggerHelper.log("File with name #{object.key} successfully
|
56
|
+
OnlyofficeLoggerHelper.log("File with name #{object.key} successfully "\
|
57
|
+
"downloaded to folder #{download_folder}")
|
63
58
|
rescue StandardError
|
64
59
|
raise("File with name #{object.key} is not found un bucket #{@bucket.name}")
|
65
60
|
end
|
66
61
|
|
67
62
|
def upload_file(file_path, upload_folder)
|
68
63
|
upload_folder.sub!('/', '') if upload_folder[0] == '/'
|
69
|
-
upload_folder.chop! if
|
64
|
+
upload_folder.chop! if folder?(upload_folder)
|
70
65
|
@bucket.object("#{upload_folder}/#{File.basename(file_path)}").upload_file(file_path)
|
71
66
|
end
|
72
67
|
|
@@ -90,5 +85,26 @@ module OnlyofficeS3Wrapper
|
|
90
85
|
file_path.sub!('/', '') if file_path[0] == '/'
|
91
86
|
get_object(file_path).delete
|
92
87
|
end
|
88
|
+
|
89
|
+
private
|
90
|
+
|
91
|
+
# Get S3 key and S3 private key
|
92
|
+
# @return [Array <String>] list of keys
|
93
|
+
def read_keys
|
94
|
+
return if read_env_keys
|
95
|
+
@access_key_id = File.read(Dir.home + '/.s3/key').strip
|
96
|
+
@secret_access_key = File.read(Dir.home + '/.s3/private_key').strip
|
97
|
+
rescue Errno::ENOENT
|
98
|
+
raise Errno::ENOENT, "No key or private key found in #{Dir.home}/.s3/ directory."\
|
99
|
+
"Please create files #{Dir.home}/.s3/key "\
|
100
|
+
"and #{Dir.home}/.s3/private_key"
|
101
|
+
end
|
102
|
+
|
103
|
+
# Read keys from env variables
|
104
|
+
def read_env_keys
|
105
|
+
return false unless ENV['S3_KEY'] && ENV['S3_PRIVATE_KEY']
|
106
|
+
@access_key_id = ENV['S3_KEY']
|
107
|
+
@secret_access_key = ENV['S3_PRIVATE_KEY']
|
108
|
+
end
|
93
109
|
end
|
94
110
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: onlyoffice_s3_wrapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ONLYOFFICE
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2018-02-01 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: aws-sdk
|
@@ -71,7 +71,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
71
71
|
version: '0'
|
72
72
|
requirements: []
|
73
73
|
rubyforge_project:
|
74
|
-
rubygems_version: 2.
|
74
|
+
rubygems_version: 2.7.3
|
75
75
|
signing_key:
|
76
76
|
specification_version: 4
|
77
77
|
summary: ONLYOFFICE Helper Gem for S3
|