// Path: src/main/java/io/kraken/client/model/Convert.java
// public class Convert {
// 
//     private final ImageFormat format;
// 
//     @JsonSerialize(using = RGBASerializer.class)
//     private final RGBA background;
// 
//     private final Boolean keepExtension;
// 
//     @JsonCreator
//     public Convert(@JsonProperty("format") ImageFormat format,
//                    @JsonProperty("background") RGBA background,
//                    @JsonProperty("keep_extension") Boolean keepExtension) {
//         this.format = format;
//         this.background = background;
//         this.keepExtension = keepExtension;
//     }
// 
//     public ImageFormat getFormat() {
//         return format;
//     }
// 
//     public RGBA getBackground() {
//         return background;
//     }
// 
//     public Boolean getKeepExtension() {
//         return keepExtension;
//     }
// }
// 
// Path: src/main/java/io/kraken/client/model/Metadata.java
// public enum Metadata {
//     PROFILE("profile"),
//     DATE("date"),
//     COPYRIGHT("copyright"),
//     GEOTAG("geotag"),
//     ORIENTATION("orientation");
// 
//     private static Map<String, Metadata> REVERSE_LOOKUP = new HashMap<String, Metadata>();
//     static {
//         for (Metadata strategy : values()) {
//             REVERSE_LOOKUP.put(strategy.getValue(), strategy);
//         }
//     }
// 
//     private final String value;
// 
//     Metadata(String value) {
//         this.value = value;
//     }
// 
//     public String getValue() {
//         return value;
//     }
// 
//     public static Metadata fromString(String value) {
//         return REVERSE_LOOKUP.get(value);
//     }
// 
//     @Override
//     public String toString() {
//         return value;
//     }
// }
// 
// Path: src/main/java/io/kraken/client/model/resize/AbstractResize.java
// @JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=JsonTypeInfo.As.EXISTING_PROPERTY, visible = true, property="strategy")
// @JsonSubTypes({
//         @JsonSubTypes.Type(value = FitResize.class, name = "fit"),
//         @JsonSubTypes.Type(value = ExactResize.class, name = "exact"),
//         @JsonSubTypes.Type(value = AutoResize.class, name = "auto"),
//         @JsonSubTypes.Type(value = CropResize.class, name = "crop"),
//         @JsonSubTypes.Type(value = FillResize.class, name = "fill"),
//         @JsonSubTypes.Type(value = LandscapeResize.class, name = "landscape"),
//         @JsonSubTypes.Type(value = PortraitResize.class, name = "portrait"),
//         @JsonSubTypes.Type(value = SquareResize.class, name = "square")
// })
// public abstract class AbstractResize {
// 
//     private final Strategy strategy;
// 
//     @JsonCreator
//     protected AbstractResize(@JsonProperty("strategy") Strategy strategy) {
//         this.strategy = strategy;
//     }
// 
//     public Strategy getStrategy() {
//         return strategy;
//     }
// }


import com.fasterxml.jackson.annotation.JsonIgnore;
import io.kraken.client.model.Convert;
import io.kraken.client.model.Metadata;
import io.kraken.client.model.resize.AbstractResize;
import java.io.InputStream;
import java.util.Set;
import static com.google.common.base.Preconditions.checkNotNull;
/**
 * Copyright (C) 2015 Nekkra UG (oss@kraken.io)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *         http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package io.kraken.client.model.request;




/**
 * @author Emir Dizdarevic
 * @since 1.0.0
 */
public class DirectUploadRequest extends AbstractUploadRequest {

    @JsonIgnore
    private final InputStream image;

    private DirectUploadRequest(Boolean dev,
// Path: src/main/java/io/kraken/client/model/Convert.java
// public class Convert {
// 
//     private final ImageFormat format;
// 
//     @JsonSerialize(using = RGBASerializer.class)
//     private final RGBA background;
// 
//     private final Boolean keepExtension;
// 
//     @JsonCreator
//     public Convert(@JsonProperty("format") ImageFormat format,
//                    @JsonProperty("background") RGBA background,
//                    @JsonProperty("keep_extension") Boolean keepExtension) {
//         this.format = format;
//         this.background = background;
//         this.keepExtension = keepExtension;
//     }
// 
//     public ImageFormat getFormat() {
//         return format;
//     }
// 
//     public RGBA getBackground() {
//         return background;
//     }
// 
//     public Boolean getKeepExtension() {
//         return keepExtension;
//     }
// }
// 
// Path: src/main/java/io/kraken/client/model/Metadata.java
// public enum Metadata {
//     PROFILE("profile"),
//     DATE("date"),
//     COPYRIGHT("copyright"),
//     GEOTAG("geotag"),
//     ORIENTATION("orientation");
// 
//     private static Map<String, Metadata> REVERSE_LOOKUP = new HashMap<String, Metadata>();
//     static {
//         for (Metadata strategy : values()) {
//             REVERSE_LOOKUP.put(strategy.getValue(), strategy);
//         }
//     }
// 
//     private final String value;
// 
//     Metadata(String value) {
//         this.value = value;
//     }
// 
//     public String getValue() {
//         return value;
//     }
// 
//     public static Metadata fromString(String value) {
//         return REVERSE_LOOKUP.get(value);
//     }
// 
//     @Override
//     public String toString() {
//         return value;
//     }
// }
// 
// Path: src/main/java/io/kraken/client/model/resize/AbstractResize.java
// @JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=JsonTypeInfo.As.EXISTING_PROPERTY, visible = true, property="strategy")
// @JsonSubTypes({
//         @JsonSubTypes.Type(value = FitResize.class, name = "fit"),
//         @JsonSubTypes.Type(value = ExactResize.class, name = "exact"),
//         @JsonSubTypes.Type(value = AutoResize.class, name = "auto"),
//         @JsonSubTypes.Type(value = CropResize.class, name = "crop"),
//         @JsonSubTypes.Type(value = FillResize.class, name = "fill"),
//         @JsonSubTypes.Type(value = LandscapeResize.class, name = "landscape"),
//         @JsonSubTypes.Type(value = PortraitResize.class, name = "portrait"),
//         @JsonSubTypes.Type(value = SquareResize.class, name = "square")
// })
// public abstract class AbstractResize {
// 
//     private final Strategy strategy;
// 
//     @JsonCreator
//     protected AbstractResize(@JsonProperty("strategy") Strategy strategy) {
//         this.strategy = strategy;
//     }
// 
//     public Strategy getStrategy() {
//         return strategy;
//     }
// }


// Path: src/main/java/io/kraken/client/model/request/DirectUploadRequest.java
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.kraken.client.model.Convert;
import io.kraken.client.model.Metadata;
import io.kraken.client.model.resize.AbstractResize;
import java.io.InputStream;
import java.util.Set;
import static com.google.common.base.Preconditions.checkNotNull;

/**
 * Copyright (C) 2015 Nekkra UG (oss@kraken.io)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *         http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package io.kraken.client.model.request;




/**
 * @author Emir Dizdarevic
 * @since 1.0.0
 */
public class DirectUploadRequest extends AbstractUploadRequest {

    @JsonIgnore
    private final InputStream image;

    private DirectUploadRequest(Boolean dev,
                                Boolean webp,