aspose_cells_cloud 26.9 → 26.10.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +39 -31
- data/lib/aspose_cells_cloud/api/cells_api.rb +92 -7
- data/lib/aspose_cells_cloud/models/shared_drive_info.rb +222 -0
- data/lib/aspose_cells_cloud/requests/aggregate_cells_by_color__deprecated_request.rb +155 -0
- data/lib/aspose_cells_cloud/requests/aggregate_cells_by_color_request.rb +1 -1
- data/lib/aspose_cells_cloud/requests/search_all_text_items_in_remote_spreadsheet__legacy_put_request.rb +138 -0
- data/lib/aspose_cells_cloud/requests/search_all_text_items_in_remote_spreadsheet_request.rb +1 -1
- data/lib/aspose_cells_cloud/requests/search_broken_links_in_remote_range__legacy_put_request.rb +156 -0
- data/lib/aspose_cells_cloud/requests/search_broken_links_in_remote_range_request.rb +1 -1
- data/lib/aspose_cells_cloud/requests/search_broken_links_in_remote_spreadsheet__legacy_put_request.rb +150 -0
- data/lib/aspose_cells_cloud/requests/search_broken_links_in_remote_spreadsheet_request.rb +1 -1
- data/lib/aspose_cells_cloud/requests/search_broken_links_in_remote_worksheet__legacy_put_request.rb +145 -0
- data/lib/aspose_cells_cloud/requests/search_broken_links_in_remote_worksheet_request.rb +1 -1
- data/lib/aspose_cells_cloud/requests/search_content_in_remote_range__legacy_put_request.rb +176 -0
- data/lib/aspose_cells_cloud/requests/search_content_in_remote_range_request.rb +1 -1
- data/lib/aspose_cells_cloud/requests/search_content_in_remote_spreadsheet__legacy_put_request.rb +154 -0
- data/lib/aspose_cells_cloud/requests/search_content_in_remote_spreadsheet_request.rb +1 -1
- data/lib/aspose_cells_cloud/requests/search_content_in_remote_worksheet__legacy_put_request.rb +165 -0
- data/lib/aspose_cells_cloud/requests/search_content_in_remote_worksheet_request.rb +1 -1
- data/lib/aspose_cells_cloud/version.rb +1 -1
- data/lib/aspose_cells_cloud.rb +9 -0
- metadata +12 -11
- data/spec/client_spec.rb +0 -114
- data/spec/configuration_spec.rb +0 -61
- data/spec/form_file_spec.rb +0 -47
- data/spec/model_spec.rb +0 -73
- data/spec/request_spec.rb +0 -87
- data/spec/rich_response_spec.rb +0 -46
- data/spec/sdk_error_spec.rb +0 -27
- data/spec/spec_helper.rb +0 -21
data/lib/aspose_cells_cloud.rb
CHANGED
|
@@ -42,6 +42,7 @@ require 'aspose_cells_cloud/models/files_list'
|
|
|
42
42
|
require 'aspose_cells_cloud/models/files_upload_result'
|
|
43
43
|
require 'aspose_cells_cloud/models/storage_file'
|
|
44
44
|
require 'aspose_cells_cloud/models/google_drive_storage_file'
|
|
45
|
+
require 'aspose_cells_cloud/models/shared_drive_info'
|
|
45
46
|
require 'aspose_cells_cloud/models/aggregate_result_by_color'
|
|
46
47
|
require 'aspose_cells_cloud/models/broken_link'
|
|
47
48
|
require 'aspose_cells_cloud/models/cell_area'
|
|
@@ -493,6 +494,7 @@ require 'aspose_cells_cloud/requests/report_ai_analysis_request'
|
|
|
493
494
|
require 'aspose_cells_cloud/requests/summarize_spreadsheet_request'
|
|
494
495
|
require 'aspose_cells_cloud/requests/categorize_spreadsheet_request'
|
|
495
496
|
require 'aspose_cells_cloud/requests/aggregate_cells_by_color_request'
|
|
497
|
+
require 'aspose_cells_cloud/requests/aggregate_cells_by_color__deprecated_request'
|
|
496
498
|
require 'aspose_cells_cloud/requests/math_calculate_request'
|
|
497
499
|
require 'aspose_cells_cloud/requests/calculation_formula_request'
|
|
498
500
|
require 'aspose_cells_cloud/requests/post_access_token_request'
|
|
@@ -556,19 +558,26 @@ require 'aspose_cells_cloud/requests/unprotect_spreadsheet_request'
|
|
|
556
558
|
require 'aspose_cells_cloud/requests/spreadsheet_digitalsignature_request'
|
|
557
559
|
require 'aspose_cells_cloud/requests/smart_marker_template_request'
|
|
558
560
|
require 'aspose_cells_cloud/requests/search_all_text_items_in_remote_spreadsheet_request'
|
|
561
|
+
require 'aspose_cells_cloud/requests/search_all_text_items_in_remote_spreadsheet__legacy_put_request'
|
|
559
562
|
require 'aspose_cells_cloud/requests/search_spreadsheet_all_text_items_request'
|
|
560
563
|
require 'aspose_cells_cloud/requests/search_spreadsheet_content_request'
|
|
561
564
|
require 'aspose_cells_cloud/requests/search_content_in_remote_spreadsheet_request'
|
|
565
|
+
require 'aspose_cells_cloud/requests/search_content_in_remote_spreadsheet__legacy_put_request'
|
|
562
566
|
require 'aspose_cells_cloud/requests/search_content_in_remote_worksheet_request'
|
|
567
|
+
require 'aspose_cells_cloud/requests/search_content_in_remote_worksheet__legacy_put_request'
|
|
563
568
|
require 'aspose_cells_cloud/requests/search_content_in_remote_range_request'
|
|
569
|
+
require 'aspose_cells_cloud/requests/search_content_in_remote_range__legacy_put_request'
|
|
564
570
|
require 'aspose_cells_cloud/requests/replace_spreadsheet_content_request'
|
|
565
571
|
require 'aspose_cells_cloud/requests/replace_content_in_remote_spreadsheet_request'
|
|
566
572
|
require 'aspose_cells_cloud/requests/replace_content_in_remote_worksheet_request'
|
|
567
573
|
require 'aspose_cells_cloud/requests/replace_content_in_remote_range_request'
|
|
568
574
|
require 'aspose_cells_cloud/requests/search_spreadsheet_broken_links_request'
|
|
569
575
|
require 'aspose_cells_cloud/requests/search_broken_links_in_remote_spreadsheet_request'
|
|
576
|
+
require 'aspose_cells_cloud/requests/search_broken_links_in_remote_spreadsheet__legacy_put_request'
|
|
570
577
|
require 'aspose_cells_cloud/requests/search_broken_links_in_remote_worksheet_request'
|
|
578
|
+
require 'aspose_cells_cloud/requests/search_broken_links_in_remote_worksheet__legacy_put_request'
|
|
571
579
|
require 'aspose_cells_cloud/requests/search_broken_links_in_remote_range_request'
|
|
580
|
+
require 'aspose_cells_cloud/requests/search_broken_links_in_remote_range__legacy_put_request'
|
|
572
581
|
require 'aspose_cells_cloud/requests/spec_request'
|
|
573
582
|
require 'aspose_cells_cloud/requests/codegen_spec_request'
|
|
574
583
|
require 'aspose_cells_cloud/requests/trim_character_in_remote_spreadsheet_request'
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: aspose_cells_cloud
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 26.10.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Aspose Cells Cloud
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-10-31 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: typhoeus
|
|
@@ -590,6 +590,7 @@ files:
|
|
|
590
590
|
- lib/aspose_cells_cloud/models/shape_response.rb
|
|
591
591
|
- lib/aspose_cells_cloud/models/shapes.rb
|
|
592
592
|
- lib/aspose_cells_cloud/models/shapes_response.rb
|
|
593
|
+
- lib/aspose_cells_cloud/models/shared_drive_info.rb
|
|
593
594
|
- lib/aspose_cells_cloud/models/single_value.rb
|
|
594
595
|
- lib/aspose_cells_cloud/models/single_value_response.rb
|
|
595
596
|
- lib/aspose_cells_cloud/models/smart_marker_task_parameter.rb
|
|
@@ -696,6 +697,7 @@ files:
|
|
|
696
697
|
- lib/aspose_cells_cloud/requests/add_text_in_remote_spreadsheet_request.rb
|
|
697
698
|
- lib/aspose_cells_cloud/requests/add_text_request.rb
|
|
698
699
|
- lib/aspose_cells_cloud/requests/add_worksheet_to_spreadsheet_request.rb
|
|
700
|
+
- lib/aspose_cells_cloud/requests/aggregate_cells_by_color__deprecated_request.rb
|
|
699
701
|
- lib/aspose_cells_cloud/requests/aggregate_cells_by_color_request.rb
|
|
700
702
|
- lib/aspose_cells_cloud/requests/calculation_formula_request.rb
|
|
701
703
|
- lib/aspose_cells_cloud/requests/categorize_spreadsheet_request.rb
|
|
@@ -1123,12 +1125,19 @@ files:
|
|
|
1123
1125
|
- lib/aspose_cells_cloud/requests/replace_spreadsheet_content_request.rb
|
|
1124
1126
|
- lib/aspose_cells_cloud/requests/report_ai_analysis_request.rb
|
|
1125
1127
|
- lib/aspose_cells_cloud/requests/save_spreadsheet_as_request.rb
|
|
1128
|
+
- lib/aspose_cells_cloud/requests/search_all_text_items_in_remote_spreadsheet__legacy_put_request.rb
|
|
1126
1129
|
- lib/aspose_cells_cloud/requests/search_all_text_items_in_remote_spreadsheet_request.rb
|
|
1130
|
+
- lib/aspose_cells_cloud/requests/search_broken_links_in_remote_range__legacy_put_request.rb
|
|
1127
1131
|
- lib/aspose_cells_cloud/requests/search_broken_links_in_remote_range_request.rb
|
|
1132
|
+
- lib/aspose_cells_cloud/requests/search_broken_links_in_remote_spreadsheet__legacy_put_request.rb
|
|
1128
1133
|
- lib/aspose_cells_cloud/requests/search_broken_links_in_remote_spreadsheet_request.rb
|
|
1134
|
+
- lib/aspose_cells_cloud/requests/search_broken_links_in_remote_worksheet__legacy_put_request.rb
|
|
1129
1135
|
- lib/aspose_cells_cloud/requests/search_broken_links_in_remote_worksheet_request.rb
|
|
1136
|
+
- lib/aspose_cells_cloud/requests/search_content_in_remote_range__legacy_put_request.rb
|
|
1130
1137
|
- lib/aspose_cells_cloud/requests/search_content_in_remote_range_request.rb
|
|
1138
|
+
- lib/aspose_cells_cloud/requests/search_content_in_remote_spreadsheet__legacy_put_request.rb
|
|
1131
1139
|
- lib/aspose_cells_cloud/requests/search_content_in_remote_spreadsheet_request.rb
|
|
1140
|
+
- lib/aspose_cells_cloud/requests/search_content_in_remote_worksheet__legacy_put_request.rb
|
|
1132
1141
|
- lib/aspose_cells_cloud/requests/search_content_in_remote_worksheet_request.rb
|
|
1133
1142
|
- lib/aspose_cells_cloud/requests/search_spreadsheet_all_text_items_request.rb
|
|
1134
1143
|
- lib/aspose_cells_cloud/requests/search_spreadsheet_broken_links_request.rb
|
|
@@ -1155,14 +1164,6 @@ files:
|
|
|
1155
1164
|
- lib/aspose_cells_cloud/requests/update_word_case_request.rb
|
|
1156
1165
|
- lib/aspose_cells_cloud/requests/upload_file_request.rb
|
|
1157
1166
|
- lib/aspose_cells_cloud/version.rb
|
|
1158
|
-
- spec/client_spec.rb
|
|
1159
|
-
- spec/configuration_spec.rb
|
|
1160
|
-
- spec/form_file_spec.rb
|
|
1161
|
-
- spec/model_spec.rb
|
|
1162
|
-
- spec/request_spec.rb
|
|
1163
|
-
- spec/rich_response_spec.rb
|
|
1164
|
-
- spec/sdk_error_spec.rb
|
|
1165
|
-
- spec/spec_helper.rb
|
|
1166
1167
|
homepage: https://products.aspose.cloud/cells/ruby
|
|
1167
1168
|
licenses:
|
|
1168
1169
|
- MIT
|
|
@@ -1185,7 +1186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
1185
1186
|
- !ruby/object:Gem::Version
|
|
1186
1187
|
version: '0'
|
|
1187
1188
|
requirements: []
|
|
1188
|
-
rubygems_version: 3.
|
|
1189
|
+
rubygems_version: 3.4.15
|
|
1189
1190
|
signing_key:
|
|
1190
1191
|
specification_version: 4
|
|
1191
1192
|
summary: Effortlessly handle Excel and other spreadsheet documents with features like
|
data/spec/client_spec.rb
DELETED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'tempfile'
|
|
4
|
-
|
|
5
|
-
RSpec.describe Aspose::Cells::Cloud::AsposeCellsCloudClient do
|
|
6
|
-
subject(:client) { described_class.new('client-id', 'client-secret') }
|
|
7
|
-
|
|
8
|
-
describe 'construction' do
|
|
9
|
-
it 'builds a Configuration with the supplied credentials and default base_url' do
|
|
10
|
-
expect(client.configuration.client_id).to eq('client-id')
|
|
11
|
-
expect(client.configuration.client_secret).to eq('client-secret')
|
|
12
|
-
expect(client.configuration.base_url).to eq('https://api.aspose.cloud')
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it 'accepts a custom base_url and options' do
|
|
16
|
-
custom = described_class.new('id', 'secret', 'https://example.com', timeout: 10, retries: 2)
|
|
17
|
-
expect(custom.configuration.base_url).to eq('https://example.com')
|
|
18
|
-
expect(custom.configuration.timeout).to eq(10)
|
|
19
|
-
expect(custom.configuration.retries).to eq(2)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
it 'exposes configuration via #get_configuration' do
|
|
23
|
-
expect(client.get_configuration).to be(client.configuration)
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
describe '#build_multipart (private)' do
|
|
28
|
-
it 'embeds a file as a multipart part with its basename' do
|
|
29
|
-
Tempfile.create('book') do |file|
|
|
30
|
-
file.write('spreadsheet-bytes')
|
|
31
|
-
file.flush
|
|
32
|
-
content_type, body = client.send(:build_multipart, 'File' => file.path)
|
|
33
|
-
expect(content_type).to match(%r{^multipart/form-data; boundary=})
|
|
34
|
-
expect(body).to include('name="File"')
|
|
35
|
-
expect(body).to include("filename=\"#{File.basename(file.path)}\"")
|
|
36
|
-
expect(body).to include('spreadsheet-bytes')
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
it 'sends a plain value as a text field' do
|
|
41
|
-
_content_type, body = client.send(:build_multipart, 'note' => 'hello')
|
|
42
|
-
expect(body).to include('name="note"')
|
|
43
|
-
expect(body).to include('hello')
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
it 'accepts an open IO object (File/Tempfile) as a file part' do
|
|
47
|
-
Tempfile.create('book') do |file|
|
|
48
|
-
file.write('from-io')
|
|
49
|
-
file.flush
|
|
50
|
-
_content_type, body = client.send(:build_multipart, 'File' => file)
|
|
51
|
-
expect(body).to include("filename=\"#{File.basename(file.path)}\"")
|
|
52
|
-
expect(body).to include('from-io')
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
it 'accepts a FormFile.from_bytes binary array as a file part' do
|
|
57
|
-
form_file = Aspose::Cells::Cloud::FormFile.from_bytes([0x00, 0x48, 0x49], filename: 'raw.bin')
|
|
58
|
-
_content_type, body = client.send(:build_multipart, 'File' => form_file)
|
|
59
|
-
expect(body).to include('filename="raw.bin"')
|
|
60
|
-
expect(body).to include("\x00HI".b)
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
it 'uses a FormFile content_type when provided' do
|
|
64
|
-
form_file = Aspose::Cells::Cloud::FormFile.from_bytes([0x50, 0x4B], filename: 'a.xlsx',
|
|
65
|
-
content_type: 'application/vnd.ms-excel')
|
|
66
|
-
content_type, body = client.send(:build_multipart, 'File' => form_file)
|
|
67
|
-
expect(content_type).to match(%r{^multipart/form-data; boundary=})
|
|
68
|
-
expect(body).to include('Content-Type: application/vnd.ms-excel')
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
it 'sends a bare integer array as a binary text field' do
|
|
72
|
-
_content_type, body = client.send(:build_multipart, 'blob' => [0x01, 0x02, 0x03])
|
|
73
|
-
expect(body).to include("name=\"blob\"")
|
|
74
|
-
expect(body).to include("\x01\x02\x03".b)
|
|
75
|
-
expect(body).not_to include('filename=')
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
describe '#build_request (private)' do
|
|
80
|
-
let(:uri) { URI.parse('https://api.aspose.cloud/v4.0/cells/convert') }
|
|
81
|
-
|
|
82
|
-
it 'builds a GET request with no body' do
|
|
83
|
-
req = client.send(:build_request, 'GET', uri, {}, nil, nil)
|
|
84
|
-
expect(req).to be_a(Net::HTTP::Get)
|
|
85
|
-
expect(req.body).to be_nil
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
it 'serializes a JSON body' do
|
|
89
|
-
req = client.send(:build_request, 'POST', uri, { 'Content-Type' => 'application/json' },
|
|
90
|
-
{ 'Name' => 'x' }, nil)
|
|
91
|
-
expect(req.body).to eq('{"Name":"x"}')
|
|
92
|
-
expect(req['Content-Type']).to eq('application/json')
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
it 'rejects an unsupported HTTP method' do
|
|
96
|
-
expect { client.send(:build_request, 'PATCH', uri, {}, nil, nil) }
|
|
97
|
-
.to raise_error(Aspose::Cells::Cloud::SDKError, /Unsupported HTTP method/)
|
|
98
|
-
end
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
describe '#upload_file / #download_file' do
|
|
102
|
-
it 'upload_file builds and executes an UploadFileRequest' do
|
|
103
|
-
response = double('response', success?: true)
|
|
104
|
-
allow(client).to receive(:execute).and_return(response)
|
|
105
|
-
expect(client.upload_file('TestData/In/a.xlsx', 'testdata/a.xlsx')).to be(response)
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
it 'download_file returns the response bytes' do
|
|
109
|
-
response = double('response', to_bytes: 'CONTENT')
|
|
110
|
-
allow(client).to receive(:execute).and_return(response)
|
|
111
|
-
expect(client.download_file('TestData/In/a.xlsx')).to eq('CONTENT')
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
|
-
end
|
data/spec/configuration_spec.rb
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
RSpec.describe Aspose::Cells::Cloud::Configuration do
|
|
4
|
-
describe 'defaults' do
|
|
5
|
-
subject(:config) { described_class.new }
|
|
6
|
-
|
|
7
|
-
it 'defaults base_url to the production endpoint' do
|
|
8
|
-
expect(config.base_url).to eq('https://api.aspose.cloud')
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
it 'defaults timeout to 30 seconds' do
|
|
12
|
-
expect(config.timeout).to eq(30)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it 'defaults retries to 0' do
|
|
16
|
-
expect(config.retries).to eq(0)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it 'defaults api_version to v4.0' do
|
|
20
|
-
expect(config.api_version).to eq('v4.0')
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
it 'leaves credentials nil (no fake defaults)' do
|
|
24
|
-
expect(config.client_id).to be_nil
|
|
25
|
-
expect(config.client_secret).to be_nil
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
it 'starts with an empty header map' do
|
|
29
|
-
expect(config.header_parameters).to eq({})
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
describe '#token_url' do
|
|
34
|
-
it 'derives the OAuth2 endpoint from api_version (v4.0) by default' do
|
|
35
|
-
expect(described_class.new.token_url).to eq('https://api.aspose.cloud/v4.0/cells/connect/token')
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
it 'uses /v3.0/cells/connect/token when api_version is v3.0' do
|
|
39
|
-
config = described_class.new(api_version: 'v3.0')
|
|
40
|
-
expect(config.token_url).to eq('https://api.aspose.cloud/v3.0/cells/connect/token')
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
it 'honours an explicit auth_url override' do
|
|
44
|
-
config = described_class.new(auth_url: 'https://example.com/oauth2/token')
|
|
45
|
-
expect(config.token_url).to eq('https://example.com/oauth2/token')
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
it 'strips a trailing slash from base_url' do
|
|
49
|
-
config = described_class.new(base_url: 'https://api.aspose.cloud/')
|
|
50
|
-
expect(config.token_url).to eq('https://api.aspose.cloud/v4.0/cells/connect/token')
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
describe '#add_default_header' do
|
|
55
|
-
it 'adds a header to the map' do
|
|
56
|
-
config = described_class.new
|
|
57
|
-
config.add_default_header('X-Custom', 'value')
|
|
58
|
-
expect(config.header_parameters['X-Custom']).to eq('value')
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
end
|
data/spec/form_file_spec.rb
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'stringio'
|
|
4
|
-
require 'tempfile'
|
|
5
|
-
|
|
6
|
-
RSpec.describe Aspose::Cells::Cloud::FormFile do
|
|
7
|
-
describe '.from_path' do
|
|
8
|
-
it 'reads the file bytes and uses its basename as the filename' do
|
|
9
|
-
Tempfile.create('book') do |file|
|
|
10
|
-
file.write('sheet-bytes')
|
|
11
|
-
file.flush
|
|
12
|
-
form_file = described_class.from_path(file.path)
|
|
13
|
-
expect(form_file.filename).to eq(File.basename(file.path))
|
|
14
|
-
expect(form_file.read).to eq('sheet-bytes')
|
|
15
|
-
expect(form_file.read.encoding).to eq(Encoding::BINARY)
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
describe '.from_io' do
|
|
21
|
-
it 'reads the stream and honors an explicit filename' do
|
|
22
|
-
form_file = described_class.from_io(StringIO.new('io-content'), filename: 'report.csv')
|
|
23
|
-
expect(form_file.filename).to eq('report.csv')
|
|
24
|
-
expect(form_file.read).to eq('io-content')
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
describe '.from_bytes' do
|
|
29
|
-
it 'packs an integer byte array into a binary string' do
|
|
30
|
-
form_file = described_class.from_bytes([0x50, 0x4B, 0x03, 0x04], filename: 'Book1.xlsx')
|
|
31
|
-
expect(form_file.read).to eq("\x50\x4B\x03\x04".b)
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
it 'accepts a binary string as-is' do
|
|
35
|
-
form_file = described_class.from_bytes("\x50\x4B".b, filename: 'a.xlsx')
|
|
36
|
-
expect(form_file.read).to eq("\x50\x4B".b)
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
describe 'validation' do
|
|
41
|
-
it 'requires exactly one of path/io/bytes' do
|
|
42
|
-
expect { described_class.new }.to raise_error(ArgumentError, /exactly one/)
|
|
43
|
-
expect { described_class.new(path: 'a', io: StringIO.new) }.to raise_error(ArgumentError, /exactly one/)
|
|
44
|
-
expect { described_class.from_bytes([1], filename: nil) }.not_to raise_error
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
data/spec/model_spec.rb
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
RSpec.describe 'generated models' do
|
|
4
|
-
describe Aspose::Cells::Cloud::Model::Font do
|
|
5
|
-
it 'serializes set attributes to PascalCase wire names' do
|
|
6
|
-
font = described_class.new(is_bold: true, size: 16, name: 'Arial')
|
|
7
|
-
expect(font.to_h).to eq('IsBold' => true, 'Name' => 'Arial', 'Size' => 16)
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
it 'omits nil attributes (omitempty semantics)' do
|
|
11
|
-
expect(described_class.new.to_h).to eq({})
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it 'produces JSON via #to_json' do
|
|
15
|
-
font = described_class.new(size: 12)
|
|
16
|
-
expect(font.to_json).to eq('{"Size":12}')
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
describe Aspose::Cells::Cloud::Model::FontSetting do
|
|
21
|
-
it 'nests a model reference with #to_h' do
|
|
22
|
-
setting = described_class.new(
|
|
23
|
-
font: Aspose::Cells::Cloud::Model::Font.new(size: 10),
|
|
24
|
-
length: 5,
|
|
25
|
-
start_index: 0
|
|
26
|
-
)
|
|
27
|
-
expect(setting.to_h).to eq('Font' => { 'Size' => 10 }, 'Length' => 5, 'StartIndex' => 0)
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
describe 'keyword-conflict attributes' do
|
|
32
|
-
it 'maps a Type property to a type_ accessor with wire name Type' do
|
|
33
|
-
color = Aspose::Cells::Cloud::Model::CellsColor.new(type_: 'Automatic')
|
|
34
|
-
expect(color.type_).to eq('Automatic')
|
|
35
|
-
expect(color.to_h).to eq('Type' => 'Automatic')
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
describe 'container (array-of-model) properties' do
|
|
40
|
-
it 'maps each element with #to_h' do
|
|
41
|
-
links = Aspose::Cells::Cloud::Model::ListObjects.new(
|
|
42
|
-
list_object_list: [
|
|
43
|
-
Aspose::Cells::Cloud::Model::ListObject.new,
|
|
44
|
-
Aspose::Cells::Cloud::Model::ListObject.new
|
|
45
|
-
]
|
|
46
|
-
)
|
|
47
|
-
expect(links.to_h['ListObjectList']).to be_an(Array)
|
|
48
|
-
expect(links.to_h['ListObjectList'].length).to eq(2)
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
describe 'enum models' do
|
|
53
|
-
it 'serializes to an empty hash' do
|
|
54
|
-
enum = Aspose::Cells::Cloud::Model::AggregateOperation.new('Sum')
|
|
55
|
-
expect(enum.to_h).to eq({})
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
describe 'full generation' do
|
|
60
|
-
it 'generates 483 model classes' do
|
|
61
|
-
model_files = Dir[File.join(__dir__, '..', 'lib', 'aspose', 'cells', 'cloud', 'model', '*.rb')]
|
|
62
|
-
expect(model_files.length).to eq(483)
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
it 'every model responds to to_h and to_json' do
|
|
66
|
-
Aspose::Cells::Cloud::Model.constants.each do |const|
|
|
67
|
-
klass = Aspose::Cells::Cloud::Model.const_get(const)
|
|
68
|
-
next unless klass.is_a?(Class)
|
|
69
|
-
expect(klass.new).to respond_to(:to_h, :to_json)
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
end
|
data/spec/request_spec.rb
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
RSpec.describe 'generated requests' do
|
|
4
|
-
describe Aspose::Cells::Cloud::Request::PostClearContentsRequest do
|
|
5
|
-
subject(:request) do
|
|
6
|
-
described_class.new(name: 'Book 1.xlsx', sheet_name: 'Sheet1', range: 'A1:C10',
|
|
7
|
-
folder: 'TestData/In')
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
it 'returns the HTTP verb' do
|
|
11
|
-
expect(request.get_method).to eq('POST')
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it 'substitutes and URL-encodes path placeholders' do
|
|
15
|
-
expect(request.get_path).to eq('/v3.0/cells/Book%201.xlsx/worksheets/Sheet1/cells/clearcontents')
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
it 'includes required + present optional query parameters' do
|
|
19
|
-
expect(request.get_query_parameters).to eq('range' => 'A1:C10', 'folder' => 'TestData/In')
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
it 'raises ArgumentError when a required parameter is empty' do
|
|
23
|
-
expect { described_class.new(name: '', sheet_name: 'Sheet1') }
|
|
24
|
-
.to raise_error(ArgumentError, /name is required/)
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
it 'enforces a required keyword argument' do
|
|
28
|
-
expect { described_class.new(sheet_name: 'Sheet1') }
|
|
29
|
-
.to raise_error(ArgumentError, /missing keyword/)
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
describe Aspose::Cells::Cloud::Request::PutConvertWorkbookRequest do
|
|
34
|
-
subject(:request) { described_class.new(format_: 'pdf', file: 'testdata/Book1.xlsx') }
|
|
35
|
-
|
|
36
|
-
it 'maps the format_ attribute to the format wire key' do
|
|
37
|
-
expect(request.get_query_parameters).to eq('format' => 'pdf')
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
it 'exposes the file as a multipart form field' do
|
|
41
|
-
expect(request.get_multipart_form).to eq('File' => 'testdata/Book1.xlsx')
|
|
42
|
-
expect(request.get_header_parameters).to eq('Content-Type' => 'multipart/form-data')
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
describe Aspose::Cells::Cloud::Request::UploadFileRequest do
|
|
47
|
-
it 'uses the UploadFiles form field name' do
|
|
48
|
-
request = described_class.new(path: 'TestData/In/Book1.xlsx',
|
|
49
|
-
upload_files: 'testdata/Book1.xlsx')
|
|
50
|
-
expect(request.get_multipart_form).to eq('UploadFiles' => 'testdata/Book1.xlsx')
|
|
51
|
-
expect(request.get_path).to eq('/v4.0/cells/storage/file/TestData%2FIn%2FBook1.xlsx')
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
describe Aspose::Cells::Cloud::Request::PutWorksheetColorFilterRequest do
|
|
56
|
-
it 'serializes a body model to a Hash and sets JSON content type' do
|
|
57
|
-
request = described_class.new(
|
|
58
|
-
name: 'Book1.xlsx', sheet_name: 'Sheet1', range: 'A1:C10', field_index: 0,
|
|
59
|
-
color_filter: Aspose::Cells::Cloud::Model::ColorFilterRequest.new(pattern: 'Solid')
|
|
60
|
-
)
|
|
61
|
-
expect(request.get_json_body).to eq('Pattern' => 'Solid')
|
|
62
|
-
expect(request.get_header_parameters).to eq('Content-Type' => 'application/json')
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
describe 'full generation' do
|
|
67
|
-
it 'generates 457 request classes (461 operations minus 4 ignored)' do
|
|
68
|
-
files = Dir[File.join(__dir__, '..', 'lib', 'aspose', 'cells', 'cloud', 'request', '*_request.rb')]
|
|
69
|
-
expect(files.length).to eq(457)
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
it 'every request is well-formed (verb, no leftover placeholders, Hash query)' do
|
|
73
|
-
Aspose::Cells::Cloud::Request.constants.each do |const|
|
|
74
|
-
klass = Aspose::Cells::Cloud::Request.const_get(const)
|
|
75
|
-
next unless klass.is_a?(Class) && klass < Aspose::Cells::Cloud::RequestOption
|
|
76
|
-
|
|
77
|
-
required = klass.instance_method(:initialize).parameters
|
|
78
|
-
.select { |type, _| type == :keyreq }.map { |_, name| name }
|
|
79
|
-
request = klass.new(**required.to_h { |name| [name, 'test'] })
|
|
80
|
-
|
|
81
|
-
expect(request.get_method).to match(/\A(GET|POST|PUT|DELETE)\z/)
|
|
82
|
-
expect(request.get_path).not_to include('{', '}')
|
|
83
|
-
expect(request.get_query_parameters).to be_a(Hash)
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
end
|
data/spec/rich_response_spec.rb
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
RSpec.describe Aspose::Cells::Cloud::RichResponse do
|
|
4
|
-
subject(:response) do
|
|
5
|
-
described_class.new(200, { 'Content-Type' => 'application/json' }, '{"Name":"Book1.xlsx"}')
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
it 'exposes status_code, headers, and body' do
|
|
9
|
-
expect(response.status_code).to eq(200)
|
|
10
|
-
expect(response.headers['Content-Type']).to eq('application/json')
|
|
11
|
-
expect(response.body).to eq('{"Name":"Book1.xlsx"}')
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
describe '#to_s' do
|
|
15
|
-
it 'decodes the body as UTF-8' do
|
|
16
|
-
expect(response.to_s).to eq('{"Name":"Book1.xlsx"}')
|
|
17
|
-
expect(response.to_s.encoding).to eq(Encoding::UTF_8)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
it 'returns empty string for a nil body' do
|
|
21
|
-
expect(described_class.new(204, {}, nil).to_s).to eq('')
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
describe '#to_bytes' do
|
|
26
|
-
it 'returns a binary-encoded body' do
|
|
27
|
-
bytes = response.to_bytes
|
|
28
|
-
expect(bytes).to eq('{"Name":"Book1.xlsx"}')
|
|
29
|
-
expect(bytes.encoding).to eq(Encoding::BINARY)
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
describe '#get_json' do
|
|
34
|
-
it 'parses the body into a Hash' do
|
|
35
|
-
expect(response.get_json).to eq('Name' => 'Book1.xlsx')
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
it 'hydrates a model when a class is given' do
|
|
39
|
-
hydrated = described_class.new(200, {}, '{"UsedSize":1,"TotalSize":2}')
|
|
40
|
-
.get_json(Aspose::Cells::Cloud::Model::DiscUsage)
|
|
41
|
-
expect(hydrated).to be_a(Aspose::Cells::Cloud::Model::DiscUsage)
|
|
42
|
-
expect(hydrated.used_size).to eq(1)
|
|
43
|
-
expect(hydrated.total_size).to eq(2)
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
data/spec/sdk_error_spec.rb
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
RSpec.describe Aspose::Cells::Cloud::SDKError do
|
|
4
|
-
it 'is a StandardError' do
|
|
5
|
-
expect(described_class.superclass).to eq(StandardError)
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
it 'carries a message' do
|
|
9
|
-
error = described_class.new('boom')
|
|
10
|
-
expect(error.message).to eq('boom')
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
it 'carries an optional HTTP code and body' do
|
|
14
|
-
error = described_class.new('boom', code: 401, response_body: '{"error":"denied"}')
|
|
15
|
-
expect(error.code).to eq(401)
|
|
16
|
-
expect(error.response_body).to eq('{"error":"denied"}')
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it 'can be rescued via the class name' do
|
|
20
|
-
raised = begin
|
|
21
|
-
raise described_class, 'x'
|
|
22
|
-
rescue described_class => e
|
|
23
|
-
e
|
|
24
|
-
end
|
|
25
|
-
expect(raised).to be_a(described_class)
|
|
26
|
-
end
|
|
27
|
-
end
|
data/spec/spec_helper.rb
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# Makes the SDK available to every spec without requiring Bundler.
|
|
4
|
-
$LOAD_PATH.unshift File.expand_path('../lib', __dir__)
|
|
5
|
-
|
|
6
|
-
require 'aspose/cells/cloud'
|
|
7
|
-
|
|
8
|
-
RSpec.configure do |config|
|
|
9
|
-
config.expect_with :rspec do |expectations|
|
|
10
|
-
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
config.mock_with :rspec do |mocks|
|
|
14
|
-
mocks.verify_partial_doubles = true
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
config.shared_context_metadata_behavior = :apply_to_host_groups
|
|
18
|
-
config.disable_monkey_patching!
|
|
19
|
-
config.order = :random
|
|
20
|
-
Kernel.srand config.seed
|
|
21
|
-
end
|