// Path: src/main/java/com/deswaef/twitch/api/videos/domain/Video.java
// public class Video {
//     private String title;
//     private String description;
//     @SerializedName("broadcast_id")
//     private Long broadcastId;
//     @SerializedName("_id")
//     private String id;
//     private Long length;
//     private String preview;
//     private String url;
//     private Long views;
//     private String game;
//     @SerializedName("recorded_at")
//     private Date recordedAt;
// 
//     public String getTitle() {
//         return title;
//     }
// 
//     public void setTitle(String title) {
//         this.title = title;
//     }
// 
//     public String getDescription() {
//         return description;
//     }
// 
//     public void setDescription(String description) {
//         this.description = description;
//     }
// 
//     public Long getBroadcastId() {
//         return broadcastId;
//     }
// 
//     public void setBroadcastId(Long broadcastId) {
//         this.broadcastId = broadcastId;
//     }
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public Long getLength() {
//         return length;
//     }
// 
//     public void setLength(Long length) {
//         this.length = length;
//     }
// 
//     public String getPreview() {
//         return preview;
//     }
// 
//     public void setPreview(String preview) {
//         this.preview = preview;
//     }
// 
//     public Long getViews() {
//         return views;
//     }
// 
//     public void setViews(Long views) {
//         this.views = views;
//     }
// 
//     public String getGame() {
//         return game;
//     }
// 
//     public void setGame(String game) {
//         this.game = game;
//     }
// 
//     public Date getRecordedAt() {
//         return recordedAt;
//     }
// 
//     public void setRecordedAt(Date recordedAt) {
//         this.recordedAt = recordedAt;
//     }
// 
//     public String getUrl() {
//         return url;
//     }
// 
//     public void setUrl(String url) {
//         this.url = url;
//     }
// }
// 
// Path: src/main/java/com/deswaef/twitch/api/videos/domain/VideosResponse.java
// public class VideosResponse {
//     private List<Video> videos;
// 
//     public List<Video> getVideos() {
//         return videos;
//     }
// 
//     public void setVideos(List<Video> videos) {
//         this.videos = videos;
//     }
// }


import com.deswaef.twitch.api.videos.domain.Video;
import com.deswaef.twitch.api.videos.domain.VideosResponse;
import retrofit.RestAdapter;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
package com.deswaef.twitch.api.videos;



/**
 * User: Quinten
 * Date: 27-9-2014
 * Time: 01:41
 *
 * @author Quinten De Swaef
 */
public class VideoResource {

    private VideoService videoService;

    public Optional<Video> video(String id) {
        try {
            return Optional.ofNullable(videoService.video(id));
        } catch (Exception ex) {
            return Optional.empty();
        }
    }

// Path: src/main/java/com/deswaef/twitch/api/videos/domain/Video.java
// public class Video {
//     private String title;
//     private String description;
//     @SerializedName("broadcast_id")
//     private Long broadcastId;
//     @SerializedName("_id")
//     private String id;
//     private Long length;
//     private String preview;
//     private String url;
//     private Long views;
//     private String game;
//     @SerializedName("recorded_at")
//     private Date recordedAt;
// 
//     public String getTitle() {
//         return title;
//     }
// 
//     public void setTitle(String title) {
//         this.title = title;
//     }
// 
//     public String getDescription() {
//         return description;
//     }
// 
//     public void setDescription(String description) {
//         this.description = description;
//     }
// 
//     public Long getBroadcastId() {
//         return broadcastId;
//     }
// 
//     public void setBroadcastId(Long broadcastId) {
//         this.broadcastId = broadcastId;
//     }
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public Long getLength() {
//         return length;
//     }
// 
//     public void setLength(Long length) {
//         this.length = length;
//     }
// 
//     public String getPreview() {
//         return preview;
//     }
// 
//     public void setPreview(String preview) {
//         this.preview = preview;
//     }
// 
//     public Long getViews() {
//         return views;
//     }
// 
//     public void setViews(Long views) {
//         this.views = views;
//     }
// 
//     public String getGame() {
//         return game;
//     }
// 
//     public void setGame(String game) {
//         this.game = game;
//     }
// 
//     public Date getRecordedAt() {
//         return recordedAt;
//     }
// 
//     public void setRecordedAt(Date recordedAt) {
//         this.recordedAt = recordedAt;
//     }
// 
//     public String getUrl() {
//         return url;
//     }
// 
//     public void setUrl(String url) {
//         this.url = url;
//     }
// }
// 
// Path: src/main/java/com/deswaef/twitch/api/videos/domain/VideosResponse.java
// public class VideosResponse {
//     private List<Video> videos;
// 
//     public List<Video> getVideos() {
//         return videos;
//     }
// 
//     public void setVideos(List<Video> videos) {
//         this.videos = videos;
//     }
// }


// Path: src/main/java/com/deswaef/twitch/api/videos/VideoResource.java
import com.deswaef.twitch.api.videos.domain.Video;
import com.deswaef.twitch.api.videos.domain.VideosResponse;
import retrofit.RestAdapter;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

package com.deswaef.twitch.api.videos;



/**
 * User: Quinten
 * Date: 27-9-2014
 * Time: 01:41
 *
 * @author Quinten De Swaef
 */
public class VideoResource {

    private VideoService videoService;

    public Optional<Video> video(String id) {
        try {
            return Optional.ofNullable(videoService.video(id));
        } catch (Exception ex) {
            return Optional.empty();
        }
    }

    public List<Video> videos(String channel) {