/*
 *
 *  * Copyright 2015 Skymind,Inc.
 *  *
 *  *    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 org.deeplearning4j.ui.renders;

import javax.activation.MimetypesFileTypeMap;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.io.File;
import java.util.Collections;
import java.util.Map;

/**
 * Renders filters
 *
 * @author Adam Gibson
 */
@Path("/filters")
@Produces(MediaType.TEXT_HTML)
public class RendersResource {
    private String imagePath = "render.png";

    @GET
    public RenderView get() {
        return new RenderView();
    }

    @POST
    @Path(("/update"))
    @Produces(MediaType.APPLICATION_JSON)
    public Response update(PathUpdate path) {
        this.imagePath = path.getPath();
        return Response.ok(Collections.singletonMap("status","updated path")).build();
    }


    @GET
    @Path("/img")
    @Produces({"image/png"})
    public Response image() {
        if(imagePath == null) {
            throw new WebApplicationException(404);
        }

        File f = new File(imagePath);

        if (!f.exists()) {
            throw new WebApplicationException(404);
        }

        String mt = new MimetypesFileTypeMap().getContentType(f);
        return Response.ok(f, mt).build();
    }







}

@@ -702,16 +702,67 @@
 nders;%0A%0A
+import org.apache.commons.compress.utils.IOUtils;%0A%0A
 import j
@@ -905,16 +905,146 @@
 java
-.io.File
+x.ws.rs.core.StreamingOutput;%0Aimport java.io.File;%0Aimport java.io.FileInputStream;%0Aimport java.io.IOException;%0Aimport java.io.OutputStream
 ;%0Aim
@@ -1798,16 +1798,22 @@
         
+final 
 File f =
@@ -1937,98 +1937,421 @@
     
-String mt = new MimetypesFileTypeMap().getContentType(f);%0A        return Response.ok(f, mt
+return Response.ok().entity(new StreamingOutput() %7B%0A            @Override%0A            public void write(OutputStream output) throws IOException, WebApplicationException %7B%0A                FileInputStream fis = new FileInputStream(f);%0A                byte%5B%5D bytes = IOUtils.toByteArray(fis);%0A                fis.close();%0A                output.write(bytes);%0A                output.flush();%0A%0A%0A            %7D%0A        %7D
 ).bu

add streaming support for filters as well