diff --git a/src/main/lombok/com/restfb/types/oembed/BaseOEmbed.java b/src/main/lombok/com/restfb/types/oembed/BaseOEmbed.java new file mode 100644 index 000000000..49b0cd999 --- /dev/null +++ b/src/main/lombok/com/restfb/types/oembed/BaseOEmbed.java @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2010-2020 Mark Allen, Norbert Bartels. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.restfb.types.oembed; + +import com.restfb.Facebook; +import com.restfb.types.AbstractFacebookType; + +import lombok.Getter; +import lombok.Setter; + +public abstract class BaseOEmbed extends AbstractFacebookType { + + /** + * The HTML used to display the page. + */ + @Getter + @Setter + @Facebook + private String html; + + /** + * The height in pixels required to display the HTML. + */ + @Getter + @Setter + @Facebook + private Long height; + + /** + * The width in pixels required to display the HTML. + */ + @Getter + @Setter + @Facebook + private Long width; + + /** + * Name of the provider (Facebook) + */ + @Getter + @Setter + @Facebook("provider_name") + private String providerName; + + /** + * URL of the provider (Facebook) + */ + @Getter + @Setter + @Facebook("provider_url") + private String providerUrl; + + /** + * The oEmbed resource type. See https://oembed.com/. + */ + @Getter + @Setter + @Facebook + private String type; + + /** + * Always 1.0. See https://oembed.com/ + */ + @Getter + @Setter + @Facebook + private String version; + +} diff --git a/src/main/lombok/com/restfb/types/oembed/OEmbedPage.java b/src/main/lombok/com/restfb/types/oembed/OEmbedPage.java new file mode 100644 index 000000000..4d4414061 --- /dev/null +++ b/src/main/lombok/com/restfb/types/oembed/OEmbedPage.java @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2010-2020 Mark Allen, Norbert Bartels. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.restfb.types.oembed; + +import com.restfb.types.AbstractFacebookType; + +/** + * Represents the OEmbed Page type + */ +public class OEmbedPage extends BaseOEmbed { + +} diff --git a/src/main/lombok/com/restfb/types/oembed/OEmbedPost.java b/src/main/lombok/com/restfb/types/oembed/OEmbedPost.java new file mode 100644 index 000000000..68c98ae00 --- /dev/null +++ b/src/main/lombok/com/restfb/types/oembed/OEmbedPost.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2010-2020 Mark Allen, Norbert Bartels. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.restfb.types.oembed; + +import com.restfb.Facebook; +import lombok.Getter; +import lombok.Setter; + +/** + * Represents the OEmbed Post type + */ +public class OEmbedPost extends BaseOEmbed { + + /** + * The name of the Facebook user that owns the post. + */ + @Getter + @Setter + @Facebook("author_name") + private String authorName; + + /** + * A URL for the author/owner of the post. + */ + @Getter + @Setter + @Facebook("author_url") + private String authorUrl; +} diff --git a/src/main/lombok/com/restfb/types/oembed/OEmbedVideo.java b/src/main/lombok/com/restfb/types/oembed/OEmbedVideo.java new file mode 100644 index 000000000..cb829678a --- /dev/null +++ b/src/main/lombok/com/restfb/types/oembed/OEmbedVideo.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2010-2020 Mark Allen, Norbert Bartels. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.restfb.types.oembed; + +import com.restfb.Facebook; + +import lombok.Getter; +import lombok.Setter; + +/** + * Represents the OEmbed Video type + */ +public class OEmbedVideo extends BaseOEmbed { + + /** + * The name of the Facebook user that owns the video. + */ + @Getter + @Setter + @Facebook("author_name") + private String authorName; + + /** + * A URL for the author/owner of the video. + */ + @Getter + @Setter + @Facebook("author_url") + private String authorUrl; + +} diff --git a/src/test/java/com/restfb/types/oembed/OembedTest.java b/src/test/java/com/restfb/types/oembed/OembedTest.java new file mode 100644 index 000000000..b98670137 --- /dev/null +++ b/src/test/java/com/restfb/types/oembed/OembedTest.java @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2010-2020 Mark Allen, Norbert Bartels. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.restfb.types.oembed; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import org.junit.jupiter.api.Test; + +import com.restfb.AbstractJsonMapperTests; + +public class OembedTest extends AbstractJsonMapperTests { + + @Test + void oembedPage() { + OEmbedPage page = createJsonMapper().toJavaObject(jsonFromClasspath("v8_0/oembed_page"), OEmbedPage.class); + baseOEmbedChecks(page); + assertEquals(340, page.getWidth()); + assertEquals(500, page.getHeight()); + } + + @Test + void oembedPost() { + OEmbedPost post = createJsonMapper().toJavaObject(jsonFromClasspath("v8_0/oembed_post"), OEmbedPost.class); + baseOEmbedChecks(post); + assertEquals(552, post.getWidth()); + assertEquals("Test Page", post.getAuthorName()); + assertEquals("https://www.facebook.com/123456789", post.getAuthorUrl()); + } + + @Test + void oembedVideo() { + OEmbedVideo video = createJsonMapper().toJavaObject(jsonFromClasspath("v8_0/oembed_video"), OEmbedVideo.class); + baseOEmbedChecks(video); + assertEquals(552, video.getWidth()); + assertEquals(893, video.getHeight()); + assertEquals("Test Page", video.getAuthorName()); + assertEquals("https://www.facebook.com/123456789", video.getAuthorUrl()); + } + + private void baseOEmbedChecks(BaseOEmbed embed) { + assertNotNull(embed); + assertEquals("Facebook", embed.getProviderName()); + assertEquals("https://www.facebook.com", embed.getProviderUrl()); + assertEquals("rich", embed.getType()); + assertEquals("1.0", embed.getVersion()); + assertEquals("
SOME HTML STUFF
", embed.getHtml()); + } +} diff --git a/src/test/resources/json/v8_0/oembed_page.json b/src/test/resources/json/v8_0/oembed_page.json new file mode 100644 index 000000000..96ce085a4 --- /dev/null +++ b/src/test/resources/json/v8_0/oembed_page.json @@ -0,0 +1,9 @@ +{ + "provider_url": "https://www.facebook.com", + "provider_name": "Facebook", + "height": 500, + "html": "
SOME HTML Stuff
", + "type": "rich", + "version": "1.0", + "width": 340 +} \ No newline at end of file diff --git a/src/test/resources/json/v8_0/oembed_post.json b/src/test/resources/json/v8_0/oembed_post.json new file mode 100644 index 000000000..b1e1b2121 --- /dev/null +++ b/src/test/resources/json/v8_0/oembed_post.json @@ -0,0 +1,10 @@ +{ + "author_name": "Test Page", + "author_url": "https://www.facebook.com/123456789", + "provider_url": "https://www.facebook.com", + "provider_name": "Facebook", + "html": "
SOME HTML STUFF
", + "type": "rich", + "version": "1.0", + "width": 552 +} \ No newline at end of file diff --git a/src/test/resources/json/v8_0/oembed_video.json b/src/test/resources/json/v8_0/oembed_video.json new file mode 100644 index 000000000..48d4a79a7 --- /dev/null +++ b/src/test/resources/json/v8_0/oembed_video.json @@ -0,0 +1,11 @@ +{ + "author_name": "Test Page", + "author_url": "https://www.facebook.com/123456789", + "provider_url": "https://www.facebook.com", + "provider_name": "Facebook", + "html": "
SOME HTML STUFF
", + "type": "rich", + "version": "1.0", + "height": 893, + "width": 552 +} \ No newline at end of file