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 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