// Path: ADNLibModule/src/main/java/com/alwaysallthetime/adnlib/data/File.java
// public class File extends Annotatable {
//     @Expose(serialize = false)
//     private boolean complete;
//     @Expose(serialize = false)
//     private String createdAt;
//     @Expose(serialize = false)
//     private Map<String, DerivedFile> derivedFiles;
//     @Expose(serialize = false)
//     private String fileToken;
//     @Expose(serialize = false)
//     private boolean fileTokenRead;
//     @Expose(serialize = false)
//     private ImageInfo imageInfo;
//     private String kind;
//     @Expose(serialize = false)
//     private String mimeType;
//     private String name;
//     @SerializedName("public")
//     private boolean isPublic;
//     @Expose(serialize = false)
//     private String sha1;
//     @Expose(serialize = false)
//     private int size;
//     @Expose(serialize = false)
//     private Source source;
//     @Expose(serialize = false)
//     private int totalSize;
//     private String type;
//     @Expose(serialize = false)
//     private String url;
//     @Expose(serialize = false)
//     private String urlExpires;
//     @Expose(serialize = false)
//     private String urlPermanent;
//     @Expose(serialize = false)
//     private String urlShort;
//     @Expose(serialize = false)
//     private User user;
// 
//     public File() {}
// 
//     public File(String kind, String type, String name, boolean isPublic) {
//         this.kind = kind;
//         this.type = type;
//         this.name = name;
//         this.isPublic = isPublic;
//     }
// 
//     public boolean isComplete() {
//         return complete;
//     }
// 
//     public String getCreatedAt() {
//         return createdAt;
//     }
// 
//     public Map<String, DerivedFile> getDerivedFiles() {
//         return derivedFiles;
//     }
// 
//     public String getFileToken() {
//         return fileToken;
//     }
// 
//     public boolean isFileTokenRead() {
//         return fileTokenRead;
//     }
// 
//     public ImageInfo getImageInfo() {
//         return imageInfo;
//     }
// 
//     public String getKind() {
//         return kind;
//     }
// 
//     public String getMimeType() {
//         return mimeType;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public boolean isPublic() {
//         return isPublic;
//     }
// 
//     public String getSha1() {
//         return sha1;
//     }
// 
//     public int getSize() {
//         return size;
//     }
// 
//     public Source getSource() {
//         return source;
//     }
// 
//     public int getTotalSize() {
//         return totalSize;
//     }
// 
//     public String getType() {
//         return type;
//     }
// 
//     public String getUrl() {
//         return url;
//     }
// 
//     public String getUrlExpires() {
//         return urlExpires;
//     }
// 
//     public String getUrlPermanent() {
//         return urlPermanent;
//     }
// 
//     public String getUrlShort() {
//         return urlShort;
//     }
// 
//     public User getUser() {
//         return user;
//     }
// }
// 
// Path: ADNLibModule/src/main/java/com/alwaysallthetime/adnlib/response/AppDotNetResponseHandler.java
// public abstract class AppDotNetResponseHandler<T extends IAppDotNetObject> {
//     private static final String TAG = "AppDotNetResponseHandler";
// 
//     private final Gson gson;
//     private final Type responseType;
// 
//     // subclasses must call this constructor and initialize responseType since there is no default constructor
//     protected AppDotNetResponseHandler(TypeToken typeToken) {
//         gson = AppDotNetGson.getInstance();
//         responseType = typeToken.getType();
//     }
// 
//     protected <T> T parseResponse(Reader reader) {
//         return gson.fromJson(reader, responseType);
//     }
// 
//     public abstract void handleResponse(Reader reader);
// 
//     public abstract void onSuccess(T responseData);
// 
//     public void onError(Exception error) {
//         Log.e(TAG, error.getMessage(), error);
//     }
// }


import com.alwaysallthetime.adnlib.data.File;
import com.alwaysallthetime.adnlib.response.AppDotNetResponseHandler;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
package com.alwaysallthetime.adnlib.request;



public class AppDotNetApiFileUploadRequest extends AppDotNetApiUploadRequest {
    private File file;
    private String mimeType;

// Path: ADNLibModule/src/main/java/com/alwaysallthetime/adnlib/data/File.java
// public class File extends Annotatable {
//     @Expose(serialize = false)
//     private boolean complete;
//     @Expose(serialize = false)
//     private String createdAt;
//     @Expose(serialize = false)
//     private Map<String, DerivedFile> derivedFiles;
//     @Expose(serialize = false)
//     private String fileToken;
//     @Expose(serialize = false)
//     private boolean fileTokenRead;
//     @Expose(serialize = false)
//     private ImageInfo imageInfo;
//     private String kind;
//     @Expose(serialize = false)
//     private String mimeType;
//     private String name;
//     @SerializedName("public")
//     private boolean isPublic;
//     @Expose(serialize = false)
//     private String sha1;
//     @Expose(serialize = false)
//     private int size;
//     @Expose(serialize = false)
//     private Source source;
//     @Expose(serialize = false)
//     private int totalSize;
//     private String type;
//     @Expose(serialize = false)
//     private String url;
//     @Expose(serialize = false)
//     private String urlExpires;
//     @Expose(serialize = false)
//     private String urlPermanent;
//     @Expose(serialize = false)
//     private String urlShort;
//     @Expose(serialize = false)
//     private User user;
// 
//     public File() {}
// 
//     public File(String kind, String type, String name, boolean isPublic) {
//         this.kind = kind;
//         this.type = type;
//         this.name = name;
//         this.isPublic = isPublic;
//     }
// 
//     public boolean isComplete() {
//         return complete;
//     }
// 
//     public String getCreatedAt() {
//         return createdAt;
//     }
// 
//     public Map<String, DerivedFile> getDerivedFiles() {
//         return derivedFiles;
//     }
// 
//     public String getFileToken() {
//         return fileToken;
//     }
// 
//     public boolean isFileTokenRead() {
//         return fileTokenRead;
//     }
// 
//     public ImageInfo getImageInfo() {
//         return imageInfo;
//     }
// 
//     public String getKind() {
//         return kind;
//     }
// 
//     public String getMimeType() {
//         return mimeType;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public boolean isPublic() {
//         return isPublic;
//     }
// 
//     public String getSha1() {
//         return sha1;
//     }
// 
//     public int getSize() {
//         return size;
//     }
// 
//     public Source getSource() {
//         return source;
//     }
// 
//     public int getTotalSize() {
//         return totalSize;
//     }
// 
//     public String getType() {
//         return type;
//     }
// 
//     public String getUrl() {
//         return url;
//     }
// 
//     public String getUrlExpires() {
//         return urlExpires;
//     }
// 
//     public String getUrlPermanent() {
//         return urlPermanent;
//     }
// 
//     public String getUrlShort() {
//         return urlShort;
//     }
// 
//     public User getUser() {
//         return user;
//     }
// }
// 
// Path: ADNLibModule/src/main/java/com/alwaysallthetime/adnlib/response/AppDotNetResponseHandler.java
// public abstract class AppDotNetResponseHandler<T extends IAppDotNetObject> {
//     private static final String TAG = "AppDotNetResponseHandler";
// 
//     private final Gson gson;
//     private final Type responseType;
// 
//     // subclasses must call this constructor and initialize responseType since there is no default constructor
//     protected AppDotNetResponseHandler(TypeToken typeToken) {
//         gson = AppDotNetGson.getInstance();
//         responseType = typeToken.getType();
//     }
// 
//     protected <T> T parseResponse(Reader reader) {
//         return gson.fromJson(reader, responseType);
//     }
// 
//     public abstract void handleResponse(Reader reader);
// 
//     public abstract void onSuccess(T responseData);
// 
//     public void onError(Exception error) {
//         Log.e(TAG, error.getMessage(), error);
//     }
// }


// Path: ADNLibModule/src/main/java/com/alwaysallthetime/adnlib/request/AppDotNetApiFileUploadRequest.java
import com.alwaysallthetime.adnlib.data.File;
import com.alwaysallthetime.adnlib.response.AppDotNetResponseHandler;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;

package com.alwaysallthetime.adnlib.request;



public class AppDotNetApiFileUploadRequest extends AppDotNetApiUploadRequest {
    private File file;
    private String mimeType;

    public AppDotNetApiFileUploadRequest(AppDotNetResponseHandler handler, File file, byte[] fileData, String mimeType, String... pathComponents) {