- correct oai error code messages needed by validator
This commit is contained in:
parent
86d7b064d1
commit
281c321104
|
@ -360,7 +360,7 @@
|
||||||
|
|
||||||
<xsl:template match="SetSpec">
|
<xsl:template match="SetSpec">
|
||||||
<setSpec>
|
<setSpec>
|
||||||
<xsl:value-of select="@Value" />
|
<xsl:value-of select="{Value}" />
|
||||||
</setSpec>
|
</setSpec>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
|
@ -406,7 +406,7 @@
|
||||||
<xsl:text>doc-type:ResearchData</xsl:text>
|
<xsl:text>doc-type:ResearchData</xsl:text>
|
||||||
</dc:type>
|
</dc:type>
|
||||||
<!-- dc:format -->
|
<!-- dc:format -->
|
||||||
<xsl:apply-templates select="File/@MimeType" mode="oai_dc" />
|
<xsl:apply-templates select="{File/MimeType}" mode="oai_dc" />
|
||||||
<!-- <dc:format> -->
|
<!-- <dc:format> -->
|
||||||
<xsl:apply-templates select="File" mode="oai_dc" />
|
<xsl:apply-templates select="File" mode="oai_dc" />
|
||||||
<!-- dc:identifier -->
|
<!-- dc:identifier -->
|
||||||
|
|
|
@ -12,7 +12,7 @@ import { Dataset, Project, License } from "../models/init-models";
|
||||||
import Logger from "jet-logger";
|
import Logger from "jet-logger";
|
||||||
import { BadOaiModelException, OaiModelException } from "../exceptions/OaiModelException";
|
import { BadOaiModelException, OaiModelException } from "../exceptions/OaiModelException";
|
||||||
import PageNotFoundException from "../exceptions/PageNotFoundException";
|
import PageNotFoundException from "../exceptions/PageNotFoundException";
|
||||||
import { OaiErrorCodes } from "../exceptions/OaiErrorCodes";
|
import { OaiErrorCodes, OaiModelError } from "../exceptions/OaiErrorCodes";
|
||||||
import XmlModel from "../library/XmlModel";
|
import XmlModel from "../library/XmlModel";
|
||||||
import Configuration from "../library/oai/OaiConfiguration";
|
import Configuration from "../library/oai/OaiConfiguration";
|
||||||
import ResumptionToken from "../library/oai/ResumptionToken";
|
import ResumptionToken from "../library/oai/ResumptionToken";
|
||||||
|
@ -89,7 +89,12 @@ export class OaiController {
|
||||||
await this.handleRequest(oaiRequest, request);
|
await this.handleRequest(oaiRequest, request);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (error instanceof OaiModelException) {
|
if (error instanceof OaiModelException) {
|
||||||
this.xsltParameter["oai_error_code"] = error.oaiCode;
|
let code = error.oaiCode;
|
||||||
|
let oaiErrorCode: string | undefined = "Unknown oai error code " + code;
|
||||||
|
if (OaiModelError.has(error.oaiCode) && OaiModelError.get(code) != undefined) {
|
||||||
|
oaiErrorCode = OaiModelError.get(error.oaiCode);
|
||||||
|
}
|
||||||
|
this.xsltParameter["oai_error_code"] = oaiErrorCode;
|
||||||
this.xsltParameter["oai_error_message"] = error.message;
|
this.xsltParameter["oai_error_message"] = error.message;
|
||||||
} else {
|
} else {
|
||||||
// return next(error); // passing to default express middleware error handler
|
// return next(error); // passing to default express middleware error handler
|
||||||
|
@ -255,6 +260,13 @@ export class OaiController {
|
||||||
throw new BadOaiModelException("The prefix of the identifier argument is unknown.");
|
throw new BadOaiModelException("The prefix of the identifier argument is unknown.");
|
||||||
}
|
}
|
||||||
const dataId = Number(this.getDocumentIdByIdentifier(oaiRequest.identifier));
|
const dataId = Number(this.getDocumentIdByIdentifier(oaiRequest.identifier));
|
||||||
|
if (isNaN(dataId)) {
|
||||||
|
throw new OaiModelException(
|
||||||
|
StatusCodes.INTERNAL_SERVER_ERROR,
|
||||||
|
"The value of the identifier argument is illegal in this repository.",
|
||||||
|
OaiErrorCodes.BADARGUMENT,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// let dataset: Dataset | null;
|
// let dataset: Dataset | null;
|
||||||
|
|
||||||
|
@ -438,6 +450,14 @@ export class OaiController {
|
||||||
let fromDate = dayjs(from);
|
let fromDate = dayjs(from);
|
||||||
const until = oaiRequest["until"] as string;
|
const until = oaiRequest["until"] as string;
|
||||||
let untilDate = dayjs(until);
|
let untilDate = dayjs(until);
|
||||||
|
if (!fromDate.isValid() || !untilDate.isValid()) {
|
||||||
|
throw new OaiModelException(
|
||||||
|
StatusCodes.INTERNAL_SERVER_ERROR,
|
||||||
|
"Date Parameter is not valid.",
|
||||||
|
OaiErrorCodes.BADARGUMENT,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
if (from.length != until.length) {
|
if (from.length != until.length) {
|
||||||
throw new OaiModelException(
|
throw new OaiModelException(
|
||||||
StatusCodes.INTERNAL_SERVER_ERROR,
|
StatusCodes.INTERNAL_SERVER_ERROR,
|
||||||
|
@ -460,6 +480,13 @@ export class OaiController {
|
||||||
} else if ("from" in oaiRequest && !("until" in oaiRequest)) {
|
} else if ("from" in oaiRequest && !("until" in oaiRequest)) {
|
||||||
const from = oaiRequest["from"] as string;
|
const from = oaiRequest["from"] as string;
|
||||||
let fromDate = dayjs(from);
|
let fromDate = dayjs(from);
|
||||||
|
if (!fromDate.isValid()) {
|
||||||
|
throw new OaiModelException(
|
||||||
|
StatusCodes.INTERNAL_SERVER_ERROR,
|
||||||
|
"From date parameter is not valid.",
|
||||||
|
OaiErrorCodes.BADARGUMENT,
|
||||||
|
);
|
||||||
|
}
|
||||||
fromDate.hour() == 0 && (fromDate = fromDate.startOf("day"));
|
fromDate.hour() == 0 && (fromDate = fromDate.startOf("day"));
|
||||||
|
|
||||||
const now = dayjs();
|
const now = dayjs();
|
||||||
|
@ -480,6 +507,13 @@ export class OaiController {
|
||||||
} else if (!("from" in oaiRequest) && "until" in oaiRequest) {
|
} else if (!("from" in oaiRequest) && "until" in oaiRequest) {
|
||||||
const until = oaiRequest["until"] as string;
|
const until = oaiRequest["until"] as string;
|
||||||
let untilDate = dayjs(until);
|
let untilDate = dayjs(until);
|
||||||
|
if (!untilDate.isValid()) {
|
||||||
|
throw new OaiModelException(
|
||||||
|
StatusCodes.INTERNAL_SERVER_ERROR,
|
||||||
|
"Until date parameter is not valid.",
|
||||||
|
OaiErrorCodes.BADARGUMENT,
|
||||||
|
);
|
||||||
|
}
|
||||||
untilDate.hour() == 0 && (untilDate = untilDate.endOf("day"));
|
untilDate.hour() == 0 && (untilDate = untilDate.endOf("day"));
|
||||||
|
|
||||||
const firstPublishedDataset: Dataset = (await Dataset.earliestPublicationDate()) as Dataset;
|
const firstPublishedDataset: Dataset = (await Dataset.earliestPublicationDate()) as Dataset;
|
||||||
|
|
|
@ -9,3 +9,42 @@ export enum OaiErrorCodes {
|
||||||
|
|
||||||
// 👇️ default export
|
// 👇️ default export
|
||||||
// export { OaiErrorCodes };
|
// export { OaiErrorCodes };
|
||||||
|
|
||||||
|
// https://medium.com/@juliapassynkova/map-your-typescript-enums-e402d406b229
|
||||||
|
export const OaiModelError = new Map<number, string>([
|
||||||
|
[OaiErrorCodes.BADARGUMENT, 'badVerb'],
|
||||||
|
[OaiErrorCodes.BADARGUMENT, 'badArgument'],
|
||||||
|
[OaiErrorCodes.NORECORDSMATCH, 'noRecordsMatch'],
|
||||||
|
[OaiErrorCodes.CANNOTDISSEMINATEFORMAT, 'cannotDisseminateFormat'],
|
||||||
|
[OaiErrorCodes.BADRESUMPTIONTOKEN, 'badResumptionToken'],
|
||||||
|
[OaiErrorCodes.IDDOESNOTEXIST, 'idDoesNotExist']
|
||||||
|
]);
|
||||||
|
|
||||||
|
// class OaiModelError {
|
||||||
|
// // const BADVERB = 1010;
|
||||||
|
// // const BADARGUMENT = 1011;
|
||||||
|
// // const CANNOTDISSEMINATEFORMAT = 1012;
|
||||||
|
// // const BADRESUMPTIONTOKEN = 1013;
|
||||||
|
// // const NORECORDSMATCH = 1014;
|
||||||
|
// // const IDDOESNOTEXIST = 1015;
|
||||||
|
|
||||||
|
|
||||||
|
// protected static $oaiErrorCodes = {
|
||||||
|
// OaiErrorCodes. 'badVerb',
|
||||||
|
// BADARGUMENT : 'badArgument',
|
||||||
|
// NORECORDSMATCH: 'noRecordsMatch',
|
||||||
|
// CANNOTDISSEMINATEFORMAT: 'cannotDisseminateFormat',
|
||||||
|
// BADRESUMPTIONTOKEN: 'badResumptionToken',
|
||||||
|
// IDDOESNOTEXIST: 'idDoesNotExist',
|
||||||
|
// };
|
||||||
|
|
||||||
|
|
||||||
|
// public static function mapCode($code)
|
||||||
|
// {
|
||||||
|
// if (false === array_key_exists($code, self::$oaiErrorCodes)) {
|
||||||
|
// throw new OaiModelException("Unknown oai error code $code");
|
||||||
|
// }
|
||||||
|
// return self::$oaiErrorCodes[$code];
|
||||||
|
// }
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
Loading…
Reference in New Issue
Block a user