Skip to content

Commit

Permalink
fix: migrate certificateService to ts
Browse files Browse the repository at this point in the history
Signed-off-by: Maksim Sukharev <antreesy.web@gmail.com>
  • Loading branch information
Antreesy committed Nov 26, 2024
1 parent 347edd4 commit 20fa564
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 54 deletions.
2 changes: 1 addition & 1 deletion src/components/AdminSettings/TurnServer.vue
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ import NcPasswordField from '@nextcloud/vue/dist/Components/NcPasswordField.js'
import NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'
import NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'

import { isCertificateValid } from '../../services/certificateService.js'
import { isCertificateValid } from '../../services/certificateService.ts'

export default {
name: 'TurnServer',
Expand Down
53 changes: 0 additions & 53 deletions src/services/certificateService.js

This file was deleted.

56 changes: 56 additions & 0 deletions src/services/certificateService.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
/**
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import axios from '@nextcloud/axios'
import { generateOcsUrl } from '@nextcloud/router'

import type { certificateExpirationParams, certificateExpirationResponse } from '../types/index.ts'

/**
* Retrieves the certificate expiration of the specified host
*
* @param host The host to check the certificate
* @return {Promise<number|null>} Null if unable to retrieve the certificates expiration, otherwise the expiration in days (negative if already expired)
*/
const getCertificateExpiration = async (host: certificateExpirationParams['host']): certificateExpirationResponse => {
return axios.get(generateOcsUrl('apps/spreed/api/v1/certificate/expiration'), {
params: {
host,
} as certificateExpirationParams,
})
}

/**
* Checks if the certificate of a host is valid
*
* @param host The host to check the certificate
* @return {boolean} true if the certificate is valid, false otherwise
*/
const isCertificateValid = async (host: certificateExpirationParams['host']): Promise<boolean> => {
try {
const response = await getCertificateExpiration(host)
const expiration = response.data.ocs.data.expiration_in_days

if (expiration == null) {
console.warn('Unable to check certificate of', host)
return false
}

if (expiration < 0) {
console.error('Certificate of', host, 'expired')
return false
} else {
console.info('Certificate of', host, 'is valid for', expiration, 'days')
return true
}
} catch (error) {
console.error(error)
return false
}
}

export {
getCertificateExpiration,
isCertificateValid,
}
4 changes: 4 additions & 0 deletions src/types/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,10 @@ export type getBotsAdminResponse = ApiResponse<operations['bot-admin-list-bots']
export type enableBotResponse = ApiResponse<operations['bot-enable-bot']['responses'][201]['content']['application/json']>
export type disableBotResponse = ApiResponse<operations['bot-disable-bot']['responses'][200]['content']['application/json']>

// Certificate
export type certificateExpirationParams = operations['certificate-get-certificate-expiration']['parameters']['query']
export type certificateExpirationResponse = ApiResponse<operations['certificate-get-certificate-expiration']['responses'][200]['content']['application/json']>

// Federations
export type FederationInvite = components['schemas']['FederationInvite']
type FederationInviteRichParameters = {
Expand Down

0 comments on commit 20fa564

Please sign in to comment.