2021-09-29
Downloads a file and adds to file-type data. The GET request to the URL is thrown and the response is saved
as a file.
ファイルをダウンロードし、ファイル型データに追加します。指定したURLへGETリクエストが投げられ、そのレスポンスがファイルとして保存されます。
(C) Questetra, Inc. (MIT License)
2
https://support.questetra.com/bpmn-icons/any-website-file-download/
https://support.questetra.com/ja/bpmn-icons/any-website-file-download/
{
configs.put('conf_DataIdA', url);
const fileDef = engine.createDataDefinition('ファイル', 1, 'q_file', 'FILE');
configs.putObject('conf_DataIdB', fileDef);
engine.setData(fileDef, files);
configs.put('conf_SaveAs', fileName);
return fileDef;
};
/**
* リクエストのテスト
* @param expectedUrl
* @param method
*/
const assertRequest = ({url, method}, expectedUrl) => {
expect(url).toEqual(expectedUrl);
expect(method).toEqual('GET');
};
/**
* ファイルのテスト
* @param file
* @param name
* @param contentType
* @param body
*/
const assertFile = (file, name, contentType, encoding, body) => {
expect(file.getName()).toEqual(name);
expect(file.getContentType()).toEqual(contentType);
let text = '';
fileRepository.readFile(file, encoding, line => text += line + '\n');
expect(text).toEqual(body);
};
test('FileName is blank', () => {
prepareConfigs(configs, 'https://example.com/test.pdf', null, '');
try {
execute();
fail('not come here');
} catch (e) {
expect(e.message).endsWith('Downloaded File Name isn\'t set');
}
});
test('URL is invalid', () => {
prepareConfigs(configs, 'ftp://example.com', null, 'test.txt');
try {
execute();
fail('not come here');
} catch (e) {
expect(e.message).endsWith('Invalid URL. URL must start with either http or https.');
}
});
test('Success / File is null', () => {
const fileDef = prepareConfigs(configs, 'https://example.com/test.pdf', null, 'test.pdf');
httpClient.setRequestHandler((request) => {
assertRequest(request, 'https://example.com/test.pdf');
return httpClient.createHttpResponse(200, 'text/plain; charset=UTF-8', 'こんにちは');
});
execute();
const files = engine.findData(fileDef);
expect(files.size()).toEqual(1);
assertFile(files.get(0), 'test.pdf', 'text/plain', 'UTF-8', 'こんにちは\n');
});
test('Success / File is not null', () => {
let files = new java.util.ArrayList();
files.add(engine.createQfile('test.html', 'text/html; charset=UTF-8', ''));
files.add(engine.createQfile('test.xml', 'text/xml; charset=UTF-16', 'さようなら'));
const fileDef = prepareConfigs(configs, 'https://example.com/simple.txt', files, ' ');
httpClient.setRequestHandler((request) => {
assertRequest(request, 'https://example.com/simple.txt');
return httpClient.createHttpResponse(200, 'text/plain; charset=EUC-JP', 'さようなら');
});
execute();
files = engine.findData(fileDef);
expect(files.size()).toEqual(3);
assertFile(files.get(2), ' ', 'text/plain', 'EUC-JP', 'さようなら\n');
});
]]>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADi0lEQVRYR8WXTUgUURzAf7NLq1GQ
Vhb0ZUGfErZZkIcoCSk6FCV0KXDdCmcPQXUp6rB+XCIttNNmJBYhQZfyEEEQbUXQIWEtsqAoKRSz
DruYGmZOvJlGd2ferLO51YNhF97//f+/997/6yn856FkZL+FfcB2NPwo5AH+3+tjaMRREL9RQnS4
1Ts1QBt5jHIcOAG6UTcjDjTj4xJBxH/HkR4gQhUemjIwbDUkjAdRueNE4AxwmWYUfefZGM2onJQp
kgO0cA0IZMPyhA6Na4QIWnXaAbK781R7GpcI6b40MVIBjDtvy+rO7cr2J/vEJIDh7R+m4XBuueP4
WGFGxyRAC7VAjZOWxi2NVK6upGBmgS7SM9hDY1cjke6IW8PJcnWouj2SAUTIzJFpa93eSmB1AK/i
TZkeGhuivrOehq6GTCHiqORPAhgZ7rZMy+6lu2kra2PhzIVSI33DfXwZ+cKy2cv4+O0jN97e4OKL
i26AdF8wTiCN54dLwpzdeJYcb44bpYyNj9H+rp2qaFV6+d8RYQC0ENVzvGTUb67ntP80Po/PFYAQ
+jzymWA0yL1P99KteYRKmQnQAxRapUsXlFK7uZYdi3YwwzMjZbp/uJ9zsXOULy5nT+GelLnR8VHO
x84Tfh5OBxBDZaMJoFkli/KKuFl+k+K5xVIlvUO9VD6s5ODKgxxZeyRFRkOjb6iPW+9vUfO8hsEf
g3IQFcURILI1QvW6ajyKJ2MAc4EAedD7gIr7FXKIJADbFXRWdFIyv0Rq/NnAM3be3Tmh9Iz/DOFN
YXK9uTb54bFh/SpskaHRRQi/oxO+OvCKovwiKcBP7Sftb9sJRAOIML2y7QpLZi1xvO/WN60cfXzU
Op/khJIw7NjVwd7CvY5KzSR0aNUhRz8Ri8e1cT1bHnt6LFWXJQxtiejwmsNcKL1Afo6esKRDxLzX
40VJSqhWwYGRAUJPQtzuseW5pERk5AJbKj614RTim5c7z3UOSBZMjCZoetlEXWeddX0C1WjvpixG
4m5FqK2fuz4jiK/fv3L19VW6492ydZJiZJRjEQ3SgpSR9fTCCXwst5djsei/NiQm9d9syWDi6E1z
/64pheuo2Erkv2rLbTtPfwLmrNGoiBb9Tx0zAVT92cPEhDCiQ7TS4nMLIgyLp1nz9J5m1nASJ6JR
hoIfjTwUNugiorAoxNGIoRBNt2Oryqkfp1lMADJVvwC8Hiswkyz4FwAAAABJRU5ErkJggg==