feat(ntfy): add auth support

This commit is contained in:
Ali BARIN
2022-12-05 00:45:02 +01:00
parent 46bfc597ec
commit 6995323a45
5 changed files with 85 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
import verifyCredentials from './verify-credentials';
import isStillVerified from './is-still-verified';
export default {
fields: [
{
key: 'serverUrl',
label: 'Server URL',
type: 'string' as const,
required: true,
readOnly: false,
value: 'https://ntfy.sh',
placeholder: null,
description: 'ntfy server to use.',
clickToCopy: false,
},
{
key: 'username',
label: 'Username',
type: 'string' as const,
required: false,
readOnly: false,
placeholder: null,
clickToCopy: false,
},
{
key: 'password',
label: 'Password',
type: 'string' as const,
required: false,
readOnly: false,
placeholder: null,
clickToCopy: false,
},
],
verifyCredentials,
isStillVerified,
};

View File

@@ -0,0 +1,9 @@
import { IGlobalVariable } from '@automatisch/types';
import verifyCredentials from './verify-credentials';
const isStillVerified = async ($: IGlobalVariable) => {
await verifyCredentials($);
return true;
};
export default isStillVerified;

View File

@@ -0,0 +1,16 @@
import { IGlobalVariable } from '@automatisch/types';
const verifyCredentials = async ($: IGlobalVariable) => {
await $.http.post('/', { topic: 'automatisch' });
let screenName = $.auth.data.serverUrl;
if ($.auth.data.username) {
screenName = `${$.auth.data.username} @ ${screenName}`
}
await $.auth.set({
screenName,
});
};
export default verifyCredentials;

View File

@@ -0,0 +1,18 @@
import { TBeforeRequest } from '@automatisch/types';
const addAuthHeader: TBeforeRequest = ($, requestConfig) => {
if ($.auth.data.apiBaseUrl) {
requestConfig.baseURL = $.auth.data.apiBaseUrl as string;
}
if ($.auth.data?.username && $.auth.data?.password) {
requestConfig.auth = {
username: $.auth.data.username as string,
password: $.auth.data.password as string,
}
}
return requestConfig;
};
export default addAuthHeader;

View File

@@ -1,5 +1,6 @@
import defineApp from '../../helpers/define-app';
import addAuthHeader from './common/add-auth-header';
import auth from './auth';
export default defineApp({
name: 'Ntfy',
@@ -10,4 +11,6 @@ export default defineApp({
baseUrl: 'https://ntfy.sh',
apiBaseUrl: 'https://ntfy.sh',
primaryColor: '56bda8',
beforeRequest: [addAuthHeader],
auth,
});