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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: bad6470557003c5cd85d5ea551afd742ac5bd2df
4
- data.tar.gz: fe925f5ed9ce38860d13def655a17a77bd7e4331
2
+ SHA256:
3
+ metadata.gz: 48ef6d43732a45068d62ff4656240ff3176bd7b2e230408a740cf5b02a8d1880
4
+ data.tar.gz: cdf87b651e2de49a66a370b39aff82fe3713c6dd8dc07a5acb715d622cfea21e
5
5
  SHA512:
6
- metadata.gz: 19e92c37a0828842de80a7581394605b99a938bf86e80299669d977e1ed2876cfcbfb2fda7c6f8bae09914ca144e50c0cb1c5572d0982f8d631dd1d4ee2cbaf9
7
- data.tar.gz: 6d5d36c93d978007ab7d068b7890f3e94ba5f2150f52184d4c42061eb54a502065ee2e57f40ea2db01ebf2ea32d3875144ef2e2de828a50790f3f78ecdcdf63d
6
+ metadata.gz: 16d104821d05e85e26ed46d41af37140088c7ef6bcd165b13bef2ee409a102b9295398ddcda23154d35b617439312a2cc129018eae3993185f35d889a3de1a04
7
+ data.tar.gz: d2d1131bd96f3de426f9dd86c613c3282aae3cf3969e40339db5a13e5bf81c1946b82bc8e5ba6bd12b9f26914d4c386c598023b25dd045b9c03dc051e453f766
@@ -1,3 +1,3 @@
1
1
  module OnlyofficeS3Wrapper
2
- VERSION = '0.1.0'.freeze
2
+ VERSION = '0.1.1'.freeze
3
3
  end
@@ -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
- @access_key_id = ENV['S3_KEY']
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(&:key).reject { |file| is_folder?(file) }
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 '/' in end and filenames with fullpath (started ad prefix)
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 is_folder?(str)
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 folder #{download_folder}")
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} to folder #{download_folder}")
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 downloaded to folder #{download_folder}")
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 is_folder?(upload_folder)
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.0
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: 2017-10-31 00:00:00.000000000 Z
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.6.13
74
+ rubygems_version: 2.7.3
75
75
  signing_key:
76
76
  specification_version: 4
77
77
  summary: ONLYOFFICE Helper Gem for S3