overhauled API:
- wrote openapi schema - re-implemented api endpoint following openapi schema - intensified and improved working with Result objects Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
/* © SRSoftware 2024 */
|
||||
package de.srsoftware.cal.importer.jena;
|
||||
|
||||
import static de.srsoftware.tools.Error.error;
|
||||
import static de.srsoftware.tools.Result.transform;
|
||||
import static de.srsoftware.tools.TagFilter.*;
|
||||
|
||||
import de.srsoftware.cal.BaseImporter;
|
||||
import de.srsoftware.tools.*;
|
||||
import de.srsoftware.tools.Error;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
@@ -31,12 +31,12 @@ public class Kassablanca extends BaseImporter {
|
||||
protected Result<Tag> extractDescriptionTag(Tag eventTag) {
|
||||
var list = eventTag.find(attributeHas("class", "se-content"));
|
||||
if (list.size() == 1) return Payload.of(list.getFirst());
|
||||
return Error.of("Failed to find description tag");
|
||||
return error("Failed to find description tag");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Result<Tag> extractEndTag(Tag eventTag) {
|
||||
return Error.format("end date not supported");
|
||||
return error("end date not supported");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -44,7 +44,7 @@ public class Kassablanca extends BaseImporter {
|
||||
if (pageResult.optional().isEmpty()) return transform(pageResult);
|
||||
var list = pageResult.optional().get().find(attributeEquals("class", APPOINTMENT_TAG_ID));
|
||||
if (list.size() == 1) return Payload.of(list.getFirst());
|
||||
return Error.format("Could not find tag with id \"%s\"", APPOINTMENT_TAG_ID);
|
||||
return error("Could not find tag with id \"%s\"", APPOINTMENT_TAG_ID);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -85,7 +85,7 @@ public class Kassablanca extends BaseImporter {
|
||||
protected Result<Tag> extractStartTag(Tag eventTag) {
|
||||
List<Tag> tags = eventTag.find(attributeEquals("class", "se-header"));
|
||||
if (tags.size() == 1) return Payload.of(tags.getFirst());
|
||||
return Error.of("Failed to find event time information");
|
||||
return error("Failed to find event time information");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -97,7 +97,7 @@ public class Kassablanca extends BaseImporter {
|
||||
protected Result<Tag> extractTitleTag(Tag eventTag) {
|
||||
var list = eventTag.find(ofType("h1"));
|
||||
if (list.size() == 1) return Payload.of(list.getFirst());
|
||||
return Error.of("Failed to find title tag");
|
||||
return error("Failed to find title tag");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -117,7 +117,7 @@ public class Kassablanca extends BaseImporter {
|
||||
var date = LocalDateTime.of(year, month, day, hour, minute);
|
||||
return Payload.of(date);
|
||||
}
|
||||
return Error.of("Could not recognize start date/time");
|
||||
return error("Could not recognize start date/time");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
/* © SRSoftware 2024 */
|
||||
package de.srsoftware.cal.importer.jena;
|
||||
|
||||
import static de.srsoftware.tools.Error.error;
|
||||
import static de.srsoftware.tools.Optionals.nullable;
|
||||
import static de.srsoftware.tools.Result.transform;
|
||||
import static de.srsoftware.tools.TagFilter.*;
|
||||
|
||||
import de.srsoftware.cal.BaseImporter;
|
||||
import de.srsoftware.tools.Error;
|
||||
import de.srsoftware.tools.Payload;
|
||||
import de.srsoftware.tools.Result;
|
||||
import de.srsoftware.tools.Tag;
|
||||
@@ -42,12 +42,12 @@ public class Rosenkeller extends BaseImporter {
|
||||
.stream()
|
||||
.findAny();
|
||||
if (opt.isPresent()) return Payload.of(opt.get());
|
||||
return Error.of("Failed to find description tag");
|
||||
return error("Failed to find description tag");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Result<Tag> extractEndTag(Tag eventTag) {
|
||||
return Error.of("extractEndTag(…) not supported");
|
||||
return error("extractEndTag(…) not supported");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -55,7 +55,7 @@ public class Rosenkeller extends BaseImporter {
|
||||
if (pageResult.optional().isEmpty()) return transform(pageResult);
|
||||
var list = pageResult.optional().get().find(attributeEquals("id", APPOINTMENT_TAG_ID));
|
||||
if (list.size() == 1) return Payload.of(list.getFirst());
|
||||
return Error.format("Could not find tag with id \"%s\"", APPOINTMENT_TAG_ID);
|
||||
return error("Could not find tag with id \"%s\"", APPOINTMENT_TAG_ID);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -88,7 +88,7 @@ public class Rosenkeller extends BaseImporter {
|
||||
protected Result<Tag> extractStartTag(Tag eventTag) {
|
||||
List<Tag> list = eventTag.find(attributeEquals("class", "tribe-event-date-start"));
|
||||
if (list.size() == 1) return Payload.of(list.getFirst());
|
||||
return Error.of("Failed to locate start tag");
|
||||
return error("Failed to locate start tag");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -100,12 +100,12 @@ public class Rosenkeller extends BaseImporter {
|
||||
protected Result<Tag> extractTitleTag(Tag eventTag) {
|
||||
var list = eventTag.find(attributeEndsWith("class", "single-event-title"));
|
||||
if (list.size() == 1) return Payload.of(list.getFirst());
|
||||
return Error.of("Failed to find title tag");
|
||||
return error("Failed to find title tag");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Result<LocalDateTime> parseEndDate(String text) {
|
||||
return Error.of("parseEndDate(…) not supported");
|
||||
return error("parseEndDate(…) not supported");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -123,7 +123,7 @@ public class Rosenkeller extends BaseImporter {
|
||||
if (date.isBefore(now)) date = date.plusYears(1);
|
||||
return Payload.of(date);
|
||||
}
|
||||
return Error.format("Failed to recognize a date in \"%s\"", text);
|
||||
return error("Failed to recognize a date in \"%s\"", text);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user