package com.pingidentity.developer.playground.pingid;

import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;


public class PropertiesFileUploadServlet extends HttpServlet {

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		if (ServletFileUpload.isMultipartContent(request)) {

			try {
				ServletFileUpload propertiesFile = new ServletFileUpload();
				FileItemIterator fii = propertiesFile.getItemIterator(request);

				while(fii.hasNext()) {
					FileItemStream item = fii.next();
					String name = item.getFieldName();
					InputStream is = item.openStream();
					
					if (item.isFormField()) {
						return;
						
					} else {

						if (is != null) {
							
							Properties props = new Properties();
							props.load(is);
							
							// Set the appropriate pingid.properties values to session
							HttpSession session = request.getSession(false);
							session.setAttribute("pingid_org_alias", props.getProperty("org_alias"));
							session.setAttribute("pingid_token", props.getProperty("token"));
							session.setAttribute("pingid_use_base64_key", props.getProperty("use_base64_key"));
							session.setAttribute("pingid_url", props.getProperty("idp_url"));

							// Set the results of the action to the request attributes
							request.setAttribute("status", "OK");
							request.setAttribute("statusMessage", "Successfully imported pingid.properties");
							
							RequestDispatcher requestDispatcher;
							requestDispatcher = request.getRequestDispatcher("/index.jsp");
							requestDispatcher.forward(request, response);
						}
						return;					
					}
				}
			} catch (FileUploadException ex) {

				throw new ServletException(ex.getMessage());
			}

		} else {
            return;					
		}
	}

}