package com.intuit.tank.service.api.v1;
/*
* #%L
* Datafile Rest API
* %%
* Copyright (C) 2011 - 2015 Intuit Inc.
* %%
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
* #L%
*/
import javax.annotation.Nonnull;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.StreamingOutput;
import com.sun.jersey.multipart.FormDataMultiPart;
/**
* Copyright 2011 Intuit Inc. All Rights Reserved
*/
/**
* ProjectService
*
* @author dangleton
*
*/
@Path(DataFileService.SERVICE_RELATIVE_PATH)
public interface DataFileService {
public static final String SERVICE_RELATIVE_PATH = "/v1/datafile-service";
public static final String METHOD_PING = "/ping";
public static final String METHOD_SAVE_OR_UPDATE = "/datafile";
public static final String METHOD_GET_DATA_FILES = "/datafile";
public static final String METHOD_DELETE = "/datafile/{id}";
public static final String METHOD_GET_DATA_FILE = "/datafile/{id}";
public static final String METHOD_GET_DATA_FILE_VERSION = "/datafile/{id}/version/{version}";
public static final String METHOD_GET_DATA_FILE_OFFSET = "/datafile/{id}/data/offset{offset}";
public static final String METHOD_GET_DATA_FILE_DATA = "/datafile/{id}/data";
public static final String METHOD_GET_DATA_FILE_DATA_DOWNLOAD = "/datafile/{id}/data/download";
/**
* Test method to test if the service is up.
*
* @return non-null String value.
*/
@Path(METHOD_PING)
@GET
@Nonnull
public String ping();
@Path(METHOD_SAVE_OR_UPDATE)
@Consumes({ MediaType.MULTIPART_FORM_DATA, MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@POST
@Nonnull
public Response saveOrUpdateDataFile(FormDataMultiPart formData);
@Path(METHOD_DELETE)
@DELETE
@Nonnull
public Response deleteDataFile(@PathParam("id") Integer id);
@Path(METHOD_GET_DATA_FILES)
@Produces({ MediaType.APPLICATION_XML })
@GET
@Nonnull
public Response getDataFiles();
@Path(METHOD_GET_DATA_FILE)
@Produces({ MediaType.APPLICATION_XML })
@GET
@Nonnull
public Response getDataFile(@PathParam("id") Integer id);
@Path(METHOD_GET_DATA_FILE)
@PUT
@Nonnull
public Response setDataFile(@PathParam("id") Integer id, FormDataMultiPart formData);
@Path(METHOD_GET_DATA_FILE_VERSION)
@Produces({ MediaType.TEXT_PLAIN })
@GET
public StreamingOutput getDataFileVersion(@PathParam("id") Integer id, @PathParam("version") Integer version,
@DefaultValue("0") @QueryParam("offset") int offset,
@DefaultValue("-1") @QueryParam("num-lines") int numLines);
@Path(METHOD_GET_DATA_FILE_OFFSET)
@Produces({ MediaType.TEXT_PLAIN })
@GET
public StreamingOutput getDataFileDataOffset(@PathParam("id") Integer id,
@DefaultValue("0") @PathParam("offset") int offset,
@DefaultValue("-1") @QueryParam("num-lines") int numLines);
@Path(METHOD_GET_DATA_FILE_DATA)
@Produces({ MediaType.TEXT_PLAIN })
@GET
public StreamingOutput getDataFileData(@PathParam("id") Integer id);
@Path(METHOD_GET_DATA_FILE_DATA_DOWNLOAD)
@Produces({ MediaType.APPLICATION_OCTET_STREAM })
@GET
public Response downloadDataFileData(@PathParam("id") Integer id);
}