filestack 2.3.0 → 2.4.0
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 +4 -4
- data/CHANGELOG.md +4 -0
- data/VERSION +1 -1
- data/lib/filestack.rb +1 -0
- data/lib/filestack/core_ext/hash/keys.rb +20 -0
- data/lib/filestack/mixins/filestack_common.rb +4 -2
- data/lib/filestack/models/filelink.rb +2 -2
- data/lib/filestack/models/filestack_av.rb +7 -3
- data/lib/filestack/models/filestack_security.rb +2 -1
- data/lib/filestack/models/filestack_transform.rb +6 -3
- data/lib/filestack/ruby/version.rb +1 -1
- data/lib/filestack/utils/multipart_upload_utils.rb +2 -2
- data/lib/filestack/utils/utils.rb +4 -3
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 07dcc17274c65c4740665bb4fc382cd44e8af337
|
4
|
+
data.tar.gz: 866e63f55957c74c0f374698c8a5c79b400fec2d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a19cfe346bda3974b11a315139f4a51c2108397c21cf55d3848facabbbb12f455d273735806874d51d0e2238cff2324b80de8a75f3a9af73bc38888eaafab145
|
7
|
+
data.tar.gz: 82a7b00a7772903cd892d48e6c691324a88c4b322d38f2269b882fca18aac3c67703b0fe55ddc80a7bff26f2b8497230045188ebfd5c64078bf46de67d5fdd67
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# Filestack-Ruby Changelog
|
2
2
|
|
3
|
+
## 2.4.0 (August 27, 2018)
|
4
|
+
- FS-3813 Convert security options hash with string keys to symbols
|
5
|
+
- FS-3903 Add parsing the response body before reading it
|
6
|
+
|
3
7
|
## 2.3.0 (July 26, 2018)
|
4
8
|
- FS-3437 Change Unirest library to Typhoeus, and fix warning in rspecs
|
5
9
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.4.0
|
data/lib/filestack.rb
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
module Filestack
|
2
|
+
# A helper class for the purpose of implementing a symbolize_keys method
|
3
|
+
# similar to ActiveSupport's symbolize_keys.
|
4
|
+
class Hash
|
5
|
+
|
6
|
+
# Convert a hash to use symbolized keys.
|
7
|
+
#
|
8
|
+
# @param [Hash] to_symbolize The hash which contains the keys to be
|
9
|
+
# symbolized
|
10
|
+
#
|
11
|
+
# @return [Hash]
|
12
|
+
def self.symbolize_keys(to_symbolize)
|
13
|
+
symbolized = {}
|
14
|
+
to_symbolize.each_key do |key|
|
15
|
+
symbolized[key.to_sym] = to_symbolize[key]
|
16
|
+
end
|
17
|
+
symbolized
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -2,6 +2,7 @@ require 'filestack/config'
|
|
2
2
|
require 'filestack/utils/utils'
|
3
3
|
require 'filestack/utils/multipart_upload_utils'
|
4
4
|
require 'mimemagic'
|
5
|
+
require 'json'
|
5
6
|
|
6
7
|
# Module is mixin for common functionalities that all Filestack
|
7
8
|
# objects can call.
|
@@ -88,7 +89,8 @@ module FilestackCommon
|
|
88
89
|
signature = security.signature
|
89
90
|
url = "#{FilestackConfig::CDN_URL}/#{task}/"\
|
90
91
|
"security=signature:#{signature},policy:#{policy}/#{handle}"
|
91
|
-
UploadUtils.make_call(url, 'get')
|
92
|
+
response = UploadUtils.make_call(url, 'get')
|
93
|
+
JSON.parse(response.body)[task]
|
92
94
|
end
|
93
95
|
|
94
96
|
def send_metadata(handle, security = nil, params)
|
@@ -102,7 +104,7 @@ module FilestackCommon
|
|
102
104
|
response = UploadUtils.make_call(url, 'get', parameters: params)
|
103
105
|
|
104
106
|
if response.code == 200
|
105
|
-
return response.body
|
107
|
+
return JSON.parse(response.body)
|
106
108
|
end
|
107
109
|
raise response.body
|
108
110
|
end
|
@@ -73,7 +73,7 @@ class FilestackFilelink
|
|
73
73
|
|
74
74
|
# Return metadata for file handle
|
75
75
|
#
|
76
|
-
# @return [
|
76
|
+
# @return [Hash]
|
77
77
|
def metadata(params = {})
|
78
78
|
send_metadata(@handle, @security, params)
|
79
79
|
end
|
@@ -81,7 +81,7 @@ class FilestackFilelink
|
|
81
81
|
# Return true (SFW) or false (NSFW)
|
82
82
|
#
|
83
83
|
# @return [Bool]
|
84
|
-
def sfw
|
84
|
+
def sfw
|
85
85
|
send_tags('sfw', @handle, @security)
|
86
86
|
end
|
87
87
|
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'filestack/models/filelink'
|
2
2
|
require 'filestack/utils/utils'
|
3
|
+
require 'json'
|
3
4
|
|
4
5
|
# Class for AV objects -- allows to check status
|
5
6
|
# and upgrade to filelink once completed
|
@@ -18,8 +19,9 @@ class AV
|
|
18
19
|
# @return [Filestack::FilestackFilelink]
|
19
20
|
def to_filelink
|
20
21
|
return 'Video conversion incomplete' unless status == 'completed'
|
21
|
-
response = UploadUtils.make_call(@url, 'get')
|
22
|
-
|
22
|
+
response = UploadUtils.make_call(@url, 'get')
|
23
|
+
response_body = JSON.parse(response.body)
|
24
|
+
handle = response_body['data']['url'].split('/').last
|
23
25
|
FilestackFilelink.new(handle, apikey: @apikey, security: @security)
|
24
26
|
end
|
25
27
|
|
@@ -27,6 +29,8 @@ class AV
|
|
27
29
|
#
|
28
30
|
# @return [String]
|
29
31
|
def status
|
30
|
-
UploadUtils.make_call(@url, 'get')
|
32
|
+
response = UploadUtils.make_call(@url, 'get')
|
33
|
+
response_body = JSON.parse(response.body)
|
34
|
+
response_body['status']
|
31
35
|
end
|
32
36
|
end
|
@@ -43,7 +43,7 @@ class FilestackSecurity
|
|
43
43
|
# @param [String] secret Your filestack security secret
|
44
44
|
# @param [Hash] options Hash of options - see constructor
|
45
45
|
def generate(secret, options)
|
46
|
-
policy_json = create_policy_string(options)
|
46
|
+
policy_json = create_policy_string(Filestack::Hash.symbolize_keys(options))
|
47
47
|
@policy = Base64.urlsafe_encode64(policy_json)
|
48
48
|
@signature = OpenSSL::HMAC.hexdigest('sha256', secret, policy)
|
49
49
|
end
|
@@ -62,6 +62,7 @@ class FilestackSecurity
|
|
62
62
|
#
|
63
63
|
# Manage options and convert hash to json string
|
64
64
|
#
|
65
|
+
|
65
66
|
def create_policy_string(options)
|
66
67
|
options[:expiry] = expiry_timestamp(options)
|
67
68
|
options.to_json
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'filestack/config'
|
2
2
|
require 'filestack/models/filestack_av'
|
3
|
+
require 'json'
|
3
4
|
|
4
5
|
# Class for creating transformation chains and storing them to Filestack
|
5
6
|
class Transform
|
@@ -64,12 +65,13 @@ class Transform
|
|
64
65
|
|
65
66
|
# Add debug parameter to get information on transformation image
|
66
67
|
#
|
67
|
-
# @return [
|
68
|
+
# @return [Hash]
|
68
69
|
def debug
|
69
70
|
@transform_tasks.push(
|
70
71
|
add_transform_task('debug')
|
71
72
|
)
|
72
|
-
UploadUtils.make_call(url, 'get')
|
73
|
+
response = UploadUtils.make_call(url, 'get')
|
74
|
+
JSON.parse(response.body)
|
73
75
|
end
|
74
76
|
|
75
77
|
# Stores a transformation URL and returns a filelink
|
@@ -80,7 +82,8 @@ class Transform
|
|
80
82
|
add_transform_task('store', {})
|
81
83
|
)
|
82
84
|
response = UploadUtils.make_call(url, 'get')
|
83
|
-
|
85
|
+
response_body = JSON.parse(response.body)
|
86
|
+
handle = response_body['url'].split('/').last
|
84
87
|
FilestackFilelink.new(handle, apikey: @apikey, security: @security)
|
85
88
|
end
|
86
89
|
|
@@ -234,7 +234,7 @@ module MultipartUploadUtils
|
|
234
234
|
# @param [Hash] options User-defined options for
|
235
235
|
# multipart uploads
|
236
236
|
#
|
237
|
-
# @return [
|
237
|
+
# @return [Hash]
|
238
238
|
def multipart_upload(apikey, filepath, security, options, timeout, intelligent: false)
|
239
239
|
filename, filesize, mimetype = get_file_info(filepath)
|
240
240
|
start_response = multipart_start(
|
@@ -272,6 +272,6 @@ module MultipartUploadUtils
|
|
272
272
|
rescue
|
273
273
|
raise "Upload timed out upon completion. Please try again later"
|
274
274
|
end
|
275
|
-
response_complete.body
|
275
|
+
JSON.parse(response_complete.body)
|
276
276
|
end
|
277
277
|
end
|
@@ -73,7 +73,7 @@ module UploadUtils
|
|
73
73
|
# multipart uploads
|
74
74
|
# @param [String] storage Storage destination
|
75
75
|
# (s3, rackspace, etc)
|
76
|
-
# @return [
|
76
|
+
# @return [Hash]
|
77
77
|
def send_upload(apikey, filepath: nil, external_url: nil, security: nil, options: nil, storage: 'S3')
|
78
78
|
data = if filepath
|
79
79
|
{ fileUpload: File.open(filepath) }
|
@@ -93,7 +93,8 @@ module UploadUtils
|
|
93
93
|
|
94
94
|
response = make_call(base, 'post', parameters: data)
|
95
95
|
if response.code == 200
|
96
|
-
|
96
|
+
response_body = JSON.parse(response.body)
|
97
|
+
handle = response_body['url'].split('/').last
|
97
98
|
return { 'handle' => handle }
|
98
99
|
end
|
99
100
|
raise response.body
|
@@ -390,7 +391,7 @@ module IntelligentUtils
|
|
390
391
|
rescue
|
391
392
|
raise 'BACKEND_NETWORK'
|
392
393
|
end
|
393
|
-
fs_response = fs_response.body
|
394
|
+
fs_response = JSON.parse(fs_response.body)
|
394
395
|
|
395
396
|
# PUT to S3
|
396
397
|
begin
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: filestack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Filestack
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-08-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: typhoeus
|
@@ -180,6 +180,7 @@ files:
|
|
180
180
|
- filestack-ruby.gemspec
|
181
181
|
- lib/filestack.rb
|
182
182
|
- lib/filestack/config.rb
|
183
|
+
- lib/filestack/core_ext/hash/keys.rb
|
183
184
|
- lib/filestack/mixins/filestack_common.rb
|
184
185
|
- lib/filestack/models/filelink.rb
|
185
186
|
- lib/filestack/models/filestack_av.rb
|