// Path: src/main/java/com/github/sheigutn/pushbullet/http/PostRequest.java
// public class PostRequest<TResult> extends EntityEnclosingRequest<TResult, HttpPost> {
// 
//     public PostRequest(String relativePath) {
//         super(relativePath);
//     }
// }
// 
// Path: src/main/java/com/github/sheigutn/pushbullet/items/push/sendable/SendablePush.java
// @Accessors(chain = true)
// @Data
// public abstract class SendablePush implements Cloneable {
// 
//     private final PushType type;
// 
//     /**
//      * The identity of the device the push should be sent to
//      */
//     @SerializedName("device_iden")
//     @Setter(AccessLevel.NONE)
//     private String deviceIdentity;
// 
//     /**
//      * The email of the user the push should be sent to
//      */
//     @SerializedName("email")
//     @Setter(AccessLevel.NONE)
//     private String email;
// 
//     /**
//      * The tag of the channel the push should be sent to
//      */
//     @SerializedName("channel_tag")
//     @Setter(AccessLevel.NONE)
//     private String channelTag;
// 
//     /**
//      * The identity of the oauth client the push should be sent to
//      */
//     @SerializedName("client_iden")
//     @Setter(AccessLevel.NONE)
//     private String clientIdentity;
// 
//     /**
//      * A unique identifier for this push
//      */
//     private String guid;
// 
//     /**
//      * Used to set a receiver for this push
//      * @param type  The type of receiver this push should be sent to
//      * @param value The channel tag / email / client identity or device identity
//      * @return The object the method was executed on
//      */
//     public SendablePush setReceiver(ReceiverType type, String value) {
//         clearReceivers();
//         switch (type) {
//             case DEVICE:
//                 deviceIdentity = value;
//                 break;
//             case EMAIL:
//                 email = value;
//                 break;
//             case CHANNEL:
//                 channelTag = value;
//                 break;
//             case OAUTH_CLIENT:
//                 clientIdentity = value;
//                 break;
//         }
//         return this;
//     }
// 
//     /**
//      * Used to clear all receivers of this push
//      */
//     public void clearReceivers() {
//         this.deviceIdentity = null;
//         this.email = null;
//         this.channelTag = null;
//         this.clientIdentity = null;
//     }
// 
//     /**
//      * Clone this push
//      * @return A clone of this object
//      */
//     @Override
//     @SneakyThrows
//     public SendablePush clone() {
//         return (SendablePush) super.clone();
//     }
// }
// 
// Path: src/main/java/com/github/sheigutn/pushbullet/http/Urls.java
// public class Urls {
// 
//     public static final String CHANNELS = "/channels";
//     public static final String GRANTS = "/grants";
//     public static final String PUSHES = "/pushes";
//     public static final String SUBSCRIPTIONS = "/subscriptions";
//     public static final String EVERYTHING = "/everything";
//     public static final String PHONEBOOK = "/permanents/phonebook_";
//     public static final String DEVICES = "/devices";
//     public static final String CONTACTS = "/contacts";
//     public static final String CLIENTS = "/clients";
//     public static final String CHATS = "/chats";
//     public static final String ACCOUNTS = "/accounts";
//     public static final String CURRENT_USER = "/users/me";
//     public static final String CHANNEL_INFO = "/channel-info";
//     public static final String UPLOAD_REQUEST = "/upload-request";
//     public static final String EPHEMERALS = "/ephemerals";
//     public static final String BLOCKS = "/blocks";
// }


import com.github.sheigutn.pushbullet.http.PostRequest;
import com.github.sheigutn.pushbullet.items.push.sendable.SendablePush;
import com.github.sheigutn.pushbullet.http.Urls;
import com.google.gson.Gson;
import lombok.Data;
import org.apache.http.client.methods.HttpPost;
package com.github.sheigutn.pushbullet.http.defaults.post;


@Data
public class SendPushToChannelRequest extends PostRequest<Void> {

    private SendablePush push;

    public SendPushToChannelRequest(SendablePush push) {
        super(Urls.PUSHES);
        this.push = push;
    }

// Path: src/main/java/com/github/sheigutn/pushbullet/http/PostRequest.java
// public class PostRequest<TResult> extends EntityEnclosingRequest<TResult, HttpPost> {
// 
//     public PostRequest(String relativePath) {
//         super(relativePath);
//     }
// }
// 
// Path: src/main/java/com/github/sheigutn/pushbullet/items/push/sendable/SendablePush.java
// @Accessors(chain = true)
// @Data
// public abstract class SendablePush implements Cloneable {
// 
//     private final PushType type;
// 
//     /**
//      * The identity of the device the push should be sent to
//      */
//     @SerializedName("device_iden")
//     @Setter(AccessLevel.NONE)
//     private String deviceIdentity;
// 
//     /**
//      * The email of the user the push should be sent to
//      */
//     @SerializedName("email")
//     @Setter(AccessLevel.NONE)
//     private String email;
// 
//     /**
//      * The tag of the channel the push should be sent to
//      */
//     @SerializedName("channel_tag")
//     @Setter(AccessLevel.NONE)
//     private String channelTag;
// 
//     /**
//      * The identity of the oauth client the push should be sent to
//      */
//     @SerializedName("client_iden")
//     @Setter(AccessLevel.NONE)
//     private String clientIdentity;
// 
//     /**
//      * A unique identifier for this push
//      */
//     private String guid;
// 
//     /**
//      * Used to set a receiver for this push
//      * @param type  The type of receiver this push should be sent to
//      * @param value The channel tag / email / client identity or device identity
//      * @return The object the method was executed on
//      */
//     public SendablePush setReceiver(ReceiverType type, String value) {
//         clearReceivers();
//         switch (type) {
//             case DEVICE:
//                 deviceIdentity = value;
//                 break;
//             case EMAIL:
//                 email = value;
//                 break;
//             case CHANNEL:
//                 channelTag = value;
//                 break;
//             case OAUTH_CLIENT:
//                 clientIdentity = value;
//                 break;
//         }
//         return this;
//     }
// 
//     /**
//      * Used to clear all receivers of this push
//      */
//     public void clearReceivers() {
//         this.deviceIdentity = null;
//         this.email = null;
//         this.channelTag = null;
//         this.clientIdentity = null;
//     }
// 
//     /**
//      * Clone this push
//      * @return A clone of this object
//      */
//     @Override
//     @SneakyThrows
//     public SendablePush clone() {
//         return (SendablePush) super.clone();
//     }
// }
// 
// Path: src/main/java/com/github/sheigutn/pushbullet/http/Urls.java
// public class Urls {
// 
//     public static final String CHANNELS = "/channels";
//     public static final String GRANTS = "/grants";
//     public static final String PUSHES = "/pushes";
//     public static final String SUBSCRIPTIONS = "/subscriptions";
//     public static final String EVERYTHING = "/everything";
//     public static final String PHONEBOOK = "/permanents/phonebook_";
//     public static final String DEVICES = "/devices";
//     public static final String CONTACTS = "/contacts";
//     public static final String CLIENTS = "/clients";
//     public static final String CHATS = "/chats";
//     public static final String ACCOUNTS = "/accounts";
//     public static final String CURRENT_USER = "/users/me";
//     public static final String CHANNEL_INFO = "/channel-info";
//     public static final String UPLOAD_REQUEST = "/upload-request";
//     public static final String EPHEMERALS = "/ephemerals";
//     public static final String BLOCKS = "/blocks";
// }


// Path: src/main/java/com/github/sheigutn/pushbullet/http/defaults/post/SendPushToChannelRequest.java
import com.github.sheigutn.pushbullet.http.PostRequest;
import com.github.sheigutn.pushbullet.items.push.sendable.SendablePush;
import com.github.sheigutn.pushbullet.http.Urls;
import com.google.gson.Gson;
import lombok.Data;
import org.apache.http.client.methods.HttpPost;

package com.github.sheigutn.pushbullet.http.defaults.post;


@Data
public class SendPushToChannelRequest extends PostRequest<Void> {

    private SendablePush push;

    public SendPushToChannelRequest(SendablePush push) {
        super(Urls.PUSHES);
        this.push = push;
    }

    @Override