From 28550a86f6f9b4dea05e3c19fb89ab7e4f6996ef Mon Sep 17 00:00:00 2001 From: Pinapelz Date: Tue, 4 Apr 2023 12:11:11 -0700 Subject: Initial Commit --- src/main/java/com/pina/Channel.java | 12 ++++++++ src/main/java/com/pina/Holodex.java | 44 ++++++++++++++++++++++++++++ src/main/java/com/pina/HolodexException.java | 11 +++++++ src/main/java/com/pina/HolodexService.java | 16 ++++++++++ src/main/java/com/pina/LiveStream.java | 18 ++++++++++++ src/main/java/com/pina/UpcomingStream.java | 10 +++++++ 6 files changed, 111 insertions(+) create mode 100644 src/main/java/com/pina/Channel.java create mode 100644 src/main/java/com/pina/Holodex.java create mode 100644 src/main/java/com/pina/HolodexException.java create mode 100644 src/main/java/com/pina/HolodexService.java create mode 100644 src/main/java/com/pina/LiveStream.java create mode 100644 src/main/java/com/pina/UpcomingStream.java (limited to 'src/main/java/com') diff --git a/src/main/java/com/pina/Channel.java b/src/main/java/com/pina/Channel.java new file mode 100644 index 0000000..36cf499 --- /dev/null +++ b/src/main/java/com/pina/Channel.java @@ -0,0 +1,12 @@ +package com.pina; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class Channel { + public String english_name; + public String id; + public String name; + public String photo; + public String type; +} diff --git a/src/main/java/com/pina/Holodex.java b/src/main/java/com/pina/Holodex.java new file mode 100644 index 0000000..38c519a --- /dev/null +++ b/src/main/java/com/pina/Holodex.java @@ -0,0 +1,44 @@ +package com.pina; + +import retrofit2.Call; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; + +import java.io.IOException; +import java.util.List; + +public class Holodex { + private final HolodexService service; + + public Holodex(){ + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("https://holodex.net") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + service = retrofit.create(HolodexService.class); + } + public List getLiveStreams() throws HolodexException { + Call> call = service.getLiveStreams("channel,clip"); + return executeCall(call); + } + + public List getUpcomingStreams() throws HolodexException { + Call> call = service.getUpcomingStreams("channel,clip"); + return executeCall(call); + } + + private T executeCall(Call call) throws HolodexException { + try { + Response response = call.execute(); + if (response.isSuccessful()) { + return response.body(); + } else { + throw new HolodexException("API returned error: " + response.code()); + } + } catch (IOException e) { + System.out.println(e); + throw new HolodexException("Failed to execute API call", e); + } + } +} diff --git a/src/main/java/com/pina/HolodexException.java b/src/main/java/com/pina/HolodexException.java new file mode 100644 index 0000000..8dc8cbd --- /dev/null +++ b/src/main/java/com/pina/HolodexException.java @@ -0,0 +1,11 @@ +package com.pina; + +public class HolodexException extends Exception{ + public HolodexException(String message) { + super(message); + } + + public HolodexException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/src/main/java/com/pina/HolodexService.java b/src/main/java/com/pina/HolodexService.java new file mode 100644 index 0000000..98351ca --- /dev/null +++ b/src/main/java/com/pina/HolodexService.java @@ -0,0 +1,16 @@ +package com.pina; + +import java.util.List; +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Query; + +public interface HolodexService { + @GET("/api/v2/live") + Call> getLiveStreams(@Query("include") String include); + + @GET("/api/v2/upcoming") + Call> getUpcomingStreams(@Query("include") String include); + +} + diff --git a/src/main/java/com/pina/LiveStream.java b/src/main/java/com/pina/LiveStream.java new file mode 100644 index 0000000..5e1d7a9 --- /dev/null +++ b/src/main/java/com/pina/LiveStream.java @@ -0,0 +1,18 @@ +package com.pina; + + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class LiveStream { + public String id; + public String title; + public String thumbnail; + public String status; + public int viewers; + public Channel channel; +} + + + diff --git a/src/main/java/com/pina/UpcomingStream.java b/src/main/java/com/pina/UpcomingStream.java new file mode 100644 index 0000000..dbdcc9b --- /dev/null +++ b/src/main/java/com/pina/UpcomingStream.java @@ -0,0 +1,10 @@ +package com.pina; + +public class UpcomingStream { + public String id; + public String title; + public String thumbnail; + public String scheduled_start_time; + public String channel_id; + public String channel_name; +} -- cgit v1.2.3