// 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/channel/OwnChannel.java
// @Getter
// @ToString(callSuper = true)
// @NoArgsConstructor(access = AccessLevel.PRIVATE)
// public class OwnChannel extends PushbulletObject implements Deletable {
// 
//     /**
//      * 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;
// 
//     public void push(SendablePush push) {
//         if(!isActive()) return;
//         push = push.clone().setReceiver(ReceiverType.CHANNEL, tag);
//         getPushbullet().executeRequest(new SendPushToChannelRequest(push));
//     }
// 
//     public void sendPush(Pushbullet pushbullet, SendablePush push) {
//         pushbullet.executeRequest(new SendPushRequest(push));
//     }
// 
//     /**
//      * Used to push a link to this channel
//      * @param title The title of the push
//      * @param body  The body of the push
//      * @param url   The link of the push
//      */
//     public void pushLink(String title, String body, String url) {
//         push(new SendableLinkPush(title, body, url));
//     }
// 
//     /**
//      * Used to push an address to this channel
//      * @param name    The name of the address
//      * @param address The address
//      */
//     @Deprecated
//     public void pushAddress(String name, String address) {
//         push(new SendableAddressPush(name, address));
//     }
// 
//     /**
//      * Used to push a note to this channel
//      * @param title The title of the note
//      * @param body  The body of the note
//      */
//     public void pushNote(String title, String body) {
//         push(new SendableNotePush(title, body));
//     }
// 
//     /**
//      * Used to push a list to this channel
//      * @param title The title of the list
//      * @param items The items of the list
//      */
//     @Deprecated
//     public void pushList(String title, List<String> items) {
//         push(new SendableListPush(title, items));
//     }
// 
//     /**
//      * Used to push a file to this
//      * @param body The body of this push
//      * @param file The file of this push
//      */
//     public void pushFile(String body, UploadFile file) {
//         push(new SendableFilePush(body, file));
//     }
// 
//     @Override
//     public void delete() {
//         if(!isActive()) return;
//         getPushbullet().executeRequest(new DeleteSpecificChannelRequest(getIdentity()));
//         setActive(false);
//     }
// }
// 
// Path: src/main/java/com/github/sheigutn/pushbullet/items/file/UploadFile.java
// @Getter
// public class UploadFile {
// 
//     /**
//      * The mime type of this file
//      */
//     @SerializedName("file_type")
//     private String fileType;
// 
//     /**
//      * The name of this file
//      */
//     @SerializedName("file_name")
//     private String fileName;
// 
//     /**
//      * The url to this file
//      */
//     @SerializedName("file_url")
//     private String fileUrl;
// 
//     /**
//      * The upload url that this file should be uploaded to
//      */
//     @SerializedName("upload_url")
//     private String uploadUrl;
// 
//     /**
//      * The data for the upload to AWS
//      */
//     private AwsAuthData data;
// }
// 
// 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.channel.OwnChannel;
import com.github.sheigutn.pushbullet.items.file.UploadFile;
import com.github.sheigutn.pushbullet.http.Urls;
import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import org.apache.http.client.methods.HttpPost;
package com.github.sheigutn.pushbullet.http.defaults.post;


@Data
public class CreateChannelRequest extends PostRequest<OwnChannel> {

    private String tag;

    private String name;

    private String description;

    @SerializedName("image_url")
    private String imageUrl;

    public CreateChannelRequest(String tag, String name, String description) {
// 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/channel/OwnChannel.java
// @Getter
// @ToString(callSuper = true)
// @NoArgsConstructor(access = AccessLevel.PRIVATE)
// public class OwnChannel extends PushbulletObject implements Deletable {
// 
//     /**
//      * 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;
// 
//     public void push(SendablePush push) {
//         if(!isActive()) return;
//         push = push.clone().setReceiver(ReceiverType.CHANNEL, tag);
//         getPushbullet().executeRequest(new SendPushToChannelRequest(push));
//     }
// 
//     public void sendPush(Pushbullet pushbullet, SendablePush push) {
//         pushbullet.executeRequest(new SendPushRequest(push));
//     }
// 
//     /**
//      * Used to push a link to this channel
//      * @param title The title of the push
//      * @param body  The body of the push
//      * @param url   The link of the push
//      */
//     public void pushLink(String title, String body, String url) {
//         push(new SendableLinkPush(title, body, url));
//     }
// 
//     /**
//      * Used to push an address to this channel
//      * @param name    The name of the address
//      * @param address The address
//      */
//     @Deprecated
//     public void pushAddress(String name, String address) {
//         push(new SendableAddressPush(name, address));
//     }
// 
//     /**
//      * Used to push a note to this channel
//      * @param title The title of the note
//      * @param body  The body of the note
//      */
//     public void pushNote(String title, String body) {
//         push(new SendableNotePush(title, body));
//     }
// 
//     /**
//      * Used to push a list to this channel
//      * @param title The title of the list
//      * @param items The items of the list
//      */
//     @Deprecated
//     public void pushList(String title, List<String> items) {
//         push(new SendableListPush(title, items));
//     }
// 
//     /**
//      * Used to push a file to this
//      * @param body The body of this push
//      * @param file The file of this push
//      */
//     public void pushFile(String body, UploadFile file) {
//         push(new SendableFilePush(body, file));
//     }
// 
//     @Override
//     public void delete() {
//         if(!isActive()) return;
//         getPushbullet().executeRequest(new DeleteSpecificChannelRequest(getIdentity()));
//         setActive(false);
//     }
// }
// 
// Path: src/main/java/com/github/sheigutn/pushbullet/items/file/UploadFile.java
// @Getter
// public class UploadFile {
// 
//     /**
//      * The mime type of this file
//      */
//     @SerializedName("file_type")
//     private String fileType;
// 
//     /**
//      * The name of this file
//      */
//     @SerializedName("file_name")
//     private String fileName;
// 
//     /**
//      * The url to this file
//      */
//     @SerializedName("file_url")
//     private String fileUrl;
// 
//     /**
//      * The upload url that this file should be uploaded to
//      */
//     @SerializedName("upload_url")
//     private String uploadUrl;
// 
//     /**
//      * The data for the upload to AWS
//      */
//     private AwsAuthData data;
// }
// 
// 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/CreateChannelRequest.java
import com.github.sheigutn.pushbullet.http.PostRequest;
import com.github.sheigutn.pushbullet.items.channel.OwnChannel;
import com.github.sheigutn.pushbullet.items.file.UploadFile;
import com.github.sheigutn.pushbullet.http.Urls;
import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import org.apache.http.client.methods.HttpPost;

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


@Data
public class CreateChannelRequest extends PostRequest<OwnChannel> {

    private String tag;

    private String name;

    private String description;

    @SerializedName("image_url")
    private String imageUrl;

    public CreateChannelRequest(String tag, String name, String description) {
        super(Urls.CHANNELS);