diff options
| author | Pinapelz <donaldshan1@outlook.com> | 2023-04-04 12:11:11 -0700 |
|---|---|---|
| committer | Pinapelz <donaldshan1@outlook.com> | 2023-04-04 12:11:11 -0700 |
| commit | 28550a86f6f9b4dea05e3c19fb89ab7e4f6996ef (patch) | |
| tree | bf88782db8c047ff26fdf8ab4c82002d4e7e8850 /src/main/java/com/pina | |
Initial Commit
Diffstat (limited to 'src/main/java/com/pina')
| -rw-r--r-- | src/main/java/com/pina/Channel.java | 12 | ||||
| -rw-r--r-- | src/main/java/com/pina/Holodex.java | 44 | ||||
| -rw-r--r-- | src/main/java/com/pina/HolodexException.java | 11 | ||||
| -rw-r--r-- | src/main/java/com/pina/HolodexService.java | 16 | ||||
| -rw-r--r-- | src/main/java/com/pina/LiveStream.java | 18 | ||||
| -rw-r--r-- | src/main/java/com/pina/UpcomingStream.java | 10 |
6 files changed, 111 insertions, 0 deletions
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<LiveStream> getLiveStreams() throws HolodexException { + Call<List<LiveStream>> call = service.getLiveStreams("channel,clip"); + return executeCall(call); + } + + public List<UpcomingStream> getUpcomingStreams() throws HolodexException { + Call<List<UpcomingStream>> call = service.getUpcomingStreams("channel,clip"); + return executeCall(call); + } + + private <T> T executeCall(Call<T> call) throws HolodexException { + try { + Response<T> 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<List<LiveStream>> getLiveStreams(@Query("include") String include); + + @GET("/api/v2/upcoming") + Call<List<UpcomingStream>> 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; +} |
