diff --git a/src/api/http-error.test.ts b/src/api/http-error.test.ts index 975f98d..190dd6c 100644 --- a/src/api/http-error.test.ts +++ b/src/api/http-error.test.ts @@ -3,6 +3,6 @@ import { useMockedUrlFetchApp } from '~/api/test-helper' test('HttpError', () => { const res = useMockedUrlFetchApp(403, '{"message": "Forbidden"}')() - const error = new HttpError(res) + const error = new HttpError('https://example.com', res) expect(error instanceof HttpError).toBeTruthy() }) diff --git a/src/api/http-error.ts b/src/api/http-error.ts index 6e6e637..2d183b4 100644 --- a/src/api/http-error.ts +++ b/src/api/http-error.ts @@ -2,9 +2,11 @@ export class HttpError implements Error { public name = 'HttpError' public message: string - // eslint-disable-next-line @typescript-eslint/camelcase - constructor(public response: GoogleAppsScript.URL_Fetch.HTTPResponse) { - this.message = `${response.getResponseCode()}: ${response.getContentText()}` + constructor( + public url: string, + public response: GoogleAppsScript.URL_Fetch.HTTPResponse // eslint-disable-line @typescript-eslint/camelcase + ) { + this.message = `${url} - ${response.getResponseCode()}: ${response.getContentText()}` } public isInvalidTestingRequest(): boolean { diff --git a/src/api/v2/client.test.ts b/src/api/v2/client.test.ts index c6c3a2d..0d6f1d5 100644 --- a/src/api/v2/client.test.ts +++ b/src/api/v2/client.test.ts @@ -11,11 +11,11 @@ test('HttpError#isInvalidTestingRequest', () => { 200, '{"message":"Testing Apikey is only allowed to ticker ending with \\"01\\""}' )() - const error1 = new HttpError(res1) + const error1 = new HttpError('https://example.com', res1) expect(error1.isInvalidTestingRequest()).toBeTruthy() const res2 = useMockedUrlFetchApp(403, '{"message": "Forbidden"}')() - const error2 = new HttpError(res2) + const error2 = new HttpError('https://example.com', res2) expect(error2.isInvalidTestingRequest()).toBeFalsy() }) diff --git a/src/api/v2/client.ts b/src/api/v2/client.ts index cfcc112..461da63 100644 --- a/src/api/v2/client.ts +++ b/src/api/v2/client.ts @@ -16,7 +16,7 @@ export class BuffettCodeApiClientV2 { const code = res.getResponseCode() const content = res.getContentText() - const error = new HttpError(res) + const error = new HttpError(url, res) if ( Math.floor(code / 100) === 4 || Math.floor(code / 100) === 5 || @@ -29,8 +29,8 @@ export class BuffettCodeApiClientV2 { try { json = JSON.parse(content) } catch (e) { - console.error('JSON parsing error', code, content) - throw new HttpError(res) + console.error('JSON parsing error', url, code, content) + throw new HttpError(url, res) } return json diff --git a/src/api/v3/client.test.ts b/src/api/v3/client.test.ts index de41dae..91cda2e 100644 --- a/src/api/v3/client.test.ts +++ b/src/api/v3/client.test.ts @@ -18,11 +18,11 @@ describe('BuffettCodeApiClientV3', () => { 200, '{"message":"Testing apikey is not allowed"}' )() - const error1 = new HttpError(res1) + const error1 = new HttpError('https://example.com', res1) expect(error1.isInvalidTestingRequest()).toBeTruthy() const res2 = useMockedUrlFetchApp(403, '{"message": "Forbidden"}')() - const error2 = new HttpError(res2) + const error2 = new HttpError('https://example.com', res2) expect(error2.isInvalidTestingRequest()).toBeFalsy() }) diff --git a/src/api/v3/client.ts b/src/api/v3/client.ts index 8d1e49b..3f10b68 100644 --- a/src/api/v3/client.ts +++ b/src/api/v3/client.ts @@ -21,7 +21,7 @@ export class BuffettCodeApiClientV3 { const code = res.getResponseCode() const content = res.getContentText() - const error = new HttpError(res) + const error = new HttpError(url, res) if ( Math.floor(code / 100) === 4 || Math.floor(code / 100) === 5 || @@ -34,8 +34,8 @@ export class BuffettCodeApiClientV3 { try { json = JSON.parse(content) } catch (e) { - console.error('JSON parsing error', code, content) - throw new HttpError(res) + console.error('JSON parsing error', url, code, content) + throw new HttpError(url, res) } return json diff --git a/src/fiscal-periods/year-quarter-param.ts b/src/fiscal-periods/year-quarter-param.ts index 70ad52e..48003e2 100644 --- a/src/fiscal-periods/year-quarter-param.ts +++ b/src/fiscal-periods/year-quarter-param.ts @@ -8,11 +8,11 @@ import { YearQuarter } from '~/fiscal-periods/year-quarter' export class YearQuarterParam { constructor(public year: number | 'LY', public quarter: number | 'LQ') { if (!this.isLatestYear() && year < 1) { - throw new InvalidYearError() + throw new InvalidYearError(`Invalid year value: ${year}`) } if (!this.isLatestQuarter() && (quarter < 1 || quarter > 4)) { - throw new InvalidQuarterError() + throw new InvalidQuarterError(`Invalid quarter value: ${quarter}`) } } diff --git a/src/fiscal-periods/year-quarter.ts b/src/fiscal-periods/year-quarter.ts index 48b8b1e..5333071 100644 --- a/src/fiscal-periods/year-quarter.ts +++ b/src/fiscal-periods/year-quarter.ts @@ -3,11 +3,11 @@ import { InvalidYearError, InvalidQuarterError } from '~/fiscal-periods/error' export class YearQuarter { constructor(public year: number, public quarter: number) { if (year < 1) { - throw new InvalidYearError() + throw new InvalidYearError(`Invalid year value: ${year}`) } if (quarter < 1 || quarter > 4) { - throw new InvalidQuarterError() + throw new InvalidQuarterError(`Invalid quarter value: ${quarter}`) } }