// 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/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/items/device/Device.java
// @Getter
// @ToString(callSuper = true)
// @NoArgsConstructor(access = AccessLevel.PRIVATE)
// public class Device extends PushbulletObject implements Deletable, Pushable, SmsSendable {
// 
//     /**
//      * The nickname of this device
//      */
//     private String nickname;
// 
//     /**
//      * Whether the nickname of this device has been generated
//      */
//     @SerializedName("generated_nickname")
//     private boolean nicknameGenerated;
// 
//     /**
//      * The type of this device
//      */
//     private String type;
// 
//     /**
//      * The kind of this device
//      */
//     private String kind;
// 
//     /**
//      * The icon of this device
//      */
//     private String icon;
// 
//     /**
//      * Whether it is possible to push to this device
//      */
//     private boolean pushable;
// 
//     /**
//      * The push token for this device
//      */
//     @SerializedName("push_token")
//     private String pushToken;
// 
//     /**
//      * The app version of the pushbullet app on this device
//      */
//     @SerializedName("app_version")
//     private int appVersion;
// 
//     /**
//      * The fingerprint of this device
//      */
//     @SerializedName("fingerprint")
//     private String fingerPrint;
// 
//     /**
//      * The manufacturer of this device
//      */
//     private String manufacturer;
// 
//     /**
//      * The model of this device
//      */
//     private String model;
// 
//     @SerializedName("has_sms")
//     @Accessors(fluent = true)
//     private boolean hasSms;
// 
//     public Push push(SendablePush push) {
//         if(!isPushable()) return null;
//         push = push.clone();
//         push.setReceiver(ReceiverType.DEVICE, getIdentity());
//         return sendPush(getPushbullet(), push);
//     }
// 
//     /**
//      * Sent a text to the clipboard of the other registered devices that have universal copy paste enabled
//      * @param content The text to
//      * @param toTypes The types of the devices that should receive the text, leave empty for all
//      */
//     public void sendToOtherClipboards(String content, String... toTypes) {
//         ClipEphemeral push = new ClipEphemeral();
//         push.setBody(content)
//                 .setSourceDeviceIdentity(getIdentity());
//         getPushbullet().pushEphemeral(push, toTypes);
//     }
// 
//     /**
//      * Returns all pushes that this device has received
//      * @return A list of pushes that this device has received
//      */
//     public List<Push> getReceivedPushes() {
//         return getPushbullet().getAllPushes().stream().filter(push -> getIdentity().equals(push.getTargetDeviceIdentity())).collect(Collectors.toList());
//     }
// 
//     /**
//      * Returns the phonebook of this device
//      * @return The phonebook of this device
//      */
//     public Phonebook getPhonebook() {
//         Phonebook phonebook = getPushbullet().executeRequest(new ListPhonebookRequest(getIdentity()));
//         phonebook.setDevice(this);
//         return phonebook;
//     }
// 
//     @Override
//     public void delete() {
//         if(!isActive()) return;
//         DeleteSpecificDeviceRequest deleteSpecificDeviceRequest = new DeleteSpecificDeviceRequest(getIdentity());
//         getPushbullet().executeRequest(deleteSpecificDeviceRequest);
//         setActive(false);
//     }
// 
//     @Override
//     public void sendSMS(String number, String body) {
//         if(!isActive()) return;
//         if(!hasSms()) return;
//         SmsReplyEphemeral smsReplyEphemeralPush = new SmsReplyEphemeral();
//         smsReplyEphemeralPush
//                 .setMessage(body)
//                 .setPackageName("com.pushbullet.android")
//                 .setPhoneNumber(number)
//                 .setTargetDeviceIdentity(getIdentity())
//                 .setSourceUserIdentity(getPushbullet().getCurrentUser().getIdentity());
//         getPushbullet().pushEphemeral(smsReplyEphemeralPush);
//     }
// }


import com.github.sheigutn.pushbullet.http.PostRequest;
import com.github.sheigutn.pushbullet.http.Urls;
import com.github.sheigutn.pushbullet.items.device.Device;
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 CreateDeviceRequest extends PostRequest<Device> {

    private String nickname;

    private String type;

    public CreateDeviceRequest(String nickname, String type) {
// 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/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/items/device/Device.java
// @Getter
// @ToString(callSuper = true)
// @NoArgsConstructor(access = AccessLevel.PRIVATE)
// public class Device extends PushbulletObject implements Deletable, Pushable, SmsSendable {
// 
//     /**
//      * The nickname of this device
//      */
//     private String nickname;
// 
//     /**
//      * Whether the nickname of this device has been generated
//      */
//     @SerializedName("generated_nickname")
//     private boolean nicknameGenerated;
// 
//     /**
//      * The type of this device
//      */
//     private String type;
// 
//     /**
//      * The kind of this device
//      */
//     private String kind;
// 
//     /**
//      * The icon of this device
//      */
//     private String icon;
// 
//     /**
//      * Whether it is possible to push to this device
//      */
//     private boolean pushable;
// 
//     /**
//      * The push token for this device
//      */
//     @SerializedName("push_token")
//     private String pushToken;
// 
//     /**
//      * The app version of the pushbullet app on this device
//      */
//     @SerializedName("app_version")
//     private int appVersion;
// 
//     /**
//      * The fingerprint of this device
//      */
//     @SerializedName("fingerprint")
//     private String fingerPrint;
// 
//     /**
//      * The manufacturer of this device
//      */
//     private String manufacturer;
// 
//     /**
//      * The model of this device
//      */
//     private String model;
// 
//     @SerializedName("has_sms")
//     @Accessors(fluent = true)
//     private boolean hasSms;
// 
//     public Push push(SendablePush push) {
//         if(!isPushable()) return null;
//         push = push.clone();
//         push.setReceiver(ReceiverType.DEVICE, getIdentity());
//         return sendPush(getPushbullet(), push);
//     }
// 
//     /**
//      * Sent a text to the clipboard of the other registered devices that have universal copy paste enabled
//      * @param content The text to
//      * @param toTypes The types of the devices that should receive the text, leave empty for all
//      */
//     public void sendToOtherClipboards(String content, String... toTypes) {
//         ClipEphemeral push = new ClipEphemeral();
//         push.setBody(content)
//                 .setSourceDeviceIdentity(getIdentity());
//         getPushbullet().pushEphemeral(push, toTypes);
//     }
// 
//     /**
//      * Returns all pushes that this device has received
//      * @return A list of pushes that this device has received
//      */
//     public List<Push> getReceivedPushes() {
//         return getPushbullet().getAllPushes().stream().filter(push -> getIdentity().equals(push.getTargetDeviceIdentity())).collect(Collectors.toList());
//     }
// 
//     /**
//      * Returns the phonebook of this device
//      * @return The phonebook of this device
//      */
//     public Phonebook getPhonebook() {
//         Phonebook phonebook = getPushbullet().executeRequest(new ListPhonebookRequest(getIdentity()));
//         phonebook.setDevice(this);
//         return phonebook;
//     }
// 
//     @Override
//     public void delete() {
//         if(!isActive()) return;
//         DeleteSpecificDeviceRequest deleteSpecificDeviceRequest = new DeleteSpecificDeviceRequest(getIdentity());
//         getPushbullet().executeRequest(deleteSpecificDeviceRequest);
//         setActive(false);
//     }
// 
//     @Override
//     public void sendSMS(String number, String body) {
//         if(!isActive()) return;
//         if(!hasSms()) return;
//         SmsReplyEphemeral smsReplyEphemeralPush = new SmsReplyEphemeral();
//         smsReplyEphemeralPush
//                 .setMessage(body)
//                 .setPackageName("com.pushbullet.android")
//                 .setPhoneNumber(number)
//                 .setTargetDeviceIdentity(getIdentity())
//                 .setSourceUserIdentity(getPushbullet().getCurrentUser().getIdentity());
//         getPushbullet().pushEphemeral(smsReplyEphemeralPush);
//     }
// }


// Path: src/main/java/com/github/sheigutn/pushbullet/http/defaults/post/CreateDeviceRequest.java
import com.github.sheigutn.pushbullet.http.PostRequest;
import com.github.sheigutn.pushbullet.http.Urls;
import com.github.sheigutn.pushbullet.items.device.Device;
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 CreateDeviceRequest extends PostRequest<Device> {

    private String nickname;

    private String type;

    public CreateDeviceRequest(String nickname, String type) {
        super(Urls.DEVICES);