// Path: src/main/java/com/deswaef/twitch/api/chat/domain/ChatEmoticon.java
// public class ChatEmoticon {
//     private String regex;
//     private String url;
//     private Long height;
//     private Long width;
//     @SerializedName("subscriber_only")
//     private boolean subscriberOnly;
// 
//     public String getRegex() {
//         return regex;
//     }
// 
//     public ChatEmoticon setRegex(String regex) {
//         this.regex = regex;
//         return this;
//     }
// 
//     public String getUrl() {
//         return url;
//     }
// 
//     public ChatEmoticon setUrl(String url) {
//         this.url = url;
//         return this;
//     }
// 
//     public Long getHeight() {
//         return height;
//     }
// 
//     public ChatEmoticon setHeight(Long height) {
//         this.height = height;
//         return this;
//     }
// 
//     public Long getWidth() {
//         return width;
//     }
// 
//     public ChatEmoticon setWidth(Long width) {
//         this.width = width;
//         return this;
//     }
// 
//     public boolean isSubscriberOnly() {
//         return subscriberOnly;
//     }
// 
//     public ChatEmoticon setSubscriberOnly(boolean subscriberOnly) {
//         this.subscriberOnly = subscriberOnly;
//         return this;
//     }
// }
// 
// Path: src/main/java/com/deswaef/twitch/api/chat/domain/ChatEmoticonsInformation.java
// public class ChatEmoticonsInformation {
// 
//     private List<ChatEmoticon> emoticons;
// 
//     public List<ChatEmoticon> getEmoticons() {
//         return emoticons;
//     }
// 
//     public void setEmoticons(List<ChatEmoticon> emoticons) {
//         this.emoticons = emoticons;
//     }
// 
// }
// 
// Path: src/main/java/com/deswaef/twitch/api/chat/domain/ChatInformation.java
// public class ChatInformation {
// 
//     @SerializedName("_links")
//     private ChatLinksInformation chatLinksInformation;
// 
//     public ChatLinksInformation getChatLinksInformation() {
//         return chatLinksInformation;
//     }
// 
//     public void setChatLinksInformation(ChatLinksInformation chatLinksInformation) {
//         this.chatLinksInformation = chatLinksInformation;
//     }
// }
// 
// Path: src/main/java/com/deswaef/twitch/api/chat/domain/ChatLinksInformation.java
// public class ChatLinksInformation {
// 
//     @SerializedName("emoticons")
//     private String emoticonsUrl;
//     @SerializedName("badges")
//     private String badgesUrl;
// 
//     public String getEmoticonsUrl() {
//         return emoticonsUrl;
//     }
// 
//     public void setEmoticonsUrl(String emoticonsUrl) {
//         this.emoticonsUrl = emoticonsUrl;
//     }
// 
//     public String getBadgesUrl() {
//         return badgesUrl;
//     }
// 
//     public void setBadgesUrl(String badgesUrl) {
//         this.badgesUrl = badgesUrl;
//     }
// }


import com.deswaef.twitch.api.chat.domain.ChatEmoticon;
import com.deswaef.twitch.api.chat.domain.ChatEmoticonsInformation;
import com.deswaef.twitch.api.chat.domain.ChatInformation;
import com.deswaef.twitch.api.chat.domain.ChatLinksInformation;
import retrofit.RestAdapter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
package com.deswaef.twitch.api.chat;



/**
 * User: Quinten
 * Date: 19-9-2014
 * Time: 14:44
 *
 * @author Quinten De Swaef
 */
public class ChatResource {

    private ChatService chatService;


    public ChatResource() {
        super();
    }


    public Optional<ChatLinksInformation> chatUser(String chatUser) {
        try {
            return Optional.ofNullable(chatService.chatUser(chatUser).getChatLinksInformation());
        } catch (Exception ex) {
            return Optional.empty();
        }
    }

    public List<ChatEmoticon> emoticons(String chatUser) {
        try {
            ChatEmoticonsInformation forObject = chatService.emoticons(chatUser);
            if (forObject != null && forObject.getEmoticons() != null) {
                return Collections.unmodifiableList(forObject.getEmoticons());
            } else {
                return new ArrayList<>();
            }
        } catch(Exception ex) {
// Path: src/main/java/com/deswaef/twitch/api/chat/domain/ChatEmoticon.java
// public class ChatEmoticon {
//     private String regex;
//     private String url;
//     private Long height;
//     private Long width;
//     @SerializedName("subscriber_only")
//     private boolean subscriberOnly;
// 
//     public String getRegex() {
//         return regex;
//     }
// 
//     public ChatEmoticon setRegex(String regex) {
//         this.regex = regex;
//         return this;
//     }
// 
//     public String getUrl() {
//         return url;
//     }
// 
//     public ChatEmoticon setUrl(String url) {
//         this.url = url;
//         return this;
//     }
// 
//     public Long getHeight() {
//         return height;
//     }
// 
//     public ChatEmoticon setHeight(Long height) {
//         this.height = height;
//         return this;
//     }
// 
//     public Long getWidth() {
//         return width;
//     }
// 
//     public ChatEmoticon setWidth(Long width) {
//         this.width = width;
//         return this;
//     }
// 
//     public boolean isSubscriberOnly() {
//         return subscriberOnly;
//     }
// 
//     public ChatEmoticon setSubscriberOnly(boolean subscriberOnly) {
//         this.subscriberOnly = subscriberOnly;
//         return this;
//     }
// }
// 
// Path: src/main/java/com/deswaef/twitch/api/chat/domain/ChatEmoticonsInformation.java
// public class ChatEmoticonsInformation {
// 
//     private List<ChatEmoticon> emoticons;
// 
//     public List<ChatEmoticon> getEmoticons() {
//         return emoticons;
//     }
// 
//     public void setEmoticons(List<ChatEmoticon> emoticons) {
//         this.emoticons = emoticons;
//     }
// 
// }
// 
// Path: src/main/java/com/deswaef/twitch/api/chat/domain/ChatInformation.java
// public class ChatInformation {
// 
//     @SerializedName("_links")
//     private ChatLinksInformation chatLinksInformation;
// 
//     public ChatLinksInformation getChatLinksInformation() {
//         return chatLinksInformation;
//     }
// 
//     public void setChatLinksInformation(ChatLinksInformation chatLinksInformation) {
//         this.chatLinksInformation = chatLinksInformation;
//     }
// }
// 
// Path: src/main/java/com/deswaef/twitch/api/chat/domain/ChatLinksInformation.java
// public class ChatLinksInformation {
// 
//     @SerializedName("emoticons")
//     private String emoticonsUrl;
//     @SerializedName("badges")
//     private String badgesUrl;
// 
//     public String getEmoticonsUrl() {
//         return emoticonsUrl;
//     }
// 
//     public void setEmoticonsUrl(String emoticonsUrl) {
//         this.emoticonsUrl = emoticonsUrl;
//     }
// 
//     public String getBadgesUrl() {
//         return badgesUrl;
//     }
// 
//     public void setBadgesUrl(String badgesUrl) {
//         this.badgesUrl = badgesUrl;
//     }
// }


// Path: src/main/java/com/deswaef/twitch/api/chat/ChatResource.java
import com.deswaef.twitch.api.chat.domain.ChatEmoticon;
import com.deswaef.twitch.api.chat.domain.ChatEmoticonsInformation;
import com.deswaef.twitch.api.chat.domain.ChatInformation;
import com.deswaef.twitch.api.chat.domain.ChatLinksInformation;
import retrofit.RestAdapter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Optional;

package com.deswaef.twitch.api.chat;



/**
 * User: Quinten
 * Date: 19-9-2014
 * Time: 14:44
 *
 * @author Quinten De Swaef
 */
public class ChatResource {

    private ChatService chatService;


    public ChatResource() {
        super();
    }


    public Optional<ChatLinksInformation> chatUser(String chatUser) {
        try {
            return Optional.ofNullable(chatService.chatUser(chatUser).getChatLinksInformation());
        } catch (Exception ex) {
            return Optional.empty();
        }
    }

    public List<ChatEmoticon> emoticons(String chatUser) {
        try {
            ChatEmoticonsInformation forObject = chatService.emoticons(chatUser);
            if (forObject != null && forObject.getEmoticons() != null) {
                return Collections.unmodifiableList(forObject.getEmoticons());
            } else {
                return new ArrayList<>();
            }
        } catch(Exception ex) {
            return new ArrayList<>();