From d1a4b9c6bf40df7d881a8284c09c9017d9ec220a Mon Sep 17 00:00:00 2001 From: Vipul A M Date: Sat, 1 Jun 2024 22:18:18 +0530 Subject: [PATCH 1/2] For added method to get the possible document conversion formats. --- CHANGELOG.md | 4 ++ .../rails/api/rest/conversion_api.rb | 6 ++ ...i_get_document_conversion_formats_info.yml | 59 +++++++++++++++++++ .../rails/api/rest/conversion_api_spec.rb | 21 ++++++- uploadcare-rails.gemspec | 2 +- 5 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 spec/fixtures/vcr_cassettes/conversion_api_get_document_conversion_formats_info.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index 9fd6f02f..6b1b6021 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file. The format is based now on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## Unreleased + +* For `Uploadcare::ConversionApi` added `get_document_conversion_formats_info` method to get the possible document conversion formats. + ## 3.4.2 — 2024-05-11 ### Added diff --git a/lib/uploadcare/rails/api/rest/conversion_api.rb b/lib/uploadcare/rails/api/rest/conversion_api.rb index 36e5961f..b4a8471c 100644 --- a/lib/uploadcare/rails/api/rest/conversion_api.rb +++ b/lib/uploadcare/rails/api/rest/conversion_api.rb @@ -21,6 +21,12 @@ def get_video_conversion_status(token) Uploadcare::VideoConverter.status(token) end + # Conversion formats info + # @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#tag/Conversion/operation/documentConvertInfo + def get_document_conversion_formats_info(uuid) + Uploadcare::DocumentConverter.info(uuid) + end + # Converts documents # @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#operation/documentConvert def convert_document(document_params, options = {}) diff --git a/spec/fixtures/vcr_cassettes/conversion_api_get_document_conversion_formats_info.yml b/spec/fixtures/vcr_cassettes/conversion_api_get_document_conversion_formats_info.yml new file mode 100644 index 00000000..be189e9b --- /dev/null +++ b/spec/fixtures/vcr_cassettes/conversion_api_get_document_conversion_formats_info.yml @@ -0,0 +1,59 @@ +--- +http_interactions: +- request: + method: get + uri: https://api.uploadcare.com/convert/document/b3b32bcb-9bd8-4ee2-a4df-95bcee96b47e/ + body: + encoding: ASCII-8BIT + string: '' + headers: + Content-Type: + - application/json + Accept: + - application/vnd.uploadcare-v0.7+json + User-Agent: + - UploadcareRuby/4.4.1/ (Ruby/3.3.0) + Date: + - Wed, 29 May 2024 14:11:11 GMT + Authorization: + - Uploadcare :4cf818d83c516d3bfb55f9b95aab2feeda4028af + Connection: + - close + Host: + - api.uploadcare.com + response: + status: + code: 200 + message: OK + headers: + Date: + - Wed, 29 May 2024 14:11:12 GMT + Content-Type: + - application/vnd.uploadcare-v0.7+json + Content-Length: + - '280' + Connection: + - close + Server: + - nginx + Access-Control-Allow-Origin: + - https://uploadcare.com + Vary: + - Accept + Allow: + - GET, HEAD, OPTIONS + X-Xss-Protection: + - 1; mode=block + X-Content-Type-Options: + - nosniff + X-Uploadcare-Request-Id: + - fdba08c5-f0dc-4b91-a3e0-48ff0255c367 + X-Frame-Options: + - SAMEORIGIN + X-Robots-Tag: + - noindex, nofollow, nosnippet, noarchive + body: + encoding: ASCII-8BIT + string: '{"error":null,"format":{"name":"jpg","conversion_formats":[{"name":"avif"},{"name":"bmp"},{"name":"gif"},{"name":"ico"},{"name":"pcx"},{"name":"pdf"},{"name":"png"},{"name":"ps"},{"name":"svg"},{"name":"tga"},{"name":"thumbnail"},{"name":"tiff"},{"name":"wbmp"},{"name":"webp"}]}}' + recorded_at: Wed, 29 May 2024 14:11:12 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/uploadcare/rails/api/rest/conversion_api_spec.rb b/spec/uploadcare/rails/api/rest/conversion_api_spec.rb index 653a0314..f231fc30 100644 --- a/spec/uploadcare/rails/api/rest/conversion_api_spec.rb +++ b/spec/uploadcare/rails/api/rest/conversion_api_spec.rb @@ -14,7 +14,13 @@ module Rest context 'when checking methods' do it 'responds to expected REST methods' do - %i[convert_video get_video_conversion_status convert_document get_document_conversion_status].each do |m| + %i[ + convert_video + get_video_conversion_status + convert_document + get_document_conversion_status + get_document_conversion_formats_info + ].each do |m| expect(subject).to respond_to(m) end end @@ -88,6 +94,19 @@ module Rest expect(response.success[:error]).to be_nil end end + + it 'gets document conversion formats info' do + VCR.use_cassette('conversion_api_get_document_conversion_formats_info') do + uuid = 'b3b32bcb-9bd8-4ee2-a4df-95bcee96b47e' + response = subject.get_document_conversion_formats_info(uuid) + expect(response).to be_success + expect(response.success[:error]).to be_nil + expect(response.success[:format][:name]).to be_a(String) + conversion_formats = response.success[:format][:conversion_formats] + expect(conversion_formats).to be_a(Array) + expect(conversion_formats.first[:name]).to be_a(String) + end + end end context 'and when request is failed' do diff --git a/uploadcare-rails.gemspec b/uploadcare-rails.gemspec index d8523e01..126baadb 100644 --- a/uploadcare-rails.gemspec +++ b/uploadcare-rails.gemspec @@ -44,5 +44,5 @@ Gem::Specification.new do |gem| gem.version = Uploadcare::Rails::VERSION gem.add_dependency 'rails', '>= 6' - gem.add_dependency 'uploadcare-ruby', '>= 4.4.1' + gem.add_dependency 'uploadcare-ruby', '>= 4.4.2' end From 8d59a2ce1d9a292ef6ee267f3ecb181bf2fe3342 Mon Sep 17 00:00:00 2001 From: Vipul A M Date: Sat, 1 Jun 2024 22:22:25 +0530 Subject: [PATCH 2/2] Exclude Metrics/ModuleLength for specs --- .rubocop.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.rubocop.yml b/.rubocop.yml index a8b4377d..250e070a 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -34,3 +34,7 @@ Style/OpenStructUse: - 'spec/uploadcare/rails/active_record/mount_uploadcare_file_spec.rb' - 'spec/uploadcare/rails/active_record/mount_uploadcare_group_spec.rb' - 'spec/uploadcare/rails/objects/file_spec.rb' + +Metrics/ModuleLength: + Exclude: + - 'spec/**/*'