66# and instance methods (store, delete, reload, convert) for working with files.
77#
88# @example Finding a file
9- # file = Uploadcare::File.find(uuid: "file-uuid")
9+ # client = Uploadcare.client
10+ # file = client.files.find(uuid: "file-uuid")
1011# file.original_filename # => "photo.jpg"
1112#
1213# @example Uploading
13- # file = Uploadcare::File.upload(File.open("photo.jpg"), store: true)
14+ # client = Uploadcare.client
15+ # file = client.files.upload(::File.open("photo.jpg"), store: true)
1416#
1517# @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#tag/File
1618class Uploadcare ::Resources ::File < Uploadcare ::Resources ::BaseResource
@@ -288,7 +290,12 @@ def convert_to_video(params: {}, options: {}, request_options: {})
288290 def uuid
289291 return @uuid if @uuid
290292
291- source = @url || @original_file_url
293+ source =
294+ if @url
295+ @url
296+ elsif uploadcare_cdn_url? ( @original_file_url )
297+ @original_file_url
298+ end
292299 return @uuid unless source
293300
294301 @uuid = source [ /[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}/ ]
@@ -298,13 +305,18 @@ def uuid
298305 #
299306 # @return [String]
300307 def cdn_url
301- return @url if @url
308+ return @url if uploadcare_cdn_url? ( @url )
309+ return @original_file_url if uploadcare_cdn_url? ( @original_file_url )
302310
303311 "#{ config . cdn_base } #{ uuid } /"
304312 end
305313
306314 private
307315
316+ def uploadcare_cdn_url? ( value )
317+ value . to_s . start_with? ( config . cdn_base . to_s )
318+ end
319+
308320 def convert_file ( params , converter , options = { } , request_options : { } )
309321 raise ArgumentError , 'The first argument must be a Hash' unless params . is_a? ( Hash )
310322
0 commit comments