Skip to content
Open
Show file tree
Hide file tree
Changes from 35 commits
Commits
Show all changes
48 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
b73e840
Rewrite gem architecture per blueprint
vipulnsward Mar 16, 2026
357494b
Thorough multipart upload specs and fix Zeitwerk exception autoloading
vipulnsward Mar 16, 2026
80d7985
Tighten client boundaries and normalize upload IO
vipulnsward Mar 16, 2026
4c39848
Fix resource client resolution defaults
vipulnsward Mar 16, 2026
5de71c4
Tighten upload validation and conversion accessors
vipulnsward Mar 16, 2026
986fea0
Refresh API examples for endpoint coverage
vipulnsward Mar 16, 2026
bc6fea3
Refresh README and workflow examples
vipulnsward Mar 16, 2026
409ab7b
Clean up YARD attribute declarations
vipulnsward Mar 16, 2026
5f179d7
Refresh migration docs and remove rewrite blueprint
vipulnsward Mar 16, 2026
407521f
Fix CI test command and example script linting
vipulnsward Mar 16, 2026
705f204
Scope CI style checks to changed Ruby files
vipulnsward Mar 16, 2026
26ae82a
Run RuboCop across the full library surface
vipulnsward Mar 16, 2026
507054d
Fix review issues across client and CI
vipulnsward Mar 16, 2026
cf7c47a
Exclude bundled gems from RuboCop
vipulnsward Mar 16, 2026
d0c2986
Fix remaining RuboCop CI failures
vipulnsward Mar 16, 2026
432b0b8
Update Snyk exclusion for rewritten authenticator
vipulnsward Mar 16, 2026
bd3c3d7
Tighten legacy REST auth digest handling
vipulnsward Mar 16, 2026
ac09448
Fix standalone example loading and execution
vipulnsward Mar 16, 2026
83fbc3d
Resolve remaining review cleanups
vipulnsward Mar 16, 2026
3e1d35f
Fix remaining review follow-ups
vipulnsward Mar 16, 2026
efb689c
Tighten examples and pagination helpers
vipulnsward Mar 16, 2026
726cac2
Refine authenticator digest lookup
vipulnsward Mar 16, 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
2 changes: 1 addition & 1 deletion .github/workflows/gem-push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Release Gem
if: contains(github.ref, 'refs/tags/v')
Expand Down
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