mirror of
https://github.com/unraid/api.git
synced 2026-01-06 16:49:49 -06:00
feat: getOsReleaseBySha256 cached endpoint with keyfile header
This commit is contained in:
@@ -1,7 +1,5 @@
|
||||
import { request } from '~/composables/services/request';
|
||||
|
||||
import type { Release } from '~/store/updateOsActions';
|
||||
|
||||
const KeyServer = request.url('https://keys.lime-technology.com');
|
||||
|
||||
export interface StartTrialPayload {
|
||||
@@ -48,8 +46,3 @@ export const keyLatest = async (payload: KeyLatestPayload): Promise<KeyLatestRes
|
||||
.formUrl(payload)
|
||||
.post()
|
||||
.json();
|
||||
|
||||
export const getOsReleaseBySha256 = async (sha256: string): Promise<Release> => await KeyServer
|
||||
.url(`/versions/sha256/${sha256}`)
|
||||
.get()
|
||||
.json();
|
||||
|
||||
17
web/composables/services/releases.ts
Normal file
17
web/composables/services/releases.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import { request } from '~/composables/services/request';
|
||||
|
||||
import type { Release } from '~/store/updateOsActions';
|
||||
|
||||
const ReleasesRequest = request.url('https://releases.unraid.net');
|
||||
|
||||
export interface GetOsReleaseBySha256Payload {
|
||||
keyfile: string;
|
||||
sha256: string;
|
||||
}
|
||||
export const getOsReleaseBySha256 = async (payload: GetOsReleaseBySha256Payload): Promise<Release> => await ReleasesRequest
|
||||
.headers({
|
||||
'X-Unraid-Keyfile': payload.keyfile,
|
||||
})
|
||||
.url(`/sha256/${payload.sha256}`)
|
||||
.get()
|
||||
.json();
|
||||
@@ -2,7 +2,7 @@ import { ArrowPathIcon, BellAlertIcon } from '@heroicons/vue/24/solid';
|
||||
import { defineStore, createPinia, setActivePinia } from 'pinia';
|
||||
|
||||
import useInstallPlugin from '~/composables/installPlugin';
|
||||
import { getOsReleaseBySha256 } from '~/composables/services/keyServer';
|
||||
import { getOsReleaseBySha256, type GetOsReleaseBySha256Payload } from '~/composables/services/releases';
|
||||
|
||||
import { WEBGUI_TOOLS_UPDATE } from '~/helpers/urls';
|
||||
|
||||
@@ -124,13 +124,16 @@ export const useUpdateOsActionsStore = defineStore('updateOsActions', () => {
|
||||
/**
|
||||
* @description When receiving the callback the Account update page we'll use the provided sha256 of the release to get the release from the keyserver
|
||||
*/
|
||||
const getReleaseFromKeyServer = async (sha256: string) => {
|
||||
console.debug('[getReleaseFromKeyServer]', sha256);
|
||||
if (!sha256) {
|
||||
throw new Error('No sha256 provided');
|
||||
const getReleaseFromKeyServer = async (payload: GetOsReleaseBySha256Payload) => {
|
||||
console.debug('[getReleaseFromKeyServer]', payload);
|
||||
if (!payload.keyfile) {
|
||||
throw new Error('No payload.keyfile provided');
|
||||
}
|
||||
if (!payload.sha256) {
|
||||
throw new Error('No payload.sha256 provided');
|
||||
}
|
||||
try {
|
||||
const response = await getOsReleaseBySha256(sha256);
|
||||
const response = await getOsReleaseBySha256(payload);
|
||||
console.debug('[getReleaseFromKeyServer]', response);
|
||||
return response;
|
||||
} catch (error) {
|
||||
@@ -145,7 +148,10 @@ export const useUpdateOsActionsStore = defineStore('updateOsActions', () => {
|
||||
};
|
||||
|
||||
const actOnUpdateOsAction = async () => {
|
||||
const foundRelease = await getReleaseFromKeyServer(updateAction.value?.sha256 ?? '');
|
||||
const foundRelease = await getReleaseFromKeyServer({
|
||||
keyfile: keyfile.value,
|
||||
sha256: updateAction.value?.sha256 ?? '',
|
||||
});
|
||||
console.debug('[redirectToCallbackType] updateOs foundRelease', foundRelease);
|
||||
if (!foundRelease) {
|
||||
throw new Error('Release not found');
|
||||
|
||||
Reference in New Issue
Block a user