| 14 | import okhttp3.HttpUrl; |
| 15 | |
| 16 | public class XStream { |
| 17 | |
| 18 | @SerializedName("name") |
| 19 | private String name; |
| 20 | @SerializedName("stream_id") |
| 21 | private String streamId; |
| 22 | @SerializedName("stream_type") |
| 23 | private String streamType; |
| 24 | @SerializedName("stream_icon") |
| 25 | private String streamIcon; |
| 26 | @SerializedName("epg_channel_id") |
| 27 | private String epgChannelId; |
| 28 | @SerializedName("category_id") |
| 29 | private String categoryId; |
| 30 | @SerializedName("container_extension") |
| 31 | private String containerExtension; |
| 32 | |
| 33 | public static List<XStream> arrayFrom(String str) { |
| 34 | Type listType = TypeToken.getParameterized(List.class, XStream.class).getType(); |
| 35 | List<XStream> items = new Gson().fromJson(str, listType); |
| 36 | return items == null ? Collections.emptyList() : items; |
| 37 | } |
| 38 | |
| 39 | public String getName() { |
| 40 | return TextUtils.isEmpty(name) ? "" : name; |
| 41 | } |
| 42 | |
| 43 | public String getStreamId() { |
| 44 | return TextUtils.isEmpty(streamId) ? "" : streamId; |
| 45 | } |
| 46 | |
| 47 | public String getStreamType() { |
| 48 | return TextUtils.isEmpty(streamType) ? "" : streamType; |
| 49 | } |
| 50 | |
| 51 | public String getStreamIcon() { |
| 52 | return TextUtils.isEmpty(streamIcon) ? "" : streamIcon; |
| 53 | } |
| 54 | |
| 55 | public String getEpgChannelId() { |
| 56 | return TextUtils.isEmpty(epgChannelId) ? "" : epgChannelId; |
| 57 | } |
| 58 | |
| 59 | public String getCategoryId() { |
| 60 | return TextUtils.isEmpty(categoryId) ? "" : categoryId; |
| 61 | } |
| 62 | |
| 63 | public String getContainerExtension() { |
| 64 | return TextUtils.isEmpty(containerExtension) ? "" : containerExtension; |
| 65 | } |
| 66 | |
| 67 | public List<String> getPlayUrl(Config config) { |
| 68 | List<String> urls = new ArrayList<>(); |
| 69 | if (!getContainerExtension().isEmpty()) urls.add(getBuilder(config).addPathSegment(getStreamType()).addPathSegment(config.getName()).addPathSegment(config.getPass()).addPathSegment(getStreamId() + "." + getContainerExtension()).build().toString()); |
| 70 | else for (String format : config.getFormats()) urls.add(getBuilder(config).addPathSegment(getStreamType()).addPathSegment(config.getName()).addPathSegment(config.getPass()).addPathSegment(getStreamId() + "." + format + "$" + format.toUpperCase()).build().toString()); |
| 71 | return urls; |
| 72 | } |
| 73 |
nothing calls this directly
no outgoing calls
no test coverage detected