// Path: src/main/java/com/github/sheigutn/pushbullet/http/defaults/post/SubscribeToChannelRequest.java
// @Data
// public class SubscribeToChannelRequest extends PostRequest<Subscription> {
// 
//     @SerializedName("channel_tag")
//     private String channelTag;
// 
//     public SubscribeToChannelRequest(String channelTag) {
//         super(Urls.SUBSCRIPTIONS);
//         this.channelTag = channelTag;
//     }
// 
//     @Override
//     public void applyBody(Gson gson, HttpPost post) {
//         setJsonBody(gson.toJson(this), post);
//     }
// }
// 
// Path: src/main/java/com/github/sheigutn/pushbullet/interfaces/Subscribable.java
// public interface Subscribable {
// 
//     /**
//      * Used to subscribe to this object
//      */
//     void subscribe();
// }
// 
// Path: src/main/java/com/github/sheigutn/pushbullet/items/PushbulletIdentifiable.java
// @Data
// public abstract class PushbulletIdentifiable extends PushbulletContainer {
// 
//     /**
//      * The identity of this object
//      */
//     @SerializedName("iden")
//     private String identity;
// }
// 
// Path: src/main/java/com/github/sheigutn/pushbullet/items/push/sent/Push.java
// @Getter
// @Setter(AccessLevel.PROTECTED)
// @ToString(callSuper = true)
// @NoArgsConstructor(access = AccessLevel.PROTECTED)
// public class Push extends PushbulletObject implements Deletable, Dismissable {
// 
//     /**
//      * The type of the push
//      */
//     private PushType type;
// 
//     /**
//      * Whether the push has already been dimissed
//      */
//     private boolean dismissed;
// 
//     /**
//      * The direction the push was sent to
//      */
//     private Direction direction;
// 
//     /**
//      * The name of the sender
//      */
//     @SerializedName("sender_name")
//     private String senderName;
// 
//     /**
//      * The identity of the channel the push was sent to
//      */
//     @SerializedName("channel_iden")
//     private String channelIdentity;
// 
//     /**
//      * The client's identity
//      */
//     @SerializedName("client_iden")
//     private String clientIdentity;
// 
//     /**
//      * The identity of the device the push was sent to
//      */
//     @SerializedName("target_device_iden")
//     private String targetDeviceIdentity;
// 
//     /**
//      * The sender's identity
//      */
//     @SerializedName("sender_iden")
//     private String senderIdentity;
// 
//     /**
//      * The sender's email
//      */
//     @SerializedName("sender_email")
//     private String senderEmail;
// 
//     /**
//      * The sender's normalized email
//      */
//     @SerializedName("sender_email_normalized")
//     private String normalizedSenderEmail;
// 
//     /**
//      * The receiver's identity
//      */
//     @SerializedName("receiver_iden")
//     private String receiverIdentity;
// 
//     /**
//      * The receiver's email
//      */
//     @SerializedName("receiver_email")
//     private String receiverEmail;
// 
//     /**
//      * The receiver's normalized email
//      */
//     @SerializedName("receiver_email_normalized")
//     private String normalizedReceiverEmail;
// 
//     /**
//      * The list of awake apps the push was sent to when it was created
//      */
//     @SerializedName("awake_app_guids")
//     private List<String> awakeAppGuids;
// 
//     /**
//      * A unique identifier for the push, set by the client
//      */
//     private String guid;
// 
//     @Override
//     public void delete() {
//         if(!isActive()) return;
//         DeleteSpecificPushRequest deleteSpecificPushRequest = new DeleteSpecificPushRequest(getIdentity());
//         getPushbullet().executeRequest(deleteSpecificPushRequest);
//         setActive(false);
//     }
// 
//     /**
//      * Show the push again if it was already dismissed
//      */
//     public void show() {
//         if(!isDismissed()) return;
//         getPushbullet().executeRequest(new ChangePushDismissStatusRequest(getIdentity(), false));
//         setDismissed(false);
//     }
// 
//     @Override
//     public void dismiss() {
//         if(isDismissed()) return;
//         getPushbullet().executeRequest(new ChangePushDismissStatusRequest(getIdentity(), true));
//         setDismissed(true);
//     }
// 
//     /**
//      * Get the title of this push
//      * @return The title of this push
//      */
//     public String getTitle() {
//         return null;
//     }
// 
//     /**
//      * Get the body of this push
//      * @return The body of this push
//      */
//     public String getBody() {
//         return null;
//     }
// }


import com.github.sheigutn.pushbullet.http.defaults.post.SubscribeToChannelRequest;
import com.github.sheigutn.pushbullet.interfaces.Subscribable;
import com.github.sheigutn.pushbullet.items.PushbulletIdentifiable;
import com.github.sheigutn.pushbullet.items.push.sent.Push;
import com.google.gson.annotations.SerializedName;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import java.util.List;
package com.github.sheigutn.pushbullet.items.channel;



@Getter
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class ChannelInfo extends PushbulletIdentifiable implements Subscribable {

    /**
     * The tag of this channel
     */
    private String tag;

    /**
     * The name of this channel
     */
    private String name;

    /**
     * The description of this channel
     */
    private String description;

    /**
     * The url to the image of this channel
     */
    @SerializedName("image_url")
    private String imageUrl;

    /**
     * The url to the website of this channel
     */
    @SerializedName("website_url")
    private String websiteUrl;

    /**
     * The subscriber count of this channel
     */
    @SerializedName("subscriber_count")
// Path: src/main/java/com/github/sheigutn/pushbullet/http/defaults/post/SubscribeToChannelRequest.java
// @Data
// public class SubscribeToChannelRequest extends PostRequest<Subscription> {
// 
//     @SerializedName("channel_tag")
//     private String channelTag;
// 
//     public SubscribeToChannelRequest(String channelTag) {
//         super(Urls.SUBSCRIPTIONS);
//         this.channelTag = channelTag;
//     }
// 
//     @Override
//     public void applyBody(Gson gson, HttpPost post) {
//         setJsonBody(gson.toJson(this), post);
//     }
// }
// 
// Path: src/main/java/com/github/sheigutn/pushbullet/interfaces/Subscribable.java
// public interface Subscribable {
// 
//     /**
//      * Used to subscribe to this object
//      */
//     void subscribe();
// }
// 
// Path: src/main/java/com/github/sheigutn/pushbullet/items/PushbulletIdentifiable.java
// @Data
// public abstract class PushbulletIdentifiable extends PushbulletContainer {
// 
//     /**
//      * The identity of this object
//      */
//     @SerializedName("iden")
//     private String identity;
// }
// 
// Path: src/main/java/com/github/sheigutn/pushbullet/items/push/sent/Push.java
// @Getter
// @Setter(AccessLevel.PROTECTED)
// @ToString(callSuper = true)
// @NoArgsConstructor(access = AccessLevel.PROTECTED)
// public class Push extends PushbulletObject implements Deletable, Dismissable {
// 
//     /**
//      * The type of the push
//      */
//     private PushType type;
// 
//     /**
//      * Whether the push has already been dimissed
//      */
//     private boolean dismissed;
// 
//     /**
//      * The direction the push was sent to
//      */
//     private Direction direction;
// 
//     /**
//      * The name of the sender
//      */
//     @SerializedName("sender_name")
//     private String senderName;
// 
//     /**
//      * The identity of the channel the push was sent to
//      */
//     @SerializedName("channel_iden")
//     private String channelIdentity;
// 
//     /**
//      * The client's identity
//      */
//     @SerializedName("client_iden")
//     private String clientIdentity;
// 
//     /**
//      * The identity of the device the push was sent to
//      */
//     @SerializedName("target_device_iden")
//     private String targetDeviceIdentity;
// 
//     /**
//      * The sender's identity
//      */
//     @SerializedName("sender_iden")
//     private String senderIdentity;
// 
//     /**
//      * The sender's email
//      */
//     @SerializedName("sender_email")
//     private String senderEmail;
// 
//     /**
//      * The sender's normalized email
//      */
//     @SerializedName("sender_email_normalized")
//     private String normalizedSenderEmail;
// 
//     /**
//      * The receiver's identity
//      */
//     @SerializedName("receiver_iden")
//     private String receiverIdentity;
// 
//     /**
//      * The receiver's email
//      */
//     @SerializedName("receiver_email")
//     private String receiverEmail;
// 
//     /**
//      * The receiver's normalized email
//      */
//     @SerializedName("receiver_email_normalized")
//     private String normalizedReceiverEmail;
// 
//     /**
//      * The list of awake apps the push was sent to when it was created
//      */
//     @SerializedName("awake_app_guids")
//     private List<String> awakeAppGuids;
// 
//     /**
//      * A unique identifier for the push, set by the client
//      */
//     private String guid;
// 
//     @Override
//     public void delete() {
//         if(!isActive()) return;
//         DeleteSpecificPushRequest deleteSpecificPushRequest = new DeleteSpecificPushRequest(getIdentity());
//         getPushbullet().executeRequest(deleteSpecificPushRequest);
//         setActive(false);
//     }
// 
//     /**
//      * Show the push again if it was already dismissed
//      */
//     public void show() {
//         if(!isDismissed()) return;
//         getPushbullet().executeRequest(new ChangePushDismissStatusRequest(getIdentity(), false));
//         setDismissed(false);
//     }
// 
//     @Override
//     public void dismiss() {
//         if(isDismissed()) return;
//         getPushbullet().executeRequest(new ChangePushDismissStatusRequest(getIdentity(), true));
//         setDismissed(true);
//     }
// 
//     /**
//      * Get the title of this push
//      * @return The title of this push
//      */
//     public String getTitle() {
//         return null;
//     }
// 
//     /**
//      * Get the body of this push
//      * @return The body of this push
//      */
//     public String getBody() {
//         return null;
//     }
// }


// Path: src/main/java/com/github/sheigutn/pushbullet/items/channel/ChannelInfo.java
import com.github.sheigutn.pushbullet.http.defaults.post.SubscribeToChannelRequest;
import com.github.sheigutn.pushbullet.interfaces.Subscribable;
import com.github.sheigutn.pushbullet.items.PushbulletIdentifiable;
import com.github.sheigutn.pushbullet.items.push.sent.Push;
import com.google.gson.annotations.SerializedName;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import java.util.List;

package com.github.sheigutn.pushbullet.items.channel;



@Getter
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class ChannelInfo extends PushbulletIdentifiable implements Subscribable {

    /**
     * The tag of this channel
     */
    private String tag;

    /**
     * The name of this channel
     */
    private String name;

    /**
     * The description of this channel
     */
    private String description;

    /**
     * The url to the image of this channel
     */
    @SerializedName("image_url")
    private String imageUrl;

    /**
     * The url to the website of this channel
     */
    @SerializedName("website_url")
    private String websiteUrl;

    /**
     * The subscriber count of this channel
     */
    @SerializedName("subscriber_count")
    private int subscriberCount;