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==