onlyoffice_s3_wrapper 0.1.1 → 0.1.2

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
2
  SHA256:
3
- metadata.gz: 48ef6d43732a45068d62ff4656240ff3176bd7b2e230408a740cf5b02a8d1880
4
- data.tar.gz: cdf87b651e2de49a66a370b39aff82fe3713c6dd8dc07a5acb715d622cfea21e
3
+ metadata.gz: 4af2be8cb335b101363b5cef8e5cc0887399dd737283d5c28229f1468b37c5df
4
+ data.tar.gz: 6bdd4346707a555268285f21ee1b0a75d821998d94b5df73fc92f518a6cf1d20
5
5
  SHA512:
6
- metadata.gz: 16d104821d05e85e26ed46d41af37140088c7ef6bcd165b13bef2ee409a102b9295398ddcda23154d35b617439312a2cc129018eae3993185f35d889a3de1a04
7
- data.tar.gz: d2d1131bd96f3de426f9dd86c613c3282aae3cf3969e40339db5a13e5bf81c1946b82bc8e5ba6bd12b9f26914d4c386c598023b25dd045b9c03dc051e453f766
6
+ metadata.gz: e974d934b9c74d0d50e43ac55e1e20f6c8e81a939074c558e3cc574b26ac58f388e446765bb640212de4b8bca0f121b8fc56ca3ac04c0a32fa13ff755c415e8a
7
+ data.tar.gz: 7fe4920dfd38dd251b4c6f6161e194d2a6b118f3c685275f8f8e75fc7d139c98fa26fa52aa521bbbab2ff6ae71369d7e0407fbfb16c66373699c608365a0a0bf
@@ -1,13 +1,21 @@
1
- require 'aws-sdk'
1
+ # frozen_string_literal: true
2
+
3
+ require 'aws-sdk-s3'
2
4
  require 'open-uri'
3
5
  require 'securerandom'
4
6
  require 'onlyoffice_file_helper'
7
+ require 'onlyoffice_s3_wrapper/path_helper'
5
8
  require 'onlyoffice_s3_wrapper/version'
6
9
 
7
10
  module OnlyofficeS3Wrapper
8
11
  # Class for working with amazon s3
9
12
  class AmazonS3Wrapper
10
- attr_accessor :s3, :bucket, :download_folder, :access_key_id, :secret_access_key
13
+ include PathHelper
14
+ attr_accessor :s3, :bucket, :download_folder
15
+ # [String] Amazon key
16
+ attr_writer :access_key_id
17
+ # [String] Amazon secret key
18
+ attr_writer :secret_access_key
11
19
 
12
20
  def initialize(bucket_name: 'nct-data-share', region: 'us-west-2')
13
21
  read_keys
@@ -20,7 +28,9 @@ module OnlyofficeS3Wrapper
20
28
  end
21
29
 
22
30
  def get_files_by_prefix(prefix = nil, field: :key)
23
- @bucket.objects(prefix: prefix).collect(&field).reject { |file| folder?(file) }
31
+ @bucket.objects(prefix: prefix)
32
+ .collect(&field)
33
+ .reject { |file| folder?(file) }
24
34
  end
25
35
 
26
36
  # param [String] prefix
@@ -39,30 +49,29 @@ module OnlyofficeS3Wrapper
39
49
  end
40
50
 
41
51
  def download_file_by_name(file_name, download_folder = @download_folder)
42
- OnlyofficeLoggerHelper.log("Download file with name #{file_name} to "\
43
- "folder #{download_folder}")
44
- OnlyofficeLoggerHelper.log('Try to find file:')
45
52
  object = get_object(file_name)
46
53
  download_object(object, download_folder)
54
+ OnlyofficeLoggerHelper.log("Downloaded file with name #{file_name} to "\
55
+ "folder #{download_folder}")
47
56
  end
48
57
 
49
58
  def download_object(object, download_folder = @download_folder)
50
59
  link = object.presigned_url(:get, expires_in: 3600)
51
- OnlyofficeLoggerHelper.log("Try to download object with name #{object.key} "\
52
- "to folder #{download_folder}")
60
+ OnlyofficeLoggerHelper.log('Try to download object with name '\
61
+ "#{object.key} to #{download_folder}")
53
62
  File.open("#{download_folder}/#{File.basename(object.key)}", 'w') do |f|
54
- IO.copy_stream(open(link), f)
63
+ IO.copy_stream(URI.parse(link).open, f)
55
64
  end
56
65
  OnlyofficeLoggerHelper.log("File with name #{object.key} successfully "\
57
66
  "downloaded to folder #{download_folder}")
58
67
  rescue StandardError
59
- raise("File with name #{object.key} is not found un bucket #{@bucket.name}")
68
+ raise("File #{object.key} is not found un bucket #{@bucket.name}")
60
69
  end
61
70
 
62
71
  def upload_file(file_path, upload_folder)
63
- upload_folder.sub!('/', '') if upload_folder[0] == '/'
64
- upload_folder.chop! if folder?(upload_folder)
65
- @bucket.object("#{upload_folder}/#{File.basename(file_path)}").upload_file(file_path)
72
+ path = bucket_file_path(File.basename(file_path),
73
+ upload_folder)
74
+ @bucket.object(path).upload_file(file_path)
66
75
  end
67
76
 
68
77
  def make_public(file_path)
@@ -75,14 +84,15 @@ module OnlyofficeS3Wrapper
75
84
  @bucket.object(file_path).acl
76
85
  end
77
86
 
78
- def upload_file_and_make_public(file_path, upload_folder)
87
+ def upload_file_and_make_public(file_path, upload_folder = nil)
79
88
  upload_file(file_path, upload_folder)
80
- make_public("#{upload_folder}/#{File.basename(file_path)}")
81
- @bucket.object("#{upload_folder}/#{File.basename(file_path)}").public_url
89
+ make_public(bucket_file_path(File.basename(file_path), upload_folder))
90
+ @bucket.object(bucket_file_path(File.basename(file_path),
91
+ upload_folder)).public_url
82
92
  end
83
93
 
84
94
  def delete_file(file_path)
85
- file_path.sub!('/', '') if file_path[0] == '/'
95
+ file_path = file_path.sub('/', '') if file_path[0] == '/'
86
96
  get_object(file_path).delete
87
97
  end
88
98
 
@@ -92,10 +102,11 @@ module OnlyofficeS3Wrapper
92
102
  # @return [Array <String>] list of keys
93
103
  def read_keys
94
104
  return if read_env_keys
105
+
95
106
  @access_key_id = File.read(Dir.home + '/.s3/key').strip
96
107
  @secret_access_key = File.read(Dir.home + '/.s3/private_key').strip
97
108
  rescue Errno::ENOENT
98
- raise Errno::ENOENT, "No key or private key found in #{Dir.home}/.s3/ directory."\
109
+ raise Errno::ENOENT, "No key or private key found in #{Dir.home}/.s3/ "\
99
110
  "Please create files #{Dir.home}/.s3/key "\
100
111
  "and #{Dir.home}/.s3/private_key"
101
112
  end
@@ -103,6 +114,7 @@ module OnlyofficeS3Wrapper
103
114
  # Read keys from env variables
104
115
  def read_env_keys
105
116
  return false unless ENV['S3_KEY'] && ENV['S3_PRIVATE_KEY']
117
+
106
118
  @access_key_id = ENV['S3_KEY']
107
119
  @secret_access_key = ENV['S3_PRIVATE_KEY']
108
120
  end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OnlyofficeS3Wrapper
4
+ # Module for method to work with paths
5
+ module PathHelper
6
+ # @param filename [String] name of file to upload
7
+ # @param folder [String] folder to upload file
8
+ # @return [String] correct full path to file
9
+ def bucket_file_path(filename, folder)
10
+ return filename unless folder
11
+
12
+ folder = folder.sub('/', '') if folder[0] == '/'
13
+ folder = folder.chop if folder?(folder)
14
+ "#{folder}/#{filename}"
15
+ end
16
+ end
17
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module OnlyofficeS3Wrapper
2
- VERSION = '0.1.1'.freeze
4
+ VERSION = '0.1.2'
3
5
  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.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - ONLYOFFICE
@@ -10,22 +10,22 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2018-02-01 00:00:00.000000000 Z
13
+ date: 2020-01-24 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: aws-sdk
16
+ name: aws-sdk-s3
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
19
  - - "~>"
20
20
  - !ruby/object:Gem::Version
21
- version: '2.0'
21
+ version: '1'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - "~>"
27
27
  - !ruby/object:Gem::Version
28
- version: '2.0'
28
+ version: '1'
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: onlyoffice_file_helper
31
31
  requirement: !ruby/object:Gem::Requirement
@@ -50,6 +50,7 @@ extra_rdoc_files: []
50
50
  files:
51
51
  - README.md
52
52
  - lib/onlyoffice_s3_wrapper.rb
53
+ - lib/onlyoffice_s3_wrapper/path_helper.rb
53
54
  - lib/onlyoffice_s3_wrapper/version.rb
54
55
  homepage: https://github.com/onlyoffice-testing-robot/onlyoffice_s3_wrapper
55
56
  licenses:
@@ -70,8 +71,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
70
71
  - !ruby/object:Gem::Version
71
72
  version: '0'
72
73
  requirements: []
73
- rubyforge_project:
74
- rubygems_version: 2.7.3
74
+ rubygems_version: 3.0.6
75
75
  signing_key:
76
76
  specification_version: 4
77
77
  summary: ONLYOFFICE Helper Gem for S3