mass-client 1.0.28 → 1.0.29

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
2
  SHA256:
3
- metadata.gz: f7c4826e872e8cac9f58e00d66b13939016c482087bba516a54cc1e34b28a5b2
4
- data.tar.gz: a5b754e2e85610ad2007939372438ecdd3346db69e89dc1797607ed694ecd0d7
3
+ metadata.gz: 9380c702eb69c7a65d4c547811eeab6785fa9fdeb9f85e3c0ec5909b0533e08e
4
+ data.tar.gz: 85cde6d58b6f13edb37d8abee02804330360cd818ef5945fc3436665c66cbaf3
5
5
  SHA512:
6
- metadata.gz: 7b75129bd6625ab47e806ee1819ad248d277bdff2320844f027c11c0f5eff8672915c807d673f906afaba8e2c686a97c39e38b4bc91d050af6a00bb43e85ffa5
7
- data.tar.gz: b68638e7923e67948a43175dce9aba69f8817d910a57f7652aee0f3e21a94c51e8a097413f3345d7b66e193ef573f9b7dcbd579e17d7b0b30756e67ce5cb649a
6
+ metadata.gz: 2bc9901b6d7df6c6fefa02aa2e4c9d720fea770e106d41febb0cace29ca7ebe1f54977a6e11185f80d2e408334cbdf2a9e16e24fb037cb071a67f21599fa2e15
7
+ data.tar.gz: 28678eed6f14ac5c812b9116ce06a96d25c3fe39c1607e7c01936f5a1343ea396d59008499b9b61252f082820afa9185b96a35bdf71275387c6d3e5aa8528d22
@@ -32,6 +32,7 @@ module Mass
32
32
  # crate an instance of the profile type using the class defined in the `desc['name']` attribute.
33
33
  # override the base method
34
34
  def child_class_instance
35
+ #binding.pry
35
36
  outreach_type = self.desc['outreach_type']
36
37
  key = self.class_name_from_outreach_type
37
38
  raise "Source code of outreach type #{outreach_type} not found. Create a class #{key} in the folder `/lib` of your mass-sdk." unless Kernel.const_defined?(key)
@@ -60,7 +60,7 @@ module Mass
60
60
  # - url: Internet address of the image to download from the website and upload to dropbox.
61
61
  # - dropbox_folder: Dropbox folder name to store the image.
62
62
  #
63
- def download_image_0(url, dropbox_folder = nil)
63
+ def download_image_0(url, dropbox_folder = nil, s3_optimization: true)
64
64
  raise "Either dropbox_folder parameter or self.desc['id_account'] are required." if dropbox_folder.nil? && self.desc['id_account'].nil?
65
65
  dropbox_folder = self.desc['id_account'] if dropbox_folder.nil?
66
66
 
@@ -127,6 +127,17 @@ module Mass
127
127
  file.write(Base64.decode64(image_data))
128
128
  end
129
129
 
130
+ # AWS/S3 optimization - Reduce the resolution of the screenshot
131
+ # Reference: https://github.com/MassProspecting/docs/issues/368
132
+ if s3_optimization
133
+ image = MiniMagick::Image.open(tmp_path)
134
+ image.format "jpeg"
135
+ image.strip # Remove all profiles and comments
136
+ image.quality "50" # Apply compression quality setting (for JPEG)
137
+ image_ret = image.quality "10" # reduce the file size as well by compressing the image
138
+ image.write(tmp_path)
139
+ end # s3_optimization
140
+
130
141
  # Proceed with Dropbox operations
131
142
  year = Time.now.year.to_s.rjust(4, '0')
132
143
  month = Time.now.month.to_s.rjust(2, '0')
@@ -210,7 +210,7 @@ module Mass
210
210
 
211
211
  # take screenshot and upload it to dropbox
212
212
  # return the URL of the screenshot
213
- def screenshot(dropbox_folder=nil)
213
+ def screenshot(dropbox_folder=nil, s3_optimization: true)
214
214
  raise "Either dropbox_folder parameter or self.desc['id_account'] are required." if dropbox_folder.nil? && self.desc['id_account'].nil?
215
215
  dropbox_folder = self.desc['id_account'] if dropbox_folder.nil?
216
216
  # parameters
@@ -219,6 +219,16 @@ module Mass
219
219
  tmp_path = "/tmp/#{filename}"
220
220
  # take screenshot using selenium driver and save it into the /tmp folder
221
221
  self.driver.save_screenshot(tmp_path)
222
+ # AWS/S3 optimization - Reduce the resolution of the screenshot
223
+ # Reference: https://github.com/MassProspecting/docs/issues/368
224
+ if s3_optimization
225
+ image = MiniMagick::Image.open(tmp_path)
226
+ image.format "jpeg"
227
+ image.strip # Remove all profiles and comments
228
+ image.quality "50" # Apply compression quality setting (for JPEG)
229
+ image_ret = image.quality "10" # reduce the file size as well by compressing the image
230
+ image.write(tmp_path)
231
+ end # s3_optimization
222
232
  # code
223
233
  year = Time.now.year.to_s.rjust(4,'0')
224
234
  month = Time.now.month.to_s.rjust(2,'0')
data/lib/mass-client.rb CHANGED
@@ -9,6 +9,7 @@ require 'timeout'
9
9
  require 'base64'
10
10
  require 'adspower-client'
11
11
  require 'aws-sdk-s3' # Ensure the AWS SDK for S3 is installed
12
+ require 'mini_magick' # https://github.com/MassProspecting/docs/issues/368
12
13
 
13
14
  # mass client configuration
14
15
  module Mass
@@ -37,7 +38,9 @@ module Mass
37
38
  #
38
39
  # js_path: Optional. The path to the JavaScript file to be used by the SDK. Default is nil.
39
40
  # download_path: Optional. The path to the download folder(s) to be used by the SDK. Default is [].
40
-
41
+ #
42
+ # s3_region, s3_access_key_id, s3_secret_access_key, s3_bucket: Defining AWS S3 parameter for storing files at the client-side.
43
+ #
41
44
  def self.set(
42
45
  api_key: ,
43
46
  subaccount: nil,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mass-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.28
4
+ version: 1.0.29
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leandro Daniel Sardi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-11-01 00:00:00.000000000 Z
11
+ date: 2025-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: timeout
@@ -164,6 +164,20 @@ dependencies:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
166
  version: 1.169.0
167
+ - !ruby/object:Gem::Dependency
168
+ name: mini_magick
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: 5.1.0
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: 5.1.0
167
181
  description: Ruby library for MassProspecting API.
168
182
  email: leandro@massprospecting.com
169
183
  executables: []