wolf_core 1.0.52 → 1.0.54

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: 7c1e7e387b6115905bde116bf41eacd035566117c54984cc75107d54a5546524
4
- data.tar.gz: e35f0fa19d1085304258c79eb4d2df57fcbdcfc84b37f525dbf4c2eeb4df30f4
3
+ metadata.gz: f7e968199325f980d925149e08bb057acc99a855de91e17c51a4031175edf6e2
4
+ data.tar.gz: b1bdd3fdbf8894e768af16bc4613ca90637fe86c224d638be1b8e316bde5b1c2
5
5
  SHA512:
6
- metadata.gz: 1ff850507b14dbae591f32321e88ccea87fbd59cc541ba5a38139eae99719daebdce8f8f9f3f3f929297abb2df3a1d8f8567af5db3930ea1b6bade4dad8b314d
7
- data.tar.gz: c6721e184873ad8c2eb15bcd8279b8e564eddf317b9b73402dd25361b3334361274f35318cc3b00a9ce9c2c842a98e95a1e0e78c8a32a58ed06a9c4d80aabb32
6
+ metadata.gz: 6e9950b19bc35e73f4ed7809a5651b2fe5a70feb5779b7df0b5ca84fd1a766df030b0907c55c0886c73a90c0458bd57b163d89c7945db5d45e2c2b1f65792720
7
+ data.tar.gz: d23660112f62469745a533b70a885730079c243a7f5e81c5dfecacb72f54a5a549294c6e2c9a50abf67f3170ed74be4a657a180133d4c80c77c2b03b46a3d85b
@@ -1,8 +1,10 @@
1
- require_relative "logging_utils" # rubocop:disable Style/FrozenStringLiteralComment
1
+ require_relative "logging_utils"
2
+ require_relative "string_utils"
2
3
 
3
4
  module WolfCore
4
- module FileUtils # rubocop:disable Style/Documentation
5
+ module FileUtils
5
6
  extend WolfCore::LoggingUtils
7
+ extend WolfCore::StringUtils
6
8
 
7
9
  module_function
8
10
 
@@ -88,7 +90,7 @@ module WolfCore
88
90
  url = URI.parse("https://www.filestackapi.com/api/store/S3?key=#{api_key}")
89
91
  request = Net::HTTP::Post.new(url)
90
92
  request["Content-Type"] = "application/octet-stream"
91
- request.body = file.read
93
+ request.body = bytes_from_file(file)
92
94
 
93
95
  response = Net::HTTP.start(url.hostname, url.port, use_ssl: true) do |http|
94
96
  http.request(request)
@@ -111,12 +113,33 @@ module WolfCore
111
113
  message: "Failed to generate url from file",
112
114
  url: url,
113
115
  file: file,
114
- form_data: form_data,
115
116
  request: request,
116
117
  response: response,
117
118
  response_body: response.body,
118
119
  parse_json_error: parse_json_error,
119
120
  })
120
121
  end
122
+
123
+ def bytes_from_file(file)
124
+ if file.is_a?(ActionDispatch::Http::UploadedFile)
125
+ file.read
126
+ elsif base64_encoded?(file)
127
+ base64_string_to_bytes(file)
128
+ else
129
+ raise_service_error({
130
+ message: "Can not generate bytes from this file",
131
+ file: file,
132
+ })
133
+ end
134
+ end
135
+
136
+ def base64_string_to_bytes(base64_string)
137
+ begin
138
+ bytes = Base64.strict_decode64(base64_string)
139
+ bytes
140
+ rescue ArgumentError
141
+ raise_service_error({ message: 'Failed to decode base64 string', base64_string: base64_string })
142
+ end
143
+ end
121
144
  end
122
145
  end
@@ -39,5 +39,12 @@ module WolfCore
39
39
  rescue URI::InvalidURIError
40
40
  false
41
41
  end
42
+
43
+ def base64_encoded?(str)
44
+ return false unless str.is_a?(String) && str.length % 4 == 0
45
+
46
+ base64_regex = /^[A-Za-z0-9+\/]+={0,2}$/
47
+ str.match?(base64_regex)
48
+ end
42
49
  end
43
50
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module WolfCore
4
- VERSION = "1.0.52"
4
+ VERSION = "1.0.54"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wolf_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.52
4
+ version: 1.0.54
5
5
  platform: ruby
6
6
  authors:
7
7
  - Javier Roncallo
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-12-24 00:00:00.000000000 Z
11
+ date: 2024-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty