uploadcare-ruby 2.1.2 → 3.0.3
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/.github/workflows/gem-push.yml +20 -0
- data/.github/workflows/ruby.yml +52 -0
- data/.gitignore +13 -6
- data/.rspec +2 -0
- data/.rubocop.yml +20 -0
- data/.yardopts +4 -0
- data/CHANGELOG.md +24 -51
- data/DEVELOPMENT.md +18 -0
- data/Gemfile +2 -0
- data/LICENSE +1 -1
- data/README.md +164 -578
- data/Rakefile +5 -5
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/lib/uploadcare.rb +36 -32
- data/lib/uploadcare/api/api.rb +25 -0
- data/lib/uploadcare/client/file_client.rb +44 -0
- data/lib/uploadcare/client/file_list_client.rb +46 -0
- data/lib/uploadcare/client/group_client.rb +45 -0
- data/lib/uploadcare/client/multipart_upload/chunks_client.rb +46 -0
- data/lib/uploadcare/client/multipart_upload_client.rb +62 -0
- data/lib/uploadcare/client/project_client.rb +18 -0
- data/lib/uploadcare/client/rest_client.rb +73 -0
- data/lib/uploadcare/client/rest_group_client.rb +23 -0
- data/lib/uploadcare/client/upload_client.rb +35 -0
- data/lib/uploadcare/client/uploader_client.rb +93 -0
- data/lib/uploadcare/client/webhook_client.rb +43 -0
- data/lib/uploadcare/concern/error_handler.rb +54 -0
- data/lib/uploadcare/concern/throttle_handler.rb +25 -0
- data/lib/uploadcare/concern/upload_error_handler.rb +32 -0
- data/lib/uploadcare/entity/decorator/paginator.rb +81 -0
- data/lib/uploadcare/entity/entity.rb +18 -0
- data/lib/uploadcare/entity/file.rb +81 -0
- data/lib/uploadcare/entity/file_list.rb +30 -0
- data/lib/uploadcare/entity/group.rb +41 -0
- data/lib/uploadcare/entity/group_list.rb +24 -0
- data/lib/uploadcare/entity/project.rb +13 -0
- data/lib/uploadcare/entity/uploader.rb +73 -0
- data/lib/uploadcare/entity/webhook.rb +14 -0
- data/lib/uploadcare/exception/request_error.rb +9 -0
- data/lib/uploadcare/exception/throttle_error.rb +14 -0
- data/lib/uploadcare/param/authentication_header.rb +25 -0
- data/lib/uploadcare/param/param.rb +10 -0
- data/lib/uploadcare/param/secure_auth_header.rb +37 -0
- data/lib/uploadcare/param/simple_auth_header.rb +14 -0
- data/lib/uploadcare/param/upload/signature_generator.rb +24 -0
- data/lib/uploadcare/param/upload/upload_params_generator.rb +23 -0
- data/lib/uploadcare/param/user_agent.rb +21 -0
- data/lib/uploadcare/ruby/version.rb +5 -0
- data/uploadcare-ruby.gemspec +50 -37
- metadata +98 -113
- data/.travis.yml +0 -26
- data/UPGRADE_NOTES.md +0 -36
- data/lib/uploadcare/api.rb +0 -26
- data/lib/uploadcare/api/file_api.rb +0 -7
- data/lib/uploadcare/api/file_list_api.rb +0 -19
- data/lib/uploadcare/api/file_storage_api.rb +0 -34
- data/lib/uploadcare/api/group_api.rb +0 -38
- data/lib/uploadcare/api/group_list_api.rb +0 -17
- data/lib/uploadcare/api/project_api.rb +0 -9
- data/lib/uploadcare/api/raw_api.rb +0 -38
- data/lib/uploadcare/api/uploading_api.rb +0 -71
- data/lib/uploadcare/api/uploading_api/upload_params.rb +0 -72
- data/lib/uploadcare/api/validators/file_list_options_validator.rb +0 -73
- data/lib/uploadcare/api/validators/group_list_options_validator.rb +0 -49
- data/lib/uploadcare/errors/errors.rb +0 -64
- data/lib/uploadcare/resources/file.rb +0 -164
- data/lib/uploadcare/resources/file_list.rb +0 -14
- data/lib/uploadcare/resources/group.rb +0 -115
- data/lib/uploadcare/resources/group_list.rb +0 -14
- data/lib/uploadcare/resources/project.rb +0 -13
- data/lib/uploadcare/resources/resource_list.rb +0 -83
- data/lib/uploadcare/rest/auth/auth.rb +0 -31
- data/lib/uploadcare/rest/auth/secure.rb +0 -43
- data/lib/uploadcare/rest/auth/simple.rb +0 -16
- data/lib/uploadcare/rest/connections/api_connection.rb +0 -53
- data/lib/uploadcare/rest/connections/upload_connection.rb +0 -22
- data/lib/uploadcare/rest/middlewares/auth_middleware.rb +0 -24
- data/lib/uploadcare/rest/middlewares/parse_json_middleware.rb +0 -33
- data/lib/uploadcare/rest/middlewares/raise_error_middleware.rb +0 -21
- data/lib/uploadcare/utils/parser.rb +0 -71
- data/lib/uploadcare/utils/user_agent.rb +0 -44
- data/lib/uploadcare/version.rb +0 -3
- data/spec/api/file_list_api_spec.rb +0 -95
- data/spec/api/file_storage_api_spec.rb +0 -88
- data/spec/api/group_list_api_spec.rb +0 -59
- data/spec/api/raw_api_spec.rb +0 -25
- data/spec/api/uploading_api/upload_params_spec.rb +0 -99
- data/spec/api/uploading_api_spec.rb +0 -59
- data/spec/resources/file_list_spec.rb +0 -25
- data/spec/resources/file_spec.rb +0 -223
- data/spec/resources/group_list_spec.rb +0 -25
- data/spec/resources/group_spec.rb +0 -101
- data/spec/resources/operations_spec.rb +0 -59
- data/spec/resources/project_spec.rb +0 -21
- data/spec/rest/api_connection_spec.rb +0 -68
- data/spec/rest/auth/secure_spec.rb +0 -66
- data/spec/rest/auth/simple_spec.rb +0 -31
- data/spec/rest/errors_spec.rb +0 -75
- data/spec/rest/upload_connection_spec.rb +0 -19
- data/spec/shared/resource_list.rb +0 -188
- data/spec/spec_helper.rb +0 -54
- data/spec/uploadcare_spec.rb +0 -43
- data/spec/utils/parser_spec.rb +0 -85
- data/spec/utils/user_agent_spec.rb +0 -46
- data/spec/view.png +0 -0
- data/spec/view2.jpg +0 -0
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
require 'faraday'
|
|
2
|
-
require 'json'
|
|
3
|
-
|
|
4
|
-
module Uploadcare
|
|
5
|
-
module Connections
|
|
6
|
-
module Response
|
|
7
|
-
class ParseJson < Faraday::Response::Middleware
|
|
8
|
-
WHITESPACE_REGEX = /\A^\s*$\z/
|
|
9
|
-
|
|
10
|
-
ERROR_CODES = [400, 401, 403, 404, 406, 408, 422, 429, 500, 502, 503, 504]
|
|
11
|
-
|
|
12
|
-
def parse(body)
|
|
13
|
-
case body
|
|
14
|
-
when WHITESPACE_REGEX, nil
|
|
15
|
-
nil
|
|
16
|
-
else
|
|
17
|
-
JSON.parse(body)
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def on_complete(response)
|
|
22
|
-
response[:body] = parse(response[:body]) if respond_to?(:parse) && !ERROR_CODES.include?(response[:status])
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def unparsable_status_codes
|
|
26
|
-
[204, 301, 302, 304]
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
Faraday::Response.register_middleware :uploadcare_parse_json => Uploadcare::Connections::Response::ParseJson
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
require 'faraday'
|
|
2
|
-
|
|
3
|
-
module Uploadcare
|
|
4
|
-
module Connections
|
|
5
|
-
module Response
|
|
6
|
-
class RaiseError < Faraday::Response::Middleware
|
|
7
|
-
def on_complete(response)
|
|
8
|
-
@error_codes = Uploadcare::Error.errors.keys
|
|
9
|
-
@status = response[:status]
|
|
10
|
-
|
|
11
|
-
if @error_codes.include?(@status)
|
|
12
|
-
error = Uploadcare::Error.errors[@status].new
|
|
13
|
-
fail(error)
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
Faraday::Response.register_middleware :uploadcare_raise_error => Uploadcare::Connections::Response::RaiseError
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
require 'ostruct'
|
|
2
|
-
|
|
3
|
-
module Uploadcare
|
|
4
|
-
module Parser
|
|
5
|
-
|
|
6
|
-
META_URL = /
|
|
7
|
-
(?<uuid>[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12} # base uuid
|
|
8
|
-
~?(?<count>\d+)?) # optional count
|
|
9
|
-
(?:\/-\/(?<operations>.*?))?\/?$ # optional operations
|
|
10
|
-
/ix
|
|
11
|
-
|
|
12
|
-
def self.parse_file_string string
|
|
13
|
-
result = Uploadcare::Parser.parse(string)
|
|
14
|
-
|
|
15
|
-
unless result.is_a?(Uploadcare::Parser::File)
|
|
16
|
-
msg = "invalid CDN URL or UUID was given for file: #{uuid_or_cdn_url}."
|
|
17
|
-
if result.is_a?(Uploadcare::Parser::Group)
|
|
18
|
-
msg = msg + "\n Group UUID was given. Try call @api.group if it is what you intended."
|
|
19
|
-
end
|
|
20
|
-
raise msg
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
result
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
def self.parse_group_string string
|
|
28
|
-
result = Uploadcare::Parser.parse(string)
|
|
29
|
-
|
|
30
|
-
unless result.is_a?(Uploadcare::Parser::Group)
|
|
31
|
-
msg = "invalid CDN URL or UUID was given for group: #{uuid_or_cdn_url}."
|
|
32
|
-
if result.is_a?(Uploadcare::Parser::File)
|
|
33
|
-
msg = msg + "\n File UUID was given. Try call @api.file if it is what you intended."
|
|
34
|
-
end
|
|
35
|
-
raise msg
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
result
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def self.parse string
|
|
42
|
-
matched = META_URL.match(string)
|
|
43
|
-
|
|
44
|
-
# just a simple hash - easy to pass next
|
|
45
|
-
captured = Hash[ matched.names.zip( matched.captures ) ]
|
|
46
|
-
|
|
47
|
-
# raise an error if no uuid was given in the sting
|
|
48
|
-
raise "Invalid UUID or url was given" if captured["uuid"].nil?
|
|
49
|
-
|
|
50
|
-
# operations sring to array of operations
|
|
51
|
-
if captured["operations"]
|
|
52
|
-
captured["operations"] = captured["operations"].split("/-/")
|
|
53
|
-
else
|
|
54
|
-
captured["operations"] = []
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
# if count was given - it is a group
|
|
58
|
-
if captured["count"]
|
|
59
|
-
obj = Group.new captured
|
|
60
|
-
else
|
|
61
|
-
obj = File.new captured
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
class File < OpenStruct
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
class Group < OpenStruct
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
end
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
module Uploadcare
|
|
2
|
-
# Determines User-Agent string either taking it from settings or building
|
|
3
|
-
# in accordance with common Uploadcare format
|
|
4
|
-
#
|
|
5
|
-
class UserAgent
|
|
6
|
-
# @param options [Hash]
|
|
7
|
-
# @option options [String] :user_agent (nil)
|
|
8
|
-
# @option options [String] :public_key (nil)
|
|
9
|
-
# @option options [String] :user_agent_environment (nil)
|
|
10
|
-
# @return [String]
|
|
11
|
-
#
|
|
12
|
-
def call(options)
|
|
13
|
-
return options[:user_agent].to_s if options[:user_agent]
|
|
14
|
-
|
|
15
|
-
user_agent_string(
|
|
16
|
-
options.fetch(:public_key, nil),
|
|
17
|
-
options.fetch(:user_agent_environment, {})
|
|
18
|
-
)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
private
|
|
22
|
-
|
|
23
|
-
def user_agent_string(public_key, extensions)
|
|
24
|
-
format(
|
|
25
|
-
'%<library>s/%<pubkey>s (%<environment>s)',
|
|
26
|
-
library: versioned('UploadcareRuby', Uploadcare::VERSION),
|
|
27
|
-
pubkey: public_key,
|
|
28
|
-
environment: environment_string(extensions)
|
|
29
|
-
)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def environment_string(extensions)
|
|
33
|
-
[
|
|
34
|
-
versioned('Ruby', Gem.ruby_version),
|
|
35
|
-
versioned(extensions[:framework_name], extensions[:framework_version]),
|
|
36
|
-
versioned(extensions[:extension_name], extensions[:extension_version])
|
|
37
|
-
].compact.join('; ')
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def versioned(name, version = nil)
|
|
41
|
-
name ? [name, version].compact.join('/') : nil
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
data/lib/uploadcare/version.rb
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe Uploadcare::FileListApi do
|
|
4
|
-
let(:api){ API }
|
|
5
|
-
subject{ api.file_list(limit: 1) }
|
|
6
|
-
|
|
7
|
-
before(:each){ allow(api).to receive(:get){ {'results' => []} } }
|
|
8
|
-
|
|
9
|
-
it 'returns a file list' do
|
|
10
|
-
expect( subject ).to be_a(Uploadcare::Api::FileList)
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
it 'stores options in a file list object' do
|
|
14
|
-
expect( subject.options ).to eq({limit: 1})
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
describe 'validation' do
|
|
18
|
-
it 'passes validation when no options given' do
|
|
19
|
-
expect{ api.file_list }.not_to raise_error
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
it "validates that options don't have unsupported keys" do
|
|
23
|
-
expect{ api.file_list(unknown: 1) }.to raise_error(ArgumentError)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
it 'validates that :limit is an integer from 1 to 1000' do
|
|
27
|
-
expect{ api.file_list(limit: 1) }.not_to raise_error
|
|
28
|
-
expect{ api.file_list(limit: 395) }.not_to raise_error
|
|
29
|
-
expect{ api.file_list(limit: 1000) }.not_to raise_error
|
|
30
|
-
|
|
31
|
-
expect{ api.file_list(limit: 1.0) }.to raise_error(ArgumentError)
|
|
32
|
-
expect{ api.file_list(limit: -1) }.to raise_error(ArgumentError)
|
|
33
|
-
expect{ api.file_list(limit: 0) }.to raise_error(ArgumentError)
|
|
34
|
-
expect{ api.file_list(limit: 1001) }.to raise_error(ArgumentError)
|
|
35
|
-
expect{ api.file_list(limit: false) }.to raise_error(ArgumentError)
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
it 'validates that :stored is a boolean' do
|
|
39
|
-
expect{ api.file_list(stored: true) }.not_to raise_error
|
|
40
|
-
expect{ api.file_list(stored: false) }.not_to raise_error
|
|
41
|
-
|
|
42
|
-
expect{ api.file_list(stored: 'yes') }.to raise_error(ArgumentError)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
it 'validates that :removed is a boolean' do
|
|
46
|
-
expect{ api.file_list(removed: true) }.not_to raise_error
|
|
47
|
-
expect{ api.file_list(removed: false) }.not_to raise_error
|
|
48
|
-
|
|
49
|
-
expect{ api.file_list(removed: 'yes') }.to raise_error(ArgumentError)
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
valid_ordering = %w{size -size datetime_uploaded -datetime_uploaded}
|
|
53
|
-
it "validates that :ordering is in [#{valid_ordering.join(', ')}]" do
|
|
54
|
-
valid_ordering.each do |valid_value|
|
|
55
|
-
expect{ api.file_list(ordering: valid_value) }.not_to raise_error
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
expect{ api.file_list(ordering: 'yes') }.to raise_error(ArgumentError)
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
describe 'from' do
|
|
62
|
-
context 'when ordering is "size" or "-size"' do
|
|
63
|
-
let(:opts){ {ordering: ['size', '-size'].sample} }
|
|
64
|
-
|
|
65
|
-
it 'validates that :from is a non-negative integer' do
|
|
66
|
-
valid = [0, 100500]
|
|
67
|
-
valid.each do |value|
|
|
68
|
-
expect{ api.file_list(opts.merge(from: value)) }.not_to raise_error
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
invalid = [-1, 200.0, "string", false]
|
|
72
|
-
invalid.each do |value|
|
|
73
|
-
expect{ api.file_list(opts.merge(from: value)) }.to raise_error(ArgumentError)
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
context 'when ordering is "datetime_uploaded", "-datetime_uploaded" or nil' do
|
|
79
|
-
let(:opts){ {ordering: ['datetime_uploaded', '-datetime_uploaded', nil].sample} }
|
|
80
|
-
|
|
81
|
-
it 'validates that :from.to_s is a iso8601 string' do
|
|
82
|
-
valid = [DateTime.now, DateTime.now.iso8601, "2017-01-01T15"]
|
|
83
|
-
valid.each do |value|
|
|
84
|
-
expect{ api.file_list(opts.merge(from: value)) }.not_to raise_error
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
invalid = [Date.today, Time.now, DateTime.now.rfc2822, "2017-01-01", 123, false]
|
|
88
|
-
invalid.each do |value|
|
|
89
|
-
expect{ api.file_list(opts.merge(from: value)) }.to raise_error(ArgumentError)
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
|
-
end
|
|
95
|
-
end
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe Uploadcare::FileStorageApi do
|
|
4
|
-
let(:api){ API }
|
|
5
|
-
let(:file){ api.file_list(limit: 1).first || api.upload(IMAGE_URL) }
|
|
6
|
-
|
|
7
|
-
shared_examples 'batch action on files' do
|
|
8
|
-
let(:uuids) { ["dc2c175d-a3b5-4435-b4f4-fae77bbe5597", "cea319aa-6e17-4172-8722-8dd7c459a523"] }
|
|
9
|
-
let(:files) { uuids.map { |uuid| Uploadcare::Api::File.new(api, uuid) } }
|
|
10
|
-
let(:api_endpoint) { "/files/storage/" }
|
|
11
|
-
|
|
12
|
-
it 'accepts array of uuids' do
|
|
13
|
-
expect(api).to receive(http_method)
|
|
14
|
-
expect { subject.call(uuids) }.not_to raise_error
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
it 'accepts enumerable containing Uploadcare::Api::File objects' do
|
|
18
|
-
expect(api).to receive(http_method)
|
|
19
|
-
expect { subject.call(files) }.not_to raise_error
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
it 'converts Uploadcare::Api::File-s to uuids' do
|
|
23
|
-
expect(api).to receive(http_method).with(api_endpoint, uuids)
|
|
24
|
-
subject.call(files)
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
context 'when input contains something other than UUIDs or Uploadcare::Api::File-s' do
|
|
28
|
-
it 'raises ArgumentError' do
|
|
29
|
-
['not-an-uuid', nil, 1].each do |wrong_input_value|
|
|
30
|
-
expect { subject.call([wrong_input_value]) }.to raise_error(ArgumentError)
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
it 'raises ArgumentError if input size is grater then max batch size' do
|
|
36
|
-
stub_const("Uploadcare::FileStorageApi::MAX_BATCH_SIZE", 1)
|
|
37
|
-
expect { subject.call(uuids) }.to raise_error(ArgumentError)
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
describe '#store_files' do
|
|
42
|
-
let(:http_method) { :put }
|
|
43
|
-
subject { ->(objects) { api.store_files(objects) } }
|
|
44
|
-
|
|
45
|
-
it_behaves_like 'batch action on files'
|
|
46
|
-
|
|
47
|
-
describe 'integration test' do
|
|
48
|
-
before { file.tap { |f| wait_until_ready(f) }.delete if file.stored? }
|
|
49
|
-
subject(:store_files) { -> { api.store_files([file]) } }
|
|
50
|
-
|
|
51
|
-
it 'stores files with given uuids' do
|
|
52
|
-
is_expected.to change { file.load!.stored? }.from(false).to(true)
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
it 'returns the API response' do
|
|
56
|
-
expect(store_files.call).to include(
|
|
57
|
-
"status" => "ok",
|
|
58
|
-
"problems" => {},
|
|
59
|
-
"result" => [be_a(Hash)]
|
|
60
|
-
)
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
describe '#delete_files' do
|
|
66
|
-
let(:http_method) { :delete }
|
|
67
|
-
subject { ->(objects) { api.delete_files(objects) } }
|
|
68
|
-
|
|
69
|
-
it_behaves_like 'batch action on files'
|
|
70
|
-
|
|
71
|
-
describe 'integration test' do
|
|
72
|
-
before { file.store if file.deleted? }
|
|
73
|
-
subject(:delete_files) { -> { api.delete_files([file]) } }
|
|
74
|
-
|
|
75
|
-
it 'deletes files with given uuids' do
|
|
76
|
-
is_expected.to change { file.load!.deleted? }.from(false).to(true)
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
it 'returns the API response' do
|
|
80
|
-
expect(delete_files.call).to include(
|
|
81
|
-
"status" => "ok",
|
|
82
|
-
"problems" => {},
|
|
83
|
-
"result" => [be_a(Hash)]
|
|
84
|
-
)
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
end
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe Uploadcare::GroupListApi do
|
|
4
|
-
let(:api){ API }
|
|
5
|
-
subject{ api.group_list(limit: 1) }
|
|
6
|
-
|
|
7
|
-
before(:each){ allow(api).to receive(:get){ {'results' => []} } }
|
|
8
|
-
|
|
9
|
-
it 'returns a group list' do
|
|
10
|
-
expect( subject ).to be_a(Uploadcare::Api::GroupList)
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
it 'stores options in a group list object' do
|
|
14
|
-
expect( subject.options ).to eq({limit: 1})
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
describe 'validation' do
|
|
18
|
-
it 'passes validation when no options given' do
|
|
19
|
-
expect{ api.group_list }.not_to raise_error
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
it "validates that options don't have unsupported keys" do
|
|
23
|
-
expect{ api.group_list(unknown: 1) }.to raise_error(ArgumentError)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
it 'validates that :limit is an integer from 1 to 1000' do
|
|
27
|
-
[1, 359, 1000].each do |v|
|
|
28
|
-
expect{ api.group_list(limit: v) }.not_to raise_error
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
[1.0, -1, 0, 1001, false].each do |v|
|
|
32
|
-
expect{ api.group_list(limit: v) }.to raise_error(ArgumentError)
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
valid_ordering = %w{datetime_created -datetime_created}
|
|
37
|
-
it "validates that :ordering is in [#{valid_ordering.join(', ')}]" do
|
|
38
|
-
valid_ordering.each do |valid_value|
|
|
39
|
-
expect{ api.group_list(ordering: valid_value) }.not_to raise_error
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
expect{ api.group_list(ordering: 'yes') }.to raise_error(ArgumentError)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
describe 'from' do
|
|
46
|
-
it 'validates that :from.to_s is a iso8601 string' do
|
|
47
|
-
valid = [DateTime.now, DateTime.now.iso8601, "2017-01-01T15"]
|
|
48
|
-
valid.each do |value|
|
|
49
|
-
expect{ api.group_list(from: value) }.not_to raise_error
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
invalid = [Date.today, Time.now, DateTime.now.rfc2822, "2017-01-01", 123, false]
|
|
53
|
-
invalid.each do |value|
|
|
54
|
-
expect{ api.group_list(from: value) }.to raise_error(ArgumentError)
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
data/spec/api/raw_api_spec.rb
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'uri'
|
|
3
|
-
require 'socket'
|
|
4
|
-
|
|
5
|
-
describe Uploadcare::Api do
|
|
6
|
-
subject(:api) { Uploadcare::Api.new(CONFIG) }
|
|
7
|
-
|
|
8
|
-
it "should initialize api" do
|
|
9
|
-
is_expected.to be_an_instance_of(Uploadcare::Api)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
it 'should respond to request methods' do
|
|
13
|
-
is_expected.to respond_to :request
|
|
14
|
-
is_expected.to respond_to :get
|
|
15
|
-
is_expected.to respond_to :post
|
|
16
|
-
is_expected.to respond_to :put
|
|
17
|
-
is_expected.to respond_to :delete
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
context 'when performing requests' do
|
|
21
|
-
subject(:request) { api.request }
|
|
22
|
-
|
|
23
|
-
it { is_expected.to be_a Hash }
|
|
24
|
-
end
|
|
25
|
-
end
|