Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
6b7f9ed
Finalize v5 rewrite API and tests
vipulnsward Feb 8, 2026
9821a80
Fix cname cache scoping and tighten error handling
vipulnsward Feb 8, 2026
f22d44b
Address code review feedback on examples and resources
vipulnsward Feb 9, 2026
d496ae8
Adopt compact class syntax and qualify constants
vipulnsward Feb 9, 2026
6d51789
Update README title and remove outdated compatibility note
vipulnsward Feb 9, 2026
b36e40a
Trim README API reference section
vipulnsward Feb 9, 2026
ecbba8c
Address CodeRabbit review findings
vipulnsward Feb 9, 2026
376ad59
Harden file metadata paths and add coverage
vipulnsward Feb 9, 2026
8ff7ce6
Replace pending integration specs and satisfy rubocop
vipulnsward Feb 9, 2026
7dacd6b
Speed up multipart retry specs
vipulnsward Feb 9, 2026
3492470
Avoid regex stripping in Akamai HMAC key
vipulnsward Feb 9, 2026
1d9b3ea
Fix README API examples and headings
vipulnsward Feb 9, 2026
8194f31
Address review feedback on auth, conversion, and UUID handling
vipulnsward Feb 9, 2026
0d9dd47
Add specs for result and webhook behaviors
vipulnsward Feb 9, 2026
911aca0
Cover upload file info and conversion result handling
vipulnsward Feb 9, 2026
0ece524
Make result error message expectation Ruby-version agnostic
vipulnsward Feb 9, 2026
102144c
Redact uploadcare keys in VCR fixtures
vipulnsward Feb 9, 2026
c4da96e
Use HMAC-SHA256 for upload signature generation
vipulnsward Feb 9, 2026
34f014e
Exclude authenticator from Snyk code scan
vipulnsward Feb 9, 2026
576bafc
Adjust Snyk policy exclusions
vipulnsward Feb 9, 2026
3abc2e9
Fix review feedback, improve multi-account config, and harden VCR scr…
vipulnsward Feb 10, 2026
cd3ea32
Fix RuboCop offenses in VCR scrubber and parallel upload
vipulnsward Feb 10, 2026
ab77d89
Avoid hardcoded secrets in multi-account spec
vipulnsward Feb 10, 2026
5d9b19e
Scrub Authorization values in VCR fixtures
vipulnsward Feb 10, 2026
eb4538b
Fix verified README/examples flows and group/file metadata issues
vipulnsward Feb 19, 2026
b08811b
Fix result handling and multipart upload regressions
vipulnsward Mar 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Uploadcare API credentials
# Copy this file to .env and fill in your actual keys
# Get your keys from: https://app.uploadcare.com/projects/-/api-keys/

UPLOADCARE_PUBLIC_KEY=your_public_key_here
UPLOADCARE_SECRET_KEY=your_secret_key_here
14 changes: 5 additions & 9 deletions .github/workflows/ruby.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,12 @@ jobs:
strategy:
matrix:
ruby-version:
- 3.0
- 3.1
- 3.2
- 3.3
- 3.4
- 4.0

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
Expand All @@ -42,15 +40,13 @@ jobs:
strategy:
matrix:
ruby-version:
- 3.4
- 4.0
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby-version }}
bundler-cache: true
- name: Install Rubocop
run: gem install rubocop
- name: Check codestyle
run: rubocop
run: bundle exec rubocop
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,12 @@ Gemfile.lock
.ruby-version
project_files
*.gem
.vscode/
.DS_Store
.claude/
.kiro/
.agents/

# Environment variables (API keys)
.env
.env.local
139 changes: 132 additions & 7 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
plugins:
- rubocop-rspec

AllCops:
NewCops: enable
TargetRubyVersion: 3.0
TargetRubyVersion: 3.3
SuggestExtensions: false

Layout/LineLength:
Max: 120
Expand All @@ -10,31 +14,152 @@ Layout/LineLength:
Lint/IneffectiveAccessModifier:
Enabled: false

Style/HashTransformKeys:
Exclude:
- 'lib/uploadcare/entity/decorator/paginator.rb'
- 'lib/uploadcare/client/conversion/video_conversion_client.rb'
- 'lib/uploadcare/entity/file.rb'

Metrics/BlockLength:
Exclude:
- 'bin/'
- 'spec/**/*'
- 'uploadcare-ruby.gemspec'

Metrics/ClassLength:
Max: 100
Exclude:
- 'lib/uploadcare/clients/upload_client.rb' # Complex upload logic with 9 endpoints
- 'lib/uploadcare/clients/multipart_uploader_client.rb'
- 'lib/uploadcare/resources/file.rb' # Pre-existing file resource with many methods
- 'lib/uploadcare/uploader.rb' # Uploader module with multiple upload strategies

Metrics/ModuleLength:
Max: 100
Exclude:
- 'spec/**/*'
- 'lib/uploadcare/uploader.rb' # Uploader module with multiple upload strategies

Metrics/MethodLength:
Max: 20
Exclude:
- 'lib/uploadcare/clients/upload_client.rb' # Parallel upload requires coordination logic
- 'lib/uploadcare/clients/multipart_uploader_client.rb'
- 'lib/uploadcare/clients/uploader_client.rb'
- 'lib/uploadcare/uploader.rb' # Parallel upload coordination

Metrics/AbcSize:
Max: 17
Exclude:
- 'lib/uploadcare/clients/upload_client.rb' # Upload methods have multiple parameters and validations
- 'lib/uploadcare/clients/multipart_uploader_client.rb'
- 'lib/uploadcare/clients/uploader_client.rb'
- 'lib/uploadcare/uploader.rb' # Parallel upload coordination

Metrics/CyclomaticComplexity:
Max: 7
Exclude:
- 'lib/uploadcare/clients/upload_client.rb' # Upload logic has multiple conditional paths
- 'lib/uploadcare/clients/multipart_uploader_client.rb'
- 'lib/uploadcare/clients/uploader_client.rb'
- 'lib/uploadcare/uploader.rb' # Parallel upload coordination

Metrics/PerceivedComplexity:
Max: 8
Exclude:
- 'lib/uploadcare/clients/upload_client.rb' # Parallel upload coordination is inherently complex
- 'lib/uploadcare/clients/multipart_uploader_client.rb'
- 'lib/uploadcare/clients/uploader_client.rb'

Metrics/ParameterLists:
Exclude:
- 'lib/uploadcare/clients/rest_client.rb'
- 'lib/uploadcare/clients/upload_client.rb'

Style/Documentation:
Enabled: false

Style/ClassAndModuleChildren:
EnforcedStyle: compact

Style/OptionalBooleanParameter:
AllowedMethods: ['create']

Style/FrozenStringLiteralComment:
Exclude:
- 'api_examples/**/*'

Style/ArgumentsForwarding:
Enabled: false

RSpec/ContextWording:
Prefixes:
- when
- with
- without
- if
- unless
- for

RSpec/MultipleExpectations:
Enabled: false

RSpec/ExampleLength:
Enabled: false

RSpec/DescribedClass:
Enabled: false

RSpec/DescribeClass:
Enabled: false

RSpec/ExpectActual:
Enabled: false

RSpec/AnyInstance:
Enabled: false

RSpec/SpecFilePathFormat:
Enabled: false

RSpec/LeadingSubject:
Enabled: false

RSpec/EmptyLineAfterExample:
Enabled: false

RSpec/EmptyLineAfterFinalLet:
Enabled: false

RSpec/EmptyLineAfterExampleGroup:
Enabled: false

RSpec/MultipleMemoizedHelpers:
Enabled: false

RSpec/NestedGroups:
Enabled: false

RSpec/NamedSubject:
Enabled: false

RSpec/IteratedExpectation:
Enabled: false

RSpec/BeEq:
Enabled: false

RSpec/StubbedMock:
Enabled: false

RSpec/EmptyLineAfterHook:
Enabled: false

RSpec/MessageSpies:
Enabled: false

RSpec/VerifiedDoubles:
Enabled: false

RSpec/ReceiveMessages:
Enabled: false

RSpec/HookArgument:
Enabled: false

RSpec/ClassCheck:
Enabled: false
4 changes: 4 additions & 0 deletions .snyk
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
exclude:
code:
- lib/uploadcare/authenticator.rb
Loading
Loading