diff --git a/src/models/ApiResponse.ts b/src/models/ApiResponse.ts index aae1260..9a9ab61 100644 --- a/src/models/ApiResponse.ts +++ b/src/models/ApiResponse.ts @@ -261,13 +261,10 @@ export class ApiResponse { public asFileType(response: AxiosResponse): ApiResponse { const apiResponse = this as ApiResponse; - - let fileName = response.headers['content-disposition'] + const fileName = response.headers['content-disposition'] .split(';')[1] .split('=')[1]; - fileName = fileName.substring(1, fileName.length - 1); - const contentType = response.headers['content-type'] ?? response.headers['Content-Type'] ?? diff --git a/tests/ApiResponse.spec.ts b/tests/ApiResponse.spec.ts index 1b4136f..c652c7e 100644 --- a/tests/ApiResponse.spec.ts +++ b/tests/ApiResponse.spec.ts @@ -1,33 +1,33 @@ -import { ApiResponse } from '../src/models/ApiResponse'; +import { type AxiosResponse } from 'axios'; import { expect } from 'chai'; -import { GetPagedAppsResponse } from '../src/models/GetPagedAppsResponse'; -import { App } from '../src/models/App'; -import { CollectionResponse } from '../src/models/CollectionResponse'; -import { Field } from '../src/models/Field'; +import fs from 'fs'; +import path from 'path'; import { FieldStatus } from '../src/enums/FieldStatus'; import { FieldType } from '../src/enums/FieldType'; -import { GetPagedFieldsResponse } from '../src/models/GetPagedFieldsResponse'; -import { CreatedWithIdResponse } from '../src/models/CreatedWithIdResponse'; -import { FormulaField } from '../src/models/FormulaField'; import { FormulaOutputType } from '../src/enums/FormulaOutputType'; -import { ListValue } from '../src/models/ListValue'; -import { ReferenceField } from '../src/models/ReferenceField'; import { Multiplicity } from '../src/enums/Multiplicity'; -import { ListField } from '../src/models/ListField'; +import { ApiResponse } from '../src/models/ApiResponse'; +import { App } from '../src/models/App'; +import { CollectionResponse } from '../src/models/CollectionResponse'; +import { CreatedWithIdResponse } from '../src/models/CreatedWithIdResponse'; +import { Field } from '../src/models/Field'; import { File } from '../src/models/File'; -import { ListItemResponse } from '../src/models/ListItemResponse'; +import { FormulaField } from '../src/models/FormulaField'; +import { GetPagedAppsResponse } from '../src/models/GetPagedAppsResponse'; +import { GetPagedFieldsResponse } from '../src/models/GetPagedFieldsResponse'; +import { GetPagedRecordsResponse } from '../src/models/GetPagedRecordsResponse'; import { GetPagedReportsResponse } from '../src/models/GetPagedReportsResponse'; +import { ListField } from '../src/models/ListField'; +import { ListItemResponse } from '../src/models/ListItemResponse'; +import { ListValue } from '../src/models/ListValue'; +import { Record } from '../src/models/Record'; +import { RecordValue } from '../src/models/RecordValue'; +import { ReferenceField } from '../src/models/ReferenceField'; import { Report } from '../src/models/Report'; import { ReportData } from '../src/models/ReportData'; import { Row } from '../src/models/Row'; -import { Record } from '../src/models/Record'; -import { RecordValue } from '../src/models/RecordValue'; -import { GetPagedRecordsResponse } from '../src/models/GetPagedRecordsResponse'; -import { testFieldData } from './testData/testFieldData'; -import { type AxiosResponse } from 'axios'; -import path from 'path'; -import fs from 'fs'; import { SaveRecordResponse } from '../src/models/SaveRecordResponse'; +import { testFieldData } from './testData/testFieldData'; describe('ApiResponse', function () { it('should be defined', function () { @@ -807,7 +807,8 @@ describe('ApiResponse', function () { const mockResponse = { headers: { 'content-type': 'text/plain', - 'content-disposition': 'attachment; filename="test-attachment.txt"', + 'content-disposition': + "attachment; filename=test-attachment.txt; filename*=UTF-8''test-attachment.txt", 'Content-Length': '13', } as AxiosResponse['headers'], } as AxiosResponse; @@ -837,7 +838,8 @@ describe('ApiResponse', function () { const mockResponse = { headers: { 'content-type': 'image/jpeg', - 'content-disposition': 'attachment; filename="test-image.jpeg"', + 'content-disposition': + "attachment; filename=test-image.jpeg; filename*=UTF-8''test-image.jpeg", 'Content-Length': '98897', } as AxiosResponse['headers'], } as AxiosResponse; diff --git a/tests/OnspringClient.spec.ts b/tests/OnspringClient.spec.ts index f3b8b56..9411448 100644 --- a/tests/OnspringClient.spec.ts +++ b/tests/OnspringClient.spec.ts @@ -1,37 +1,37 @@ -import { OnspringClient } from '../src/models/OnspringClient'; -import { ApiResponse } from '../src/models/ApiResponse'; import axios, { type AxiosResponse, type InternalAxiosRequestConfig, } from 'axios'; import { expect } from 'chai'; -import { GetPagedAppsResponse } from '../src/models/GetPagedAppsResponse'; -import { App } from '../src/models/App'; -import { CollectionResponse } from '../src/models/CollectionResponse'; -import { Field } from '../src/models/Field'; -import { FieldStatus } from '../src/enums/FieldStatus'; -import { FieldType } from '../src/enums/FieldType'; -import { GetPagedFieldsResponse } from '../src/models/GetPagedFieldsResponse'; -import { SaveFileRequest } from '../src/models/SaveFileRequest'; -import { Readable } from 'stream'; -import { CreatedWithIdResponse } from '../src/models/CreatedWithIdResponse'; -import { FileInfo } from '../src/models/FileInfo'; -import { File } from '../src/models/File'; -import { ListItemRequest } from '../src/models/ListItemRequest'; -import { ListItemResponse } from '../src/models/ListItemResponse'; -import { Report } from '../src/models/Report'; -import { GetPagedReportsResponse } from '../src/models/GetPagedReportsResponse'; -import { ReportData } from '../src/models/ReportData'; -import { GetRecordRequest } from '../src/models/GetRecordRequest'; -import { Record } from '../src/models/Record'; -import { RecordValue } from '../src/models/RecordValue'; -import { GetRecordsByAppIdRequest } from '../src/models/GetRecordsByAppIdRequest'; -import { GetPagedRecordsResponse } from '../src/models/GetPagedRecordsResponse'; -import { GetRecordsRequest } from '../src/models/GetRecordsRequest'; import fs from 'fs'; import path from 'path'; import * as sinon from 'sinon'; +import { Readable } from 'stream'; +import { FieldStatus } from '../src/enums/FieldStatus'; +import { FieldType } from '../src/enums/FieldType'; +import { ApiResponse } from '../src/models/ApiResponse'; +import { App } from '../src/models/App'; +import { CollectionResponse } from '../src/models/CollectionResponse'; +import { CreatedWithIdResponse } from '../src/models/CreatedWithIdResponse'; +import { Field } from '../src/models/Field'; +import { File } from '../src/models/File'; +import { FileInfo } from '../src/models/FileInfo'; +import { GetPagedAppsResponse } from '../src/models/GetPagedAppsResponse'; +import { GetPagedFieldsResponse } from '../src/models/GetPagedFieldsResponse'; +import { GetPagedRecordsResponse } from '../src/models/GetPagedRecordsResponse'; +import { GetPagedReportsResponse } from '../src/models/GetPagedReportsResponse'; +import { GetRecordRequest } from '../src/models/GetRecordRequest'; +import { GetRecordsByAppIdRequest } from '../src/models/GetRecordsByAppIdRequest'; +import { GetRecordsRequest } from '../src/models/GetRecordsRequest'; +import { ListItemRequest } from '../src/models/ListItemRequest'; +import { ListItemResponse } from '../src/models/ListItemResponse'; +import { OnspringClient } from '../src/models/OnspringClient'; import { QueryRecordsRequest } from '../src/models/QueryRecordsRequest'; +import { Record } from '../src/models/Record'; +import { RecordValue } from '../src/models/RecordValue'; +import { Report } from '../src/models/Report'; +import { ReportData } from '../src/models/ReportData'; +import { SaveFileRequest } from '../src/models/SaveFileRequest'; import { SaveRecordRequest } from '../src/models/SaveRecordRequest'; describe('OnspringClient', function () { @@ -1796,7 +1796,8 @@ describe('OnspringClient', function () { statusText: 'OK', data: file, headers: { - 'content-disposition': 'attachment; filename="test-attachment.txt"', + 'content-disposition': + "attachment; filename=test-attachment.txt; filename*=UTF-8''test-attachment.txt", 'content-length': 14, 'content-type': 'text/plain', },