Skip to content

Commit e393491

Browse files
Merge pull request #2 from StevanFreeborn/fix/file-name-bug
fix: file name bug
2 parents 2000a86 + 522efb1 commit e393491

File tree

3 files changed

+46
-46
lines changed

3 files changed

+46
-46
lines changed

src/models/ApiResponse.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -261,13 +261,10 @@ export class ApiResponse<T> {
261261

262262
public asFileType(response: AxiosResponse): ApiResponse<File> {
263263
const apiResponse = this as ApiResponse<any>;
264-
265-
let fileName = response.headers['content-disposition']
264+
const fileName = response.headers['content-disposition']
266265
.split(';')[1]
267266
.split('=')[1];
268267

269-
fileName = fileName.substring(1, fileName.length - 1);
270-
271268
const contentType =
272269
response.headers['content-type'] ??
273270
response.headers['Content-Type'] ??

tests/ApiResponse.spec.ts

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,33 @@
1-
import { ApiResponse } from '../src/models/ApiResponse';
1+
import { type AxiosResponse } from 'axios';
22
import { expect } from 'chai';
3-
import { GetPagedAppsResponse } from '../src/models/GetPagedAppsResponse';
4-
import { App } from '../src/models/App';
5-
import { CollectionResponse } from '../src/models/CollectionResponse';
6-
import { Field } from '../src/models/Field';
3+
import fs from 'fs';
4+
import path from 'path';
75
import { FieldStatus } from '../src/enums/FieldStatus';
86
import { FieldType } from '../src/enums/FieldType';
9-
import { GetPagedFieldsResponse } from '../src/models/GetPagedFieldsResponse';
10-
import { CreatedWithIdResponse } from '../src/models/CreatedWithIdResponse';
11-
import { FormulaField } from '../src/models/FormulaField';
127
import { FormulaOutputType } from '../src/enums/FormulaOutputType';
13-
import { ListValue } from '../src/models/ListValue';
14-
import { ReferenceField } from '../src/models/ReferenceField';
158
import { Multiplicity } from '../src/enums/Multiplicity';
16-
import { ListField } from '../src/models/ListField';
9+
import { ApiResponse } from '../src/models/ApiResponse';
10+
import { App } from '../src/models/App';
11+
import { CollectionResponse } from '../src/models/CollectionResponse';
12+
import { CreatedWithIdResponse } from '../src/models/CreatedWithIdResponse';
13+
import { Field } from '../src/models/Field';
1714
import { File } from '../src/models/File';
18-
import { ListItemResponse } from '../src/models/ListItemResponse';
15+
import { FormulaField } from '../src/models/FormulaField';
16+
import { GetPagedAppsResponse } from '../src/models/GetPagedAppsResponse';
17+
import { GetPagedFieldsResponse } from '../src/models/GetPagedFieldsResponse';
18+
import { GetPagedRecordsResponse } from '../src/models/GetPagedRecordsResponse';
1919
import { GetPagedReportsResponse } from '../src/models/GetPagedReportsResponse';
20+
import { ListField } from '../src/models/ListField';
21+
import { ListItemResponse } from '../src/models/ListItemResponse';
22+
import { ListValue } from '../src/models/ListValue';
23+
import { Record } from '../src/models/Record';
24+
import { RecordValue } from '../src/models/RecordValue';
25+
import { ReferenceField } from '../src/models/ReferenceField';
2026
import { Report } from '../src/models/Report';
2127
import { ReportData } from '../src/models/ReportData';
2228
import { Row } from '../src/models/Row';
23-
import { Record } from '../src/models/Record';
24-
import { RecordValue } from '../src/models/RecordValue';
25-
import { GetPagedRecordsResponse } from '../src/models/GetPagedRecordsResponse';
26-
import { testFieldData } from './testData/testFieldData';
27-
import { type AxiosResponse } from 'axios';
28-
import path from 'path';
29-
import fs from 'fs';
3029
import { SaveRecordResponse } from '../src/models/SaveRecordResponse';
30+
import { testFieldData } from './testData/testFieldData';
3131

3232
describe('ApiResponse', function () {
3333
it('should be defined', function () {
@@ -807,7 +807,8 @@ describe('ApiResponse', function () {
807807
const mockResponse = {
808808
headers: {
809809
'content-type': 'text/plain',
810-
'content-disposition': 'attachment; filename="test-attachment.txt"',
810+
'content-disposition':
811+
"attachment; filename=test-attachment.txt; filename*=UTF-8''test-attachment.txt",
811812
'Content-Length': '13',
812813
} as AxiosResponse['headers'],
813814
} as AxiosResponse;
@@ -837,7 +838,8 @@ describe('ApiResponse', function () {
837838
const mockResponse = {
838839
headers: {
839840
'content-type': 'image/jpeg',
840-
'content-disposition': 'attachment; filename="test-image.jpeg"',
841+
'content-disposition':
842+
"attachment; filename=test-image.jpeg; filename*=UTF-8''test-image.jpeg",
841843
'Content-Length': '98897',
842844
} as AxiosResponse['headers'],
843845
} as AxiosResponse;

tests/OnspringClient.spec.ts

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,37 @@
1-
import { OnspringClient } from '../src/models/OnspringClient';
2-
import { ApiResponse } from '../src/models/ApiResponse';
31
import axios, {
42
type AxiosResponse,
53
type InternalAxiosRequestConfig,
64
} from 'axios';
75
import { expect } from 'chai';
8-
import { GetPagedAppsResponse } from '../src/models/GetPagedAppsResponse';
9-
import { App } from '../src/models/App';
10-
import { CollectionResponse } from '../src/models/CollectionResponse';
11-
import { Field } from '../src/models/Field';
6+
import fs from 'fs';
7+
import path from 'path';
8+
import * as sinon from 'sinon';
9+
import { Readable } from 'stream';
1210
import { FieldStatus } from '../src/enums/FieldStatus';
1311
import { FieldType } from '../src/enums/FieldType';
14-
import { GetPagedFieldsResponse } from '../src/models/GetPagedFieldsResponse';
15-
import { SaveFileRequest } from '../src/models/SaveFileRequest';
16-
import { Readable } from 'stream';
12+
import { ApiResponse } from '../src/models/ApiResponse';
13+
import { App } from '../src/models/App';
14+
import { CollectionResponse } from '../src/models/CollectionResponse';
1715
import { CreatedWithIdResponse } from '../src/models/CreatedWithIdResponse';
18-
import { FileInfo } from '../src/models/FileInfo';
16+
import { Field } from '../src/models/Field';
1917
import { File } from '../src/models/File';
20-
import { ListItemRequest } from '../src/models/ListItemRequest';
21-
import { ListItemResponse } from '../src/models/ListItemResponse';
22-
import { Report } from '../src/models/Report';
18+
import { FileInfo } from '../src/models/FileInfo';
19+
import { GetPagedAppsResponse } from '../src/models/GetPagedAppsResponse';
20+
import { GetPagedFieldsResponse } from '../src/models/GetPagedFieldsResponse';
21+
import { GetPagedRecordsResponse } from '../src/models/GetPagedRecordsResponse';
2322
import { GetPagedReportsResponse } from '../src/models/GetPagedReportsResponse';
24-
import { ReportData } from '../src/models/ReportData';
2523
import { GetRecordRequest } from '../src/models/GetRecordRequest';
26-
import { Record } from '../src/models/Record';
27-
import { RecordValue } from '../src/models/RecordValue';
2824
import { GetRecordsByAppIdRequest } from '../src/models/GetRecordsByAppIdRequest';
29-
import { GetPagedRecordsResponse } from '../src/models/GetPagedRecordsResponse';
3025
import { GetRecordsRequest } from '../src/models/GetRecordsRequest';
31-
import fs from 'fs';
32-
import path from 'path';
33-
import * as sinon from 'sinon';
26+
import { ListItemRequest } from '../src/models/ListItemRequest';
27+
import { ListItemResponse } from '../src/models/ListItemResponse';
28+
import { OnspringClient } from '../src/models/OnspringClient';
3429
import { QueryRecordsRequest } from '../src/models/QueryRecordsRequest';
30+
import { Record } from '../src/models/Record';
31+
import { RecordValue } from '../src/models/RecordValue';
32+
import { Report } from '../src/models/Report';
33+
import { ReportData } from '../src/models/ReportData';
34+
import { SaveFileRequest } from '../src/models/SaveFileRequest';
3535
import { SaveRecordRequest } from '../src/models/SaveRecordRequest';
3636

3737
describe('OnspringClient', function () {
@@ -1796,7 +1796,8 @@ describe('OnspringClient', function () {
17961796
statusText: 'OK',
17971797
data: file,
17981798
headers: {
1799-
'content-disposition': 'attachment; filename="test-attachment.txt"',
1799+
'content-disposition':
1800+
"attachment; filename=test-attachment.txt; filename*=UTF-8''test-attachment.txt",
18001801
'content-length': 14,
18011802
'content-type': 'text/plain',
18021803
},

0 commit comments

Comments
 (0)