onlyoffice_s3_wrapper 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|