uploadcare-ruby 1.2.2 → 2.0.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 +5 -5
- data/.gitignore +1 -1
- data/.rspec +1 -0
- data/.travis.yml +19 -5
- data/CHANGELOG.md +12 -30
- data/README.md +149 -72
- data/Rakefile +1 -1
- data/UPGRADE_NOTES.md +36 -0
- data/lib/uploadcare.rb +16 -22
- data/lib/uploadcare/api.rb +3 -1
- data/lib/uploadcare/api/file_list_api.rb +15 -4
- data/lib/uploadcare/api/file_storage_api.rb +34 -0
- data/lib/uploadcare/api/group_list_api.rb +13 -4
- data/lib/uploadcare/api/raw_api.rb +10 -16
- data/lib/uploadcare/api/uploading_api.rb +45 -84
- data/lib/uploadcare/api/uploading_api/upload_params.rb +72 -0
- data/lib/uploadcare/api/validators/file_list_options_validator.rb +73 -0
- data/lib/uploadcare/api/validators/group_list_options_validator.rb +49 -0
- data/lib/uploadcare/resources/file_list.rb +6 -33
- data/lib/uploadcare/resources/group_list.rb +6 -23
- data/lib/uploadcare/resources/resource_list.rb +83 -0
- data/lib/uploadcare/rest/connections/api_connection.rb +25 -3
- data/lib/uploadcare/rest/connections/upload_connection.rb +3 -2
- data/lib/uploadcare/version.rb +1 -1
- data/spec/api/file_list_api_spec.rb +95 -0
- data/spec/api/file_storage_api_spec.rb +88 -0
- data/spec/api/group_list_api_spec.rb +59 -0
- data/spec/api/raw_api_spec.rb +12 -12
- data/spec/api/uploading_api/upload_params_spec.rb +99 -0
- data/spec/api/uploading_api_spec.rb +59 -0
- data/spec/resources/file_list_spec.rb +13 -52
- data/spec/resources/file_spec.rb +6 -3
- data/spec/resources/group_list_spec.rb +15 -20
- data/spec/rest/api_connection_spec.rb +1 -1
- data/spec/shared/resource_list.rb +188 -0
- data/spec/spec_helper.rb +11 -1
- data/spec/uploadcare_spec.rb +9 -32
- data/spec/utils/parser_spec.rb +34 -36
- data/uploadcare-ruby.gemspec +7 -6
- metadata +52 -37
- data/lib/uploadcare/utils/user_agent.rb +0 -44
- data/spec/uploading/uploading_multiple_spec.rb +0 -43
- data/spec/uploading/uploading_spec.rb +0 -40
- data/spec/utils/user_agent_spec.rb +0 -46
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 2951151a5b47adb4e4dab2c8b3dcd225aacd9f1c
|
4
|
+
data.tar.gz: 0c24efc39d8da2550ae26a3f129faf31326f1c6f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b26a5b79dec7109fdb14c80fe9335d29aff594fa98942ce99e361936fba03a535a3b055667ac91cd49e7eb6068440634472f24ef5a9cc53608ba0195c2bae906
|
7
|
+
data.tar.gz: 65ee759c45a3122b551ff6fcdc237751a8b1252663d3cd360d54041e68fcc5a6a95d873c956ce351a4d24cd20634dcc9056e72da97f2e2831b4ade6a9abd6984
|
data/.gitignore
CHANGED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/.travis.yml
CHANGED
@@ -2,11 +2,25 @@ language: ruby
|
|
2
2
|
|
3
3
|
rvm:
|
4
4
|
- 1.9.3
|
5
|
-
- 2.0
|
6
|
-
- 2.1
|
7
|
-
- 2.2
|
8
|
-
- 2.3
|
9
|
-
- 2.4
|
5
|
+
- 2.0
|
6
|
+
- 2.1
|
7
|
+
- 2.2
|
8
|
+
- 2.3
|
9
|
+
- 2.4
|
10
|
+
- ruby-head
|
11
|
+
|
12
|
+
jobs:
|
13
|
+
include:
|
14
|
+
- stage: style checks
|
15
|
+
rvm: 2.4
|
16
|
+
before_install:
|
17
|
+
- gem install rubocop
|
18
|
+
script:
|
19
|
+
- rubocop
|
20
|
+
|
21
|
+
allow_failures:
|
22
|
+
- stage: style checks
|
23
|
+
- rvm: ruby-head
|
10
24
|
|
11
25
|
before_install:
|
12
26
|
- gem update bundler
|
data/CHANGELOG.md
CHANGED
@@ -1,41 +1,23 @@
|
|
1
1
|
# Changelog
|
2
|
-
All notable changes to this project will be documented in this file.
|
3
2
|
|
4
|
-
|
5
|
-
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
3
|
+
### 2.0.0, 26.09.2017
|
6
4
|
|
7
|
-
|
5
|
+
- There are **breaking** changes in this release, please read [upgrade notes](UPGRADE_NOTES.md#v1---v2)
|
6
|
+
- Added support for `store` flag in [Upload API](https://uploadcare.com/documentation/upload/) methods
|
7
|
+
- Upgraded to REST API v0.5
|
8
|
+
- All POST/PUT/DELETE params are now being sent as JSON instead of being form-encoded
|
9
|
+
- Added methods to store/delete multiple files at once: `Uploadcare::Api#store_files` & `Uploadcare::Api#delete_files`
|
10
|
+
- Changed pagination implementation for files and groups
|
8
11
|
|
9
|
-
###
|
10
|
-
- Show Uploadcare::USER_AGENT deprecation warning only when the constant is being used
|
12
|
+
### 1.1.0, 21.03.2017
|
11
13
|
|
12
|
-
|
13
|
-
|
14
|
-
### Changed
|
15
|
-
- Allow user to override User-Agent header
|
16
|
-
- User-Agent format reports gem name, version and environment
|
17
|
-
|
18
|
-
|
19
|
-
## 1.1.0 - 2017-03-21
|
20
|
-
|
21
|
-
### Added
|
14
|
+
- Deprecated `Uploadcare::Api::File#copy` in favor of `#internal_copy` and `#external_copy`.
|
22
15
|
- Added to new methods to `Uploadcare::Api::File`, `#internal_copy` and `#external_copy`.
|
23
16
|
- Added support of [secure authorization](https://uploadcare.com/documentation/rest/#request) for REST API. It is now used by default (can be overriden in config)
|
24
|
-
|
25
|
-
### Fixed
|
26
17
|
- Fixed middleware names that could break other gems ([#13](https://github.com/uploadcare/uploadcare-ruby/issues/13)).
|
27
18
|
|
28
|
-
### Deprecated
|
29
|
-
- `Uploadcare::Api::File#copy` in favor of `#internal_copy` and `#external_copy`.
|
30
|
-
|
31
|
-
|
32
|
-
## 1.0.6 - 2017-01-30
|
33
|
-
|
34
|
-
### Added
|
35
|
-
- Ruby version and public API key sent via User-Agent header (can be overriden in config)
|
36
|
-
|
37
|
-
### Fixed
|
38
|
-
- Incorrect dependencies
|
39
19
|
|
20
|
+
### 1.0.6, 30.01.2017
|
40
21
|
|
41
|
-
|
22
|
+
- Fixed incorrect dependencies
|
23
|
+
- Added ruby version and public API key to User-Agent header (can be overriden in config)
|
data/README.md
CHANGED
@@ -44,8 +44,9 @@ Here's how the default settings look like:
|
|
44
44
|
upload_url_base: 'https://upload.uploadcare.com',
|
45
45
|
api_url_base: 'https://api.uploadcare.com',
|
46
46
|
static_url_base: 'https://ucarecdn.com',
|
47
|
-
api_version: '0.
|
47
|
+
api_version: '0.5',
|
48
48
|
cache_files: true,
|
49
|
+
autostore: :auto,
|
49
50
|
auth_scheme: :secure
|
50
51
|
}
|
51
52
|
```
|
@@ -58,12 +59,19 @@ consider creating an Uploadcare account. Check out
|
|
58
59
|
article to get up an running in minutes.
|
59
60
|
|
60
61
|
Please note, in order to use [Upload API](https://uploadcare.com/documentation/upload/)
|
61
|
-
you will only need the public key alone. However, using
|
62
|
+
you will only need the public key alone. However, using
|
62
63
|
[REST API](https://uploadcare.com/documentation/rest/) requires you to
|
63
|
-
use both public and private keys for authentication.
|
64
|
+
use both public and private keys for authentication.
|
64
65
|
While “private key” is a common way to name a key from an
|
65
66
|
authentication key pair, the actual thing for our `auth-param` is `secret_key`.
|
66
67
|
|
68
|
+
`:autostore` option allows you to set the default storage
|
69
|
+
behaviour upon uploads. For more info see [`store` flag][uploads from url] for
|
70
|
+
uploads via URL and [`UPLOADCARE_STORE` flag][in-body file uploads] for file uploads
|
71
|
+
|
72
|
+
[in-body file uploads]: https://uploadcare.com/documentation/upload/#upload-body
|
73
|
+
[uploads from url]: https://uploadcare.com/documentation/upload/#from-url
|
74
|
+
|
67
75
|
## Usage
|
68
76
|
|
69
77
|
This section contains practical usage examples. Please note,
|
@@ -98,7 +106,7 @@ file you've just uploaded:
|
|
98
106
|
@uc_file.uuid
|
99
107
|
# => "dc99200d-9bd6-4b43-bfa9-aa7bfaefca40"
|
100
108
|
|
101
|
-
#
|
109
|
+
# URL for the file, can be used with your website or app right away
|
102
110
|
@uc_file.cdn_url
|
103
111
|
# => "https://ucarecdn.com/dc99200d-9bd6-4b43-bfa9-aa7bfaefca40/"
|
104
112
|
```
|
@@ -126,11 +134,11 @@ and you're good to go.
|
|
126
134
|
|
127
135
|
```ruby
|
128
136
|
# the smart upload
|
129
|
-
@file = @api.upload "http://your.awesome/avatar.jpg"
|
137
|
+
@file = @api.upload "http://your.awesome/avatar.jpg"
|
130
138
|
# => #<Uploadcare::Api::File ...
|
131
139
|
|
132
140
|
# use this one if you want to explicitly upload from URL
|
133
|
-
@file = @api.upload_from_url "http://your.awesome/avatar.jpg"
|
141
|
+
@file = @api.upload_from_url "http://your.awesome/avatar.jpg"
|
134
142
|
# => #<Uploadcare::Api::File ...
|
135
143
|
```
|
136
144
|
Keep in mind that providing invalid URL
|
@@ -163,6 +171,15 @@ You might also want to request more info about a file using `load_data`.
|
|
163
171
|
# => #<Uploadcare::Api::File uuid="96cdc400-adc3-435b-9c94-04cd87633fbb", original_file_url="https://ucarecdn.com/96cdc400-adc3-435b-9c94-04cd87633fbb/samuelzeller118195.jpg", image_info={"width"=>4896, "geo_location"=>nil, "datetime_original"=>nil, "height"=>3264}, ....>
|
164
172
|
```
|
165
173
|
|
174
|
+
### Upload options
|
175
|
+
|
176
|
+
You can override global [`:autostore`](#initialization) option for each upload request:
|
177
|
+
|
178
|
+
```ruby
|
179
|
+
@api.upload(files, store: true)
|
180
|
+
@api.upload_from_url(url, store: :auto)
|
181
|
+
```
|
182
|
+
|
166
183
|
### `File` object
|
167
184
|
|
168
185
|
Now that we've already outlined using arrays of `File` instances
|
@@ -238,7 +255,7 @@ This is how you can use those to create `File` objects:
|
|
238
255
|
|
239
256
|
### Operations
|
240
257
|
|
241
|
-
Another way to
|
258
|
+
Another way to manipulate files on CDN is through operations.
|
242
259
|
This is particularly useful for images.
|
243
260
|
We've got on-the-fly crop, resize, rotation, format conversions, and
|
244
261
|
[more](https://uploadcare.com/documentation/cdn/).
|
@@ -356,7 +373,7 @@ We call it “external copy” and here's the usage example:
|
|
356
373
|
```ruby
|
357
374
|
@uc_file.external_copy('my_custom_storage_name')
|
358
375
|
|
359
|
-
# =>
|
376
|
+
# =>
|
360
377
|
{
|
361
378
|
"type"=>"url",
|
362
379
|
"result"=>"s3://my_bucket_name/c969be02-9925-4a7e-aa6d-b0730368791c/view.png"
|
@@ -383,7 +400,120 @@ There's also an optional second argument — options hash. The available options
|
|
383
400
|
You might want to learn more about
|
384
401
|
[storage options](https://uploadcare.com/documentation/storages/) or
|
385
402
|
[copying files](https://uploadcare.com/documentation/rest/#files-post)
|
386
|
-
with Uploadcare.
|
403
|
+
with Uploadcare.
|
404
|
+
|
405
|
+
|
406
|
+
### File lists
|
407
|
+
|
408
|
+
`Uploadcare::Api::FileList` represents the whole collection of files (or it's subset) and privides a way to iterate through it, making pagination transparent. FileList objects can be created using `Uploadcare::Api#file_list` method.
|
409
|
+
|
410
|
+
```ruby
|
411
|
+
@list = @api.file_list # => instance of Uploadcare::Api::FileList
|
412
|
+
```
|
413
|
+
|
414
|
+
This method accepts some options to controll which files should be fetched and how they should be fetched:
|
415
|
+
|
416
|
+
- **:limit** - Controls page size. Accepts values from 1 to 1000, defaults to 100.
|
417
|
+
- **:stored** - Can be either `true` or `false`. When true, file list will contain only stored files. When false - only not stored.
|
418
|
+
- **:removed** - Can be either `true` or `false`. When true, file list will contain only removed files. When false - all except removed. Defaults to false.
|
419
|
+
- **:ordering** - Controls the order of returned files. Available values: `datetime_updated`, `-datetime_updated`, `size`, `-size`. Defaults to `datetime_uploaded`. More info can be found [here](https://uploadcare.com/documentation/rest/#file-files)
|
420
|
+
- **:from** - Specifies the starting point for a collection. Resulting collection will contain files from the given value and to the end in a direction set by an **ordering** option. When files are ordered by datetime_updated in any direction, accepts either a `DateTime` object or an ISO 8601 string. When files are ordered by size, acepts non-negative integers (size in bytes). More info can be found [here](https://uploadcare.com/documentation/rest/#file-files)
|
421
|
+
|
422
|
+
Options used to create a file list can be accessed through `#options` method. Note that, once set, they don't affect file fetching process anymore and are stored just for your convenience. That is why they are frozen.
|
423
|
+
|
424
|
+
```ruby
|
425
|
+
options = {
|
426
|
+
limit: 10,
|
427
|
+
stored: true,
|
428
|
+
ordering: '-datetime_uploaded',
|
429
|
+
from: "2017-01-01T00:00:00",
|
430
|
+
}
|
431
|
+
@list = @api.file_list(options)
|
432
|
+
@list.options # => same as options hash above, but frozen
|
433
|
+
```
|
434
|
+
|
435
|
+
`Uploadcare::Api::FileList` implements Enumerable interface and holds a collection of `Uploadcare::Api::File` objects, as well as some meta information.
|
436
|
+
|
437
|
+
```ruby
|
438
|
+
@list = @api.file_list
|
439
|
+
@list.total # => 1977
|
440
|
+
@list.meta # => {
|
441
|
+
# "next"=> "https://api.uploadcare.com/files/?from=2017-03-09T10%3A30%3A01.877590%2B00%3A00&offset=0",
|
442
|
+
# "previous"=>nil,
|
443
|
+
# "total"=>1977,
|
444
|
+
# "per_page"=>100
|
445
|
+
# }
|
446
|
+
|
447
|
+
# Enumerable interface
|
448
|
+
@list.first(5) # => array of 5 x Uploadcare::Api::File
|
449
|
+
@list.each{|file| puts file.original_filename}
|
450
|
+
@list.map{|file| file.uuid}
|
451
|
+
@list.reduce(0){|overall_size, file| overall_size += file.size}
|
452
|
+
# ...
|
453
|
+
```
|
454
|
+
|
455
|
+
On the inside, `FileList` loada files page by page. First page is loaded when you call `Uploadcare::Api#file_list` and subsequent pages are being loaded when needed. The size of pages is controlled by a `:limit` option.
|
456
|
+
|
457
|
+
Currently loaded files are available through `FileList#objects`. `FileList#loaded` method returns the number of currently loaded files.
|
458
|
+
|
459
|
+
```ruby
|
460
|
+
@list = @api.file_list(limit: 5) # will load first 5 files
|
461
|
+
@list.loaded # => 5
|
462
|
+
@list.fully_loaded? # => false
|
463
|
+
|
464
|
+
@list.objects # => array of 5 x Uploadcare::Api::File
|
465
|
+
@list.objects[4] # => #<Uploadcare::Api::File ...>
|
466
|
+
@list.objects[5] # => nil (since 6th file is not yet loaded)
|
467
|
+
|
468
|
+
@list[4] # won't load anything, because 5 files are already loaded
|
469
|
+
@list[5] # will load the next page
|
470
|
+
@list.loaded # => 10
|
471
|
+
|
472
|
+
# Note that the example below will load all the files left, page by page,
|
473
|
+
# and return the count only when they all will be loaded
|
474
|
+
@list.count # => 132
|
475
|
+
@list.fully_loaded? # => true
|
476
|
+
```
|
477
|
+
|
478
|
+
Loaded files are preserved when `break` statement or an exception occures inside a block provided to #each, #map, etc.
|
479
|
+
|
480
|
+
```ruby
|
481
|
+
@list = @api.file_list(limit: 10)
|
482
|
+
@list.loaded # => 10
|
483
|
+
|
484
|
+
i = 0
|
485
|
+
@list.map do |file|
|
486
|
+
raise if i >= 19
|
487
|
+
i += 1
|
488
|
+
file.uuid
|
489
|
+
end # => RuntimeError
|
490
|
+
|
491
|
+
@list.loaded # => 20
|
492
|
+
```
|
493
|
+
|
494
|
+
|
495
|
+
### Store / delete multiple files at once
|
496
|
+
|
497
|
+
There are two methods to do so: `Uploadcare::Api#store_files` and
|
498
|
+
`Uploadcare::Api#delete_files`. Both of them accept a list of either
|
499
|
+
UUIDs or `Uploadcare::Api::File`s:
|
500
|
+
|
501
|
+
```ruby
|
502
|
+
uuids_to_store = ['f5c477e0-22af-469d-859a-712e14e14361', 'ec72c6eb-5ea8-4057-a009-52ffffb27c94']
|
503
|
+
@api.store_files(uuids_to_store)
|
504
|
+
# => {'status' => 'ok', 'problems' => {}, 'result' => [{...}, {...}]}
|
505
|
+
|
506
|
+
old_files = @api.file_list(stored: true, ordering: '-datetime_uploaded', from: "2015-01-01T00:00:00")
|
507
|
+
old_files.each_slice(100) do |batch|
|
508
|
+
response = @api.delete_files(batch)
|
509
|
+
# Do something with response if you need to
|
510
|
+
end
|
511
|
+
```
|
512
|
+
|
513
|
+
Our API supports up to 100 files per request. Calling `#store_files` or
|
514
|
+
`#delete_files` with more than 100 files at once will cause an ArgumentError.
|
515
|
+
|
516
|
+
For more details see our [documentation on batch file storage/deletion](https://uploadcare.com/documentation/rest/#files-storage)
|
387
517
|
|
388
518
|
### `Group` object
|
389
519
|
|
@@ -433,75 +563,22 @@ are loaded by default.
|
|
433
563
|
Check out our docs to learn more about
|
434
564
|
[groups](https://uploadcare.com/documentation/rest/#group).
|
435
565
|
|
436
|
-
### File lists and pagination
|
437
|
-
|
438
|
-
File list is a paginated collection of files. Such lists are created
|
439
|
-
to better represent the contents of your project.
|
440
|
-
For this gem, a file list would be a single page containing
|
441
|
-
20 files (you can override the number).
|
442
|
-
There also are methods for navigating through pages.
|
443
|
-
You can find more info about pagination
|
444
|
-
[here](https://uploadcare.com/documentation/rest/#pagination).
|
445
|
-
|
446
|
-
```ruby
|
447
|
-
@list = @api.file_list 1 # page number, 1 is the default
|
448
|
-
# => #<Uploadcare::Api::FileList ....
|
449
|
-
|
450
|
-
|
451
|
-
# method :results returns an array of files
|
452
|
-
@list.results
|
453
|
-
# => [#<Uploadcare::Api::File uuid="24626d2f-3f23-4464-b190-37115ce7742a" ...>,
|
454
|
-
# ... 20 of them ...
|
455
|
-
# #<Uploadcare::Api::File uuid="7bb9efa4-05c0-4f36-b0ef-11a4221867f6" ...>]
|
456
|
-
|
457
566
|
|
458
|
-
|
459
|
-
@list.results[1].is_loaded?
|
460
|
-
# => true
|
567
|
+
### Group lists
|
461
568
|
|
462
|
-
|
463
|
-
# we've also added some shortcuts
|
464
|
-
@list.to_a
|
465
|
-
# => [#<Uploadcare::Api::File uuid="24626d2f-3f23-4464-b190-37115ce7742a" ...>,
|
466
|
-
# ... 20 of them ...
|
467
|
-
# #<Uploadcare::Api::File uuid="7bb9efa4-05c0-4f36-b0ef-11a4221867f6" ...>]
|
468
|
-
|
469
|
-
@list[3]
|
470
|
-
# => #<Uploadcare::Api::File ....
|
471
|
-
```
|
472
|
-
|
473
|
-
Here's how we handle navigating through pages:
|
569
|
+
`Uploadcare::Api::GroupList` represents a group collection. It works in a same way as `Uploadcare::Api::FileList` does, but with groups.
|
474
570
|
|
475
571
|
```ruby
|
476
|
-
@list = @api.
|
477
|
-
|
478
|
-
|
479
|
-
# => #<Uploadcare::Api::FileList page=4 ....
|
480
|
-
|
481
|
-
@list.previous_page
|
482
|
-
# => #<Uploadcare::Api::FileList page=2 ....
|
483
|
-
|
484
|
-
@list.go_to 5
|
485
|
-
# => #<Uploadcare::Api::FileList page=5 ....
|
486
|
-
|
487
|
-
# of course, you can go with any of the methods
|
488
|
-
# described in our API docs
|
489
|
-
# total pages
|
490
|
-
@list.pages
|
491
|
-
# => 16
|
572
|
+
@list = @api.group_list(limit: 10) # => instance of Uploadcare::Api::GroupList
|
573
|
+
@list[0] # => instance of Uploadcare::Api::Group
|
574
|
+
```
|
492
575
|
|
493
|
-
|
494
|
-
@list.page
|
495
|
-
# => 3
|
576
|
+
The only thing that differs is an available options list:
|
496
577
|
|
497
|
-
|
498
|
-
|
499
|
-
|
578
|
+
- **:limit** - Controls page size. Accepts values from 1 to 1000, defaults to 100.
|
579
|
+
- **:ordering** - Controls the order of returned files. Available values: `datetime_created`, `-datetime_created`. Defaults to `datetime_created`. More info can be found [here](https://uploadcare.com/documentation/rest/#group-groups)
|
580
|
+
- **:from** - Specifies the starting point for a collection. Resulting collection will contain files from the given value and to the end in a direction set by an **ordering** option. Accepts either a `DateTime` object or an ISO 8601 string. More info can be found [here](https://uploadcare.com/documentation/rest/#group-groups)
|
500
581
|
|
501
|
-
# total files in a project
|
502
|
-
@list.total
|
503
|
-
# => 308
|
504
|
-
```
|
505
582
|
|
506
583
|
### `Project` object
|
507
584
|
|
@@ -581,7 +658,7 @@ rescue Uploadcare::Error::RequestError::NotFound => e
|
|
581
658
|
end
|
582
659
|
```
|
583
660
|
|
584
|
-
Handling any request error (covers all 4xx status codes):
|
661
|
+
Handling any request error (covers all 4xx status codes):
|
585
662
|
|
586
663
|
```ruby
|
587
664
|
begin
|
data/Rakefile
CHANGED
data/UPGRADE_NOTES.md
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# Upgrade notes
|
2
|
+
|
3
|
+
## v1.* -> v2.*
|
4
|
+
|
5
|
+
In 2.* release we've moved to [REST API v0.5][uploadcare-changelog-rest-api-v05] which introduces a new pagination for `/files/` and `/groups/` endpoints, so `Uploadcare::Api::FileList` and `Uploadcare::Api::GroupList` were completely reimplemented.
|
6
|
+
|
7
|
+
Previously, the file/group list API was:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
# creating
|
11
|
+
list = api.file_list # => #<Uploadcare::Api::FileList page=1 ...>
|
12
|
+
|
13
|
+
# accessing files/groups
|
14
|
+
list.results # => [#<Uploadcare::Api::File>, ...]
|
15
|
+
|
16
|
+
# pagination
|
17
|
+
list.next_page # => #<Uploadcare::Api::FileList page=2 ...>
|
18
|
+
list.previous_page # => #<Uploadcare::Api::FileList page=1 ...>
|
19
|
+
list.go_to 5 # => #<Uploadcare::Api::FileList page=5 ...>
|
20
|
+
|
21
|
+
# metadata
|
22
|
+
list.pages # => 15
|
23
|
+
list.page # => 5
|
24
|
+
list.total # => 308 (files in a project)
|
25
|
+
```
|
26
|
+
|
27
|
+
It **won't work anymore**. For the details on the new file/group lists interface see [readme][readme]
|
28
|
+
|
29
|
+
The core features of the new file/group list API are:
|
30
|
+
|
31
|
+
- transparent pagination via enumerable interface
|
32
|
+
- loading objects on demand
|
33
|
+
- ordering, filtering and slicing
|
34
|
+
|
35
|
+
[uploadcare-changelog-rest-api-v05]: https://uploadcare.com/changelog/tag/rest-api#rest-api-version-05
|
36
|
+
[readme]: https://github.com/uploadcare/uploadcare-ruby#file-lists
|