-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
210f724
commit c77a99e
Showing
5 changed files
with
181 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
63 changes: 63 additions & 0 deletions
63
record-api-common/src/main/java/eu/europeana/api/config/MediaType.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
package eu.europeana.api.config; | ||
|
||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; | ||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; | ||
|
||
/** | ||
* @author srishti singh | ||
* @since 19 October 2023 | ||
*/ | ||
@JacksonXmlRootElement(localName = "format") | ||
public class MediaType { | ||
|
||
private static final String BROWSER = "Browser"; | ||
private static final String RENDERED = "Rendered"; | ||
private static final String EU_SCREEN = "EUScreen"; | ||
|
||
public static final String VIDEO = "Video"; | ||
public static final String SOUND = "Sound"; | ||
|
||
@JacksonXmlProperty(localName = "mediaType", isAttribute = true) | ||
private String mimeType; | ||
|
||
@JacksonXmlProperty(isAttribute = true) | ||
private String label; | ||
|
||
@JacksonXmlProperty(isAttribute = true) | ||
private String type; | ||
|
||
@JacksonXmlProperty(isAttribute = true) | ||
private String support; | ||
|
||
public String getMimeType() { | ||
return mimeType; | ||
} | ||
|
||
public String getLabel() { | ||
return label; | ||
} | ||
|
||
public String getType() { | ||
return type; | ||
} | ||
|
||
public String getSupport() { | ||
return support; | ||
} | ||
|
||
public boolean isRendered() { | ||
return RENDERED.equals(getSupport()); | ||
} | ||
|
||
public boolean isBrowserSupported() { | ||
return BROWSER.equals(getSupport()); | ||
} | ||
|
||
public boolean isVideoOrSound() { | ||
return ( VIDEO.equals(getType()) || SOUND.equals(getType()) ) ; | ||
} | ||
|
||
public boolean isEuScreen() { | ||
return EU_SCREEN.equals(getSupport()); | ||
} | ||
} |
62 changes: 62 additions & 0 deletions
62
record-api-common/src/main/java/eu/europeana/api/config/MediaTypes.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
package eu.europeana.api.config; | ||
|
||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; | ||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; | ||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; | ||
import org.apache.commons.lang3.StringUtils; | ||
|
||
import java.util.HashMap; | ||
import java.util.List; | ||
import java.util.Map; | ||
import java.util.Optional; | ||
|
||
/** | ||
* @author srishti singh | ||
* @since 19 October 2023 | ||
*/ | ||
@JacksonXmlRootElement(localName = "config") | ||
public class MediaTypes { | ||
|
||
@JacksonXmlElementWrapper(useWrapping = false) | ||
@JacksonXmlProperty(localName = "format") | ||
public List<MediaType> mediaTypeCategories; | ||
|
||
private Map<String, MediaType> map = new HashMap<>(); | ||
|
||
/** | ||
* Map contains all the suppoerted media types except EU Screen entries | ||
* @return | ||
*/ | ||
public Map<String, MediaType> getMap() { | ||
return this.map; | ||
} | ||
|
||
|
||
/** | ||
* Checks if a media Type is configured for the given mime Type | ||
* | ||
* @param mimeType mime type to match | ||
* @return true if a Media Type match is configured, false otherwise. | ||
*/ | ||
public boolean hasMediaType(String mimeType) { | ||
return map.containsKey(mimeType); | ||
} | ||
|
||
/** | ||
* Gets the configured media Type for the given entity mime type | ||
* | ||
* @param mimetype entity ID | ||
* @return Matching media Type, or empty Optional if none found | ||
*/ | ||
public Optional<MediaType> getMediaType(String mimetype) { | ||
if (StringUtils.isNotEmpty(mimetype)) { | ||
return Optional.ofNullable(map.get(mimetype)); | ||
} | ||
return Optional.empty(); | ||
} | ||
|
||
public Optional<MediaType> getEUScreenType(String edmType) { | ||
return mediaTypeCategories.stream().filter(s -> s.isEuScreen() && s.getType().equalsIgnoreCase(edmType)).findFirst(); | ||
} | ||
|
||
} |
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
<?xml version='1.0' encoding='UTF-8'?> | ||
<config> | ||
<format mediaType="image/gif" label="GIF" type="Image" support="Browser"/> | ||
<format mediaType="image/jpeg" label="JPEG" type="Image" support="Browser"/> | ||
<format mediaType="image/png" label="PNG" type="Image" support="Browser"/> | ||
<format mediaType="image/bmp" label="BMP" type="Image" support="Browser"/> | ||
<format mediaType="image/x-ms-bmp" label="BMP" type="Image" support="Browser"/> | ||
<format mediaType="image/svg+xml" label="SVG" type="Image" support="Browser"/> | ||
<format mediaType="image/webp" label="WebP" type="Image" support="Browser"/> | ||
<format mediaType="audio/mp4" label="MP4" type="Sound" support="Browser"/> | ||
<format mediaType="audio/mpeg" label="MPEG" type="Sound" support="Browser"/> | ||
<format mediaType="audio/ogg" label="Ogg (Audio)" type="Sound" support="Browser"/> | ||
<format mediaType="audio/vnd.wave" label="WAVE" type="Sound" support="Browser"/> | ||
<format mediaType="audio/vorbis" label="Vorbis" type="Sound" support="Browser"/> | ||
<format mediaType="audio/x-flac" label="FLAC" type="Sound" support="Browser"/> | ||
<format mediaType="audio/x-wav" label="WAV" type="Sound" support="Browser"/> | ||
<format mediaType="video/ogg" label="Ogg (Video)" type="Video" support="Browser"/> | ||
<format mediaType="video/mp4" label="MP4" type="Video" support="Browser"/> | ||
<format mediaType="video/mpeg" label="MPEG" type="Video" support="Browser"/> | ||
<format mediaType="video/quicktime" label="QTFF" type="Video" support="Browser"/> | ||
<format mediaType="video/webm" label="WebM" type="Video" support="Browser"/> | ||
<format mediaType="video/x-m4v" label="M4V" type="Video" support="Browser"/> | ||
<format mediaType="application/dash+xml" label="MPEG-DASH" type="Video" support="Browser"/> | ||
<format mediaType="video/x-flv" label="FLV" type="Video" support="Rendered"/> | ||
<format mediaType="audio/x-ms-wma" label="WMA" type="Sound" support="Rendered"/> | ||
<format mediaType="video/x-ms-wmv" label="WMV" type="Video" support="Rendered"/> | ||
<format mediaType="video/x-msvideo" label="AVI" type="Video" support="Rendered"/> | ||
<format mediaType="image/jp2" label="JP2000" type="Image" support="Rendered"/> | ||
<format mediaType="image/x-pict" label="PICT" type="Image" support="Rendered"/> | ||
<format mediaType="image/tiff" label="TIFF" type="Image" support="Rendered"/> | ||
<format mediaType="image/x-xcf" label="XCF" type="Image" support="Rendered"/> | ||
<format mediaType="image/vnd.djvu" label="DjVu" type="Image" support="Rendered"/> | ||
<format mediaType="image/vnd.adobe.photoshop" label="PSD" type="Image" support="Rendered"/> | ||
<format mediaType="text/plain" label="TXT" type="Text" support="Rendered"/> | ||
<format mediaType="application/pdf" label="PDF" type="Text" support="Rendered"/> | ||
<format mediaType="application/rtf" label="RTF" type="Text" support="Rendered"/> | ||
<format mediaType="application/epub+zip" label="EPUB" type="Text" support="Rendered"/> | ||
<format type="Video" support="EUScreen"/> | ||
<format type="Sound" support="EUScreen"/> | ||
</config> |