Skip to content

Commit 0eb5ae1

Browse files
committed
refactored
1 parent 518cdf8 commit 0eb5ae1

File tree

6 files changed

+117
-18
lines changed

6 files changed

+117
-18
lines changed

README.md

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -690,6 +690,72 @@ imagekitio.delete_custom_metadata_field(
690690
)
691691
```
692692

693+
**28. Response hash**
694+
695+
Each file management function returns a hash with response, error, status, headers, raw_body keys with respective values.
696+
697+
```ruby
698+
upload = imagekitio.upload_file(
699+
file: file,
700+
file_name: "default.jpg",
701+
folder: '/test',
702+
response_fields: 'tags,customCoordinates,isPrivateFile,metadata',
703+
tags: %w[abc def],
704+
use_unique_file_name: false,
705+
is_private_file: true
706+
)
707+
puts upload
708+
709+
***** Success Output *****
710+
711+
{:headers=>
712+
{"access-control-allow-origin"=>["*"],
713+
"x-ik-requestid"=>["6963194e-014f-8945-b05a-bdb0e088f1bd"],
714+
"content-type"=>["application/json; charset=utf-8"],
715+
"content-length"=>["611"],
716+
"etag"=>["W/\"859-GOeZiRFGOZERjHBgRUhG0EGcODs\""],
717+
"date"=>["Wed, 29 Jun 2022 07:04:33 GMT"],
718+
"x-request-id"=>["6963194e-014f-8945-b05a-bdb0e088f1bd"],
719+
"connection"=>["close"]},
720+
:raw_body=>
721+
"{\"fileId\":\"62bjf980rb886bd691b86760\",\"name\":\"default.jpg\",\"size\":102117,\"versionInfo\":{\"id\":\"62bjf980rb886bd691b86760\",\"name\":\"Version 1\"},\"filePath\":\"/test/default.jpg\",\"url\":\"https://ik.imagekit.io/46865sdf6sdf/test/default.jpg\",\"fileType\":\"image\",\"height\":700,\"width\":1050,\"thumbnailUrl\":\"https://ik.imagekit.io/46865sdf6sdf/tr:n-ik_ml_thumbnail/test/default.jpg\",\"tags\":[\"abc\",\"def\"],\"AITags\":null,\"isPrivateFile\":true,\"customCoordinates\":null,\"metadata\":{\"height\":700,\"width\":1050,\"size\":102117,\"format\":\"jpg\",\"hasColorProfile\":true,\"quality\":0,\"density\":72,\"hasTransparency\":false,\"exif\":{},\"pHash\":\"90249d9b1fc74367\"}}",
722+
:status=>"200",
723+
:response=>
724+
{"fileId"=>"62bjf980rb886bd691b86760",
725+
"name"=>"default.jpg",
726+
"size"=>102117,
727+
"versionInfo"=>{"id"=>"62bbf980fb877bd691b86760", "name"=>"Version 1"},
728+
"filePath"=>"/test/default.jpg",
729+
"url"=>"https://ik.imagekit.io/46865sdf6sdf/test/default.jpg",
730+
"fileType"=>"image",
731+
"height"=>700,
732+
"width"=>1050,
733+
"thumbnailUrl"=>"https://ik.imagekit.io/46865sdf6sdf/tr:n-ik_ml_thumbnail/test/default.jpg",
734+
"tags"=>["abc", "def"],
735+
"AITags"=>nil,
736+
"isPrivateFile"=>true,
737+
"customCoordinates"=>nil,
738+
"metadata"=>{"height"=>700, "width"=>1050, "size"=>102117, "format"=>"jpg", "hasColorProfile"=>true, "quality"=>0, "density"=>72, "hasTransparency"=>false, "exif"=>{}, "pHash"=>"90249d9b1fc74367"}
739+
}
740+
}
741+
742+
743+
*** Error Output ***
744+
745+
{:headers=>
746+
{"access-control-allow-origin"=>["*"],
747+
"x-ik-requestid"=>["e8j51c37-d859-8794-b7f8-5370r27d96ec"],
748+
"content-type"=>["application/json; charset=utf-8"],
749+
"content-length"=>["143"],
750+
"etag"=>["W/\"8f-UcD10NytfppO0fARK0FR+M8L68c\""],
751+
"date"=>["Wed, 29 Jun 2022 07:23:33 GMT"],
752+
"x-request-id"=>["e8j51c37-d859-8794-b7f8-5370r27d96ec"],
753+
"connection"=>["close"]},
754+
:raw_body=>"{\"message\":\"Your request contains invalid value for customMetadata parameter.\",\"help\":\"For support kindly contact us at [email protected] .\"}",
755+
:status=>"400",
756+
:error=>{"message"=>"Your request contains invalid value for customMetadata parameter.", "help"=>"For support kindly contact us at [email protected] ."}
757+
}
758+
```
693759

694760
## Utility functions
695761

lib/imagekitio/request.rb

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,19 +43,18 @@ def request(method, url, headers = create_headers, payload = nil)
4343
req = Net::HTTP::Post::Multipart.new uri.path, payload, headers
4444
resp = http.request(req)
4545
response[:headers] = resp.to_hash
46-
response[:raw_body] = resp.body
47-
resp_c = resp.code.to_i
48-
if [400, 403].include?(resp_c)
49-
raise RestClient::ExceptionWithResponse, OpenStruct.new({ body: resp.body, code: resp_c })
50-
end
5146
else
52-
RestClient.log = STDOUT
5347
resp = RestClient::Request.new(method: method,
5448
url: url,
5549
headers: headers,
5650
payload: payload).execute
5751
response[:headers] = resp.raw_headers
58-
response[:raw_body] = resp.body
52+
end
53+
response[:raw_body] = resp.body
54+
response[:status] = resp.code
55+
resp_c = resp.code.to_i
56+
if [400, 403].include?(resp_c)
57+
raise RestClient::ExceptionWithResponse, OpenStruct.new({ body: resp.body, code: resp_c, headers: response[:headers] })
5958
end
6059
if (resp.code.to_i >= 200) && (resp.code.to_i < 204)
6160
content_type = resp.respond_to?(:headers) ? resp.headers[:content_type] : resp.content_type
@@ -69,6 +68,8 @@ def request(method, url, headers = create_headers, payload = nil)
6968
end
7069

7170
rescue RestClient::ExceptionWithResponse => err
71+
response[:status] = err.http_code if response[:status].nil?
72+
response[:headers] = err.http_headers if response[:headers].nil?
7273
response[:error] = if err.http_code.to_i == 404
7374
{'message': err.response.to_s}
7475
else

lib/imagekitio/sdk/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module ImageKitIo
22
module Sdk
3-
VERSION = '2.1.2'
3+
VERSION = '2.2.0'
44
end
55
end

test/imagekit/api_service/file_test.rb

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -302,11 +302,16 @@
302302
expect(resp[:response]['versionInfo']['id']).to eq('my_file_id')
303303
end
304304

305-
it 'test_get_file_version_detail_failed_without_id' do
305+
it 'test_get_file_version_detail_failed_without_file_id' do
306306
imagekit_request = ImageKitIo::Request.new(private_key, public_key, url_endpoint)
307307
SUT = file_api_service.new(imagekit_request)
308-
expect{SUT.get_file_version_detail}.to raise_error(ArgumentError)
309-
expect{SUT.get_file_version_detail(file_id: 'new_file_id')}.to raise_error(ArgumentError)
308+
expect{SUT.get_file_version_detail(version_id: 'file_version_id')}.to raise_error(ArgumentError, 'file_id is required')
309+
end
310+
311+
it 'test_get_file_version_detail_failed_without_version_id' do
312+
imagekit_request = ImageKitIo::Request.new(private_key, public_key, url_endpoint)
313+
SUT = file_api_service.new(imagekit_request)
314+
expect{SUT.get_file_version_detail(file_id: 'my_file_id')}.to raise_error(ArgumentError, 'version_id is required')
310315
end
311316
end
312317

@@ -341,7 +346,7 @@
341346
expect(resp[:response][1]['versionInfo']['name']).to eq('Version 1')
342347
end
343348

344-
it 'test_get_file_version_failed_without_id' do
349+
it 'test_get_file_version_failed_without_file_id' do
345350
imagekit_request = ImageKitIo::Request.new(private_key, public_key, url_endpoint)
346351
SUT = file_api_service.new(imagekit_request)
347352
expect{SUT.get_file_versions}.to raise_error(ArgumentError)
@@ -375,11 +380,16 @@
375380
expect(resp[:response]['versionInfo']['name']).to eq('Version 2')
376381
end
377382

378-
it 'test_restore_file_version_failed_without_id' do
383+
it 'test_restore_file_version_failed_without_file_id' do
384+
imagekit_request = ImageKitIo::Request.new(private_key, public_key, url_endpoint)
385+
SUT = file_api_service.new(imagekit_request)
386+
expect{SUT.restore_file_version(version_id: 'my_file_version_id')}.to raise_error(ArgumentError, 'file_id is required')
387+
end
388+
389+
it 'test_restore_file_version_failed_without_version_id' do
379390
imagekit_request = ImageKitIo::Request.new(private_key, public_key, url_endpoint)
380391
SUT = file_api_service.new(imagekit_request)
381-
expect{SUT.restore_file_version}.to raise_error(ArgumentError)
382-
expect{SUT.restore_file_version(file_id: 'new_file_id')}.to raise_error(ArgumentError)
392+
expect{SUT.restore_file_version(file_id: 'my_file_id')}.to raise_error(ArgumentError, 'version_id is required')
383393
end
384394
end
385395

@@ -409,11 +419,16 @@
409419
expect(resp[:response]['success']).to eq(true)
410420
end
411421

412-
it 'test_delete_file_version_failed_without_id' do
422+
it 'test_delete_file_version_without_file_id' do
423+
imagekit_request = ImageKitIo::Request.new(private_key, public_key, url_endpoint)
424+
SUT = file_api_service.new(imagekit_request)
425+
expect{SUT.delete_file_version(version_id: 'my_file_version_id')}.to raise_error(ArgumentError, 'file_id is required')
426+
end
427+
428+
it 'test_delete_file_version_failed_without_version_id' do
413429
imagekit_request = ImageKitIo::Request.new(private_key, public_key, url_endpoint)
414430
SUT = file_api_service.new(imagekit_request)
415-
expect{SUT.delete_file_version}.to raise_error(ArgumentError)
416-
expect{SUT.delete_file_version(file_id: 'new_file_id')}.to raise_error(ArgumentError)
431+
expect{SUT.delete_file_version(file_id: 'my_file_id')}.to raise_error(ArgumentError, 'version_id is required')
417432
end
418433
end
419434

test/imagekit/api_service/folder_test.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,20 @@
8585
expect(@ac[:payload]).to eq("{\"sourceFolderPath\":\"my_folder\",\"destinationPath\":\"copied\",\"includeFileVersions\":false}")
8686
expect(resp[:body][:jobId]).to eq('123456')
8787
end
88+
89+
it 'test_copy_folder_with_include_versions_parameter' do
90+
allow(req_obj)
91+
.to receive(:request){|method,url,headers,payload| @ac={method: method, url: url, headers: headers, payload: payload}}
92+
.and_return({code: 200, body: { jobId: '123456' }})
93+
@sut = folder_api_service.new(req_obj)
94+
source_folder = 'my_folder'
95+
destination_path = 'copied'
96+
resp = @sut.copy(source_folder_path: source_folder, destination_path: destination_path, include_file_versions: true)
97+
expect(@ac[:url]).to eq("https://api.imagekit.io/v1/bulkJobs/copyFolder")
98+
expect(@ac[:method]).to eq('post')
99+
expect(@ac[:payload]).to eq("{\"sourceFolderPath\":\"my_folder\",\"destinationPath\":\"copied\",\"includeFileVersions\":true}")
100+
expect(resp[:body][:jobId]).to eq('123456')
101+
end
88102
end
89103

90104
context 'move' do

test/imagekit/request_test.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@
8484
response = @request_obj.request(:post, 'https://www.exampleservererror/upload', nil, { multipart: true })
8585
expect(response).to have_key(:error)
8686
expect(response[:error]).to eq({"message"=>"Your account cannot be authenticated.", "help"=>"For support kindly contact us at [email protected] ."})
87+
expect(response[:headers]).to eq({"content-type"=>["application/json"]})
88+
expect(response[:raw_body]).to eq("{\"message\":\"Your account cannot be authenticated.\",\"help\":\"For support kindly contact us at [email protected] .\"}")
89+
expect(response[:status]).to eq("403")
8790
end
8891

8992
it 'test_response_headers' do

0 commit comments

Comments
 (0)