mirror of
https://github.com/OutlineFoundation/outline-server.git
synced 2026-10-24 13:31:02 +00:00
Fix getSentryApiUrl
This commit is contained in:
parent
abd8e84c00
commit
479ec972d1
3 changed files with 53 additions and 11 deletions
23
src/server_manager/infrastructure/sentry.spec.ts
Normal file
23
src/server_manager/infrastructure/sentry.spec.ts
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
// Copyright 2020 The Outline Authors
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
import * as sentry from './sentry';
|
||||
|
||||
describe('getSentryApiUrl', () => {
|
||||
it('returns the right URL', () => {
|
||||
const url = sentry.getSentryApiUrl('https://_key_@_org_.ingest.sentry.io/_project_');
|
||||
expect(url).toEqual(
|
||||
'https://_org_.ingest.sentry.io/api/_project_/store/?sentry_version=7&sentry_key=_key_');
|
||||
});
|
||||
});
|
||||
29
src/server_manager/infrastructure/sentry.ts
Normal file
29
src/server_manager/infrastructure/sentry.ts
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
// Copyright 2020 The Outline Authors
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
// Returns Sentry URL for DSN string or undefined if `sentryDsn` is falsy.
|
||||
// e.g. for DSN "https://[API_KEY]@[SUBDOMAIN]ingest.sentry.io/[PROJECT_ID]"
|
||||
// this will return
|
||||
// "https://[SUBDOMAIN].ingest.sentry.io/api/[PROJECT_ID]/store/?sentry_version=7&sentry_key=[API_KEY]"
|
||||
export function getSentryApiUrl(sentryDsn?: string): string|undefined {
|
||||
if (!sentryDsn) {
|
||||
return undefined;
|
||||
}
|
||||
const dsnUrl = new URL(sentryDsn);
|
||||
const sentryKey = dsnUrl.username;
|
||||
// Trims leading '/';
|
||||
const project = dsnUrl.pathname.substr(1);
|
||||
return `https://${encodeURIComponent(dsnUrl.hostname)}/api/${
|
||||
encodeURIComponent(project)}/store/?sentry_version=7&sentry_key=${sentryKey}`;
|
||||
}
|
||||
|
|
@ -14,6 +14,7 @@
|
|||
|
||||
import * as digitalocean_api from '../cloud/digitalocean_api';
|
||||
import * as i18n from '../infrastructure/i18n';
|
||||
import {getSentryApiUrl} from '../infrastructure/sentry';
|
||||
|
||||
import {App, DATA_LIMITS_AVAILABILITY_DATE} from './app';
|
||||
import {DigitalOceanTokenManager} from './digitalocean_oauth';
|
||||
|
|
@ -110,14 +111,3 @@ document.addEventListener('WebComponentsReady', () => {
|
|||
.start();
|
||||
});
|
||||
|
||||
// Returns Sentry URL for DSN string or undefined if `sentryDsn` is falsy.
|
||||
// e.g. for DSN "https://[API_KEY]@sentry.io/[PROJECT_ID]"
|
||||
// this will return
|
||||
// "https://sentry.io/api/[PROJECT_ID]/store/?sentry_version=7&sentry_key=[API_KEY]"
|
||||
function getSentryApiUrl(sentryDsn?: string): string|undefined {
|
||||
if (!sentryDsn) {
|
||||
return undefined;
|
||||
}
|
||||
const matches = sentryDsn.match(/https:\/\/(\S+)@sentry\.io\/(\d+)/);
|
||||
return `https://sentry.io/api/${matches[2]}/store/?sentry_version=7&sentry_key=${matches[1]}`;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue