private static XElement[] GetListRecords(List <RecordQueryResult> records, bool isAbout) { return((from rec in records select new XElement("record", MlEncode.HeaderItem(rec.Header, Properties.granularity), MlEncode.Metadata(rec.Metadata, Properties.granularity), isAbout ? MlEncode.About(rec.About, Properties.granularity) : null )).ToArray()); }
public static XDocument GetRecord(string identifier, string metadataPrefix, List <XElement> errorList, bool?loadAbout, Tenant tenant = null) { List <XElement> errors = errorList; bool isIdentifier = !String.IsNullOrEmpty(identifier); if (!isIdentifier) { errors.Add(MlErrors.badIdentifierArgument); } bool isPrefixOk = !String.IsNullOrEmpty(metadataPrefix); if (!isPrefixOk) { errors.Add(MlErrors.badMetadataArgument); } else if (FormatList.Prefix2Int(metadataPrefix) == 0) { errors.Add(MlErrors.cannotDisseminateFormat); isPrefixOk = false; } bool isAbout = loadAbout.HasValue ? loadAbout.Value : Properties.loadAbout; RecordQueryResult record = null; if (isIdentifier && isPrefixOk) { OAIHelper helper = new OAIHelper(); long datasetId = helper.ConvertToId(identifier); Header header = helper.GetHeader(datasetId); if (header == null) { errors.Add(MlErrors.idDoesNotExist); } else { record = new RecordQueryResult(header, helper.GetMetadata(datasetId, metadataPrefix)); // ToDo Check About in the documentaion of oai-pmh record.About = null; if (record == null || record.Metadata == null) { errors.Add(MlErrors.cannotDisseminateRecordFormat); } } } XElement request = new XElement("request", new XAttribute("verb", "GetRecord"), isIdentifier ? new XAttribute("identifier", identifier) : null, isPrefixOk ? new XAttribute("metadataPrefix", metadataPrefix) : null, Properties.baseURL); if (errors.Count > 0) { errors.Insert(0, request); /* add request on the first position, that it will be diplayed before errors */ return(CreateXml(errors.ToArray())); } XElement theRecord = new XElement("GetRecord", new XElement("record", MlEncode.HeaderItem(record.Header, Properties.granularity), MlEncode.Metadata(record.Metadata, Properties.granularity)), isAbout ? MlEncode.About(record.About, Properties.granularity) : null); return(CreateXml(new XElement[] { request, theRecord })); }