From b3b52baf116b4bab7dbf4c0093ec53635ad39298 Mon Sep 17 00:00:00 2001 From: Sudhanshu Gautam Date: Mon, 26 Apr 2021 02:09:25 +0530 Subject: [PATCH] fix snapshot download links --- src/config.ts | 4 +++- src/containers/home/components/ProfileDetails.tsx | 14 +++++++++----- src/containers/home/utils/links.ts | 11 +++++++++++ src/utils/api.ts | 3 ++- src/utils/asu.ts | 3 ++- 5 files changed, 27 insertions(+), 8 deletions(-) create mode 100644 src/containers/home/utils/links.ts diff --git a/src/config.ts b/src/config.ts index c47d25c..d91b15a 100644 --- a/src/config.ts +++ b/src/config.ts @@ -11,7 +11,9 @@ const config = { default_version: '19.07.7', // Image download URL (optional) - image_url: 'https://downloads.openwrt.org/releases/{version}/targets/{target}', + base_url: 'https://downloads.openwrt.org', + releases_directory: 'releases', + target_directory: 'targets', // Info link URL (optional) info_url: 'https://openwrt.org/start?do=search&id=toh&q={title}', diff --git a/src/containers/home/components/ProfileDetails.tsx b/src/containers/home/components/ProfileDetails.tsx index 169ddea..41abfb9 100644 --- a/src/containers/home/components/ProfileDetails.tsx +++ b/src/containers/home/components/ProfileDetails.tsx @@ -35,6 +35,7 @@ import config from '../../../config'; import { getTitle } from '../utils/title'; import asu from '../../../utils/asu'; import { GetBuildResponse } from '../../../types/asu'; +import { getAsuDownloadLink, getStockDownloadLink } from '../utils/links'; const useStyles = makeStyles(() => ({ chip: { @@ -153,9 +154,11 @@ const ProfileDetails: FunctionComponent = ({ selectedVersion, selectedPro const buildCustomImage = async () => { setBuildStatus('Please wait...'); + setBuildError(undefined); try { const response = await asu.build( Array.from(customPackages.values()), + profile.target, profile.id, profile.version_number, onBuildStatusChange @@ -254,9 +257,11 @@ const ProfileDetails: FunctionComponent = ({ selectedVersion, selectedPro {profile.images?.map((i) => { - const downloadURL = `${config.image_url - .replace('{target}', profile.target) - .replace('{version}', profile.version_number)}/${i.name}`; + const downloadURL = getStockDownloadLink( + profile.version_number, + profile.target, + i.name + ); return ( @@ -426,8 +431,7 @@ const ProfileDetails: FunctionComponent = ({ selectedVersion, selectedPro {buildResponse.images?.map((i) => { - // eslint-disable-next-line max-len - const downloadURL = `${config.asu_url}/store/${buildResponse.bin_dir}/${i.name}`; + const downloadURL = getAsuDownloadLink(buildResponse.bin_dir, i.name); return ( diff --git a/src/containers/home/utils/links.ts b/src/containers/home/utils/links.ts new file mode 100644 index 0000000..b04abda --- /dev/null +++ b/src/containers/home/utils/links.ts @@ -0,0 +1,11 @@ +import config from '../../../config'; + +export const getAsuDownloadLink = (bin_dir: string, name: string) => { + return `${config.asu_url}/store/${bin_dir}/${name}`; +}; + +export const getStockDownloadLink = (version: string, target: string, name: string) => { + return `${config.base_url}/${ + version === 'SNAPSHOT' ? 'snapshots' : `${config.releases_directory}/${version}` + }/${config.target_directory}/${target}/${name}`; +}; diff --git a/src/utils/api.ts b/src/utils/api.ts index 1613cf3..f7529b9 100644 --- a/src/utils/api.ts +++ b/src/utils/api.ts @@ -3,8 +3,9 @@ import config from '../config'; import { GetBuildResponse } from '../types/asu'; const asu = { - buildNew: (packages: string[], profile: string, version: string) => + buildNew: (packages: string[], target: string, profile: string, version: string) => axios.post(`${config.asu_url}/api/build`, { + target, version, profile, packages, diff --git a/src/utils/asu.ts b/src/utils/asu.ts index 9938c38..7142479 100644 --- a/src/utils/asu.ts +++ b/src/utils/asu.ts @@ -3,11 +3,12 @@ import { sleep } from './common'; const build = async ( packages: string[], + target: string, profile: string, version: string, buildStatusCallback: (status: string) => void ) => { - const buildResponse = await api.asu.buildNew(packages, profile, version); + const buildResponse = await api.asu.buildNew(packages, target, profile, version); if (buildResponse.status === 202) { buildStatusCallback(`#${buildResponse} in queue`); }