Package CloudHook

Source Code of CloudHook.CloudHook

/*******************************************************************************
* This is part of SketchChair, an open-source tool for designing your own furniture.
*     www.sketchchair.cc
*    
*     Copyright (C) 2012, Diatom Studio ltd.  Contact: hello@diatom.cc
*
*     This program is free software: you can redistribute it and/or modify
*     it under the terms of the GNU General Public License as published by
*     the Free Software Foundation, either version 3 of the License, or
*     (at your option) any later version.
*
*     This program is distributed in the hope that it will be useful,
*     but WITHOUT ANY WARRANTY; without even the implied warranty of
*     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*     GNU General Public License for more details.
*
*     You should have received a copy of the GNU General Public License
*     along with this program.  If not, see <http://www.gnu.org/licenses/>.
******************************************************************************/
package CloudHook;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;

import cc.sketchchair.core.LOGGER;
/**
* CloudHook
*
* Used to communicate with server side script. Uses a custom protocol to perform actions on server.
* <pre>
*                _____
*       ____/-- /      \--\____
*      /    \__/        \__/   \
*     /                         \
*    |                           |
*     \_/_\   /         \   /_\_/
*          \_/_\   \/  /_\_/
*               \_/_\_/   |
*                         |
*                         |
*                         |
*                         |/
*    
* </pre>
*/
public class CloudHook extends Thread {
  String CLOUD_URL = "http://sketchchair.cc/framework/CloudHook.php";

  boolean actionQued = false;
  String quedAction = "";
  String[][] quedArgs;
  byte[] quedBytes;

  private boolean threadStarted = false;

  public CloudHook(String script_url) {
    CLOUD_URL = script_url;
  }

  public String getActionURL(String action, String[][] args) {

    String url = CLOUD_URL + "?action=" + action;

    if (args != null) {
      for (int i = 0; i < args.length; i++) {
        try {
          url += "&" + URLEncoder.encode(args[i][0], "UTF-8") + "="
              + URLEncoder.encode(args[i][1], "UTF-8");

        } catch (UnsupportedEncodingException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }

      }
    }
    return url;
  }

  public String post(String url) {
    String returnString = "";
    try {

      URL u = new URL(url);
      URLConnection c = u.openConnection();
      c.setDoOutput(true);
      c.setDoInput(true);
      c.setUseCaches(false);
      //c.setRequestProperty("Content-Type", "multipart/form-data; boundary=AXi93A");
      DataOutputStream dstream = new DataOutputStream(c.getOutputStream());
      // close the multipart form request    
      dstream.writeBytes("\r\n--AXi93A--\r\n\r\n");
      dstream.flush();
      dstream.close();

      try {
        BufferedReader in = new BufferedReader(new InputStreamReader(
            c.getInputStream()));
        String sIn = in.readLine();
        while (sIn != null) {
          if (sIn != null) {
            if (returnString.length() > 0)
              returnString = returnString + "\n" + sIn;
            else
              returnString += sIn;

          }
          sIn = in.readLine();
        }
      }

      catch (Exception e) {

        e.printStackTrace();

      }

    } catch (Exception e) {

      e.printStackTrace();

    }

    return returnString;

  }

  public String post(String actionURL, byte[] bytes) {
    String returnString = "";
    try {

      URL u = new URL(actionURL);

      URLConnection c = u.openConnection();

      c.setDoOutput(true);
      c.setDoInput(true);
      c.setUseCaches(false);
      // set request headers  
      c.setRequestProperty("Content-Type",
          "multipart/form-data; boundary=AXi93A");
      DataOutputStream dstream = new DataOutputStream(c.getOutputStream());
      dstream.writeBytes("--AXi93A\r\n");
      dstream.writeBytes("Content-Disposition: form-data; name=\"data\"; filename=\"whatever\" \r\n");
      dstream.writeBytes("Content-Type: image/png\r\n");
      dstream.writeBytes("Content-Transfer-Encoding: binary\r\n\r\n");
      dstream.write(bytes, 0, bytes.length);

      // close the multipart form request

      dstream.writeBytes("\r\n--AXi93A--\r\n\r\n");

      dstream.flush();

      dstream.close();

      // read the output from the URL

      try {

        BufferedReader in = new BufferedReader(new InputStreamReader(
            c.getInputStream()));

        String sIn = in.readLine();

        boolean b = true;

        while (sIn != null) {

          if (sIn != null) {

            //if(popup) if(sIn.substring(0,folder.length()).equals(folder)) link(CLOUD_URL+sIn, "_blank");
            returnString = returnString + sIn;
          }

          sIn = in.readLine();

        }

      }

      catch (Exception e) {

        e.printStackTrace();

      }

    } catch (Exception e) {
      e.printStackTrace();
    }
    return returnString;
  }

  public String postAction(String action) {

    return this.post(CLOUD_URL + "?action=" + action);
  }

  public String postAction(String action, String[][] args) {
    String url = getActionURL(action, args);
    LOGGER.debug(url);
    return this.post(url);
  }

  public String postAction(String action, String[][] args, byte[] bytes) {
    String url = getActionURL(action, args);
    return this.post(url, bytes);
  }

  public String postData(String url, String location) {
    FileInputStream fileInputStream = null;
    try {
      fileInputStream = new FileInputStream(new File(location));
    } catch (FileNotFoundException e1) {
      // TODO Auto-generated catch block
      e1.printStackTrace();
    }

    String returnString = "";
    try {

      String fileName = "thumb.jpg";
      String folder = "";
      URL u = new URL(url);

      URLConnection c = u.openConnection();

      c.setDoOutput(true);
      c.setDoInput(true);
      c.setUseCaches(false);
      // set request headers  
      c.setRequestProperty("Content-Type",
          "multipart/form-data; boundary=AXi93A");
      // open a stream which can write to the url

      DataOutputStream dstream = new DataOutputStream(c.getOutputStream());

      // write content to the server, begin with the tag that says a content element is comming

      dstream.writeBytes("--AXi93A\r\n");
      // discribe the content

      dstream.writeBytes("Content-Disposition: form-data; name=\"data\"; filename=\"whatever\" \r\n");

      dstream.writeBytes("Content-Type: image/jpeg\r\n");

      dstream.writeBytes("Content-Transfer-Encoding: binary\r\n\r\n");

      int bytesAvailable = fileInputStream.available();

      int maxBufferSize = 1024;
      int bufferSize = Math.min(bytesAvailable, maxBufferSize);

      byte[] buffer = new byte[bufferSize];

      // read file and write it into form...

      int bytesRead = fileInputStream.read(buffer, 0, bufferSize);

      while (bytesRead > 0) {
        dstream.write(buffer, 0, bufferSize);
        bytesAvailable = fileInputStream.available();
        bufferSize = Math.min(bytesAvailable, maxBufferSize);
        bytesRead = fileInputStream.read(buffer, 0, bufferSize);

      }

      // close the multipart form request

      dstream.writeBytes("\r\n--AXi93A--\r\n\r\n");

      dstream.flush();

      dstream.close();

      // read the output from the URL

      try {

        BufferedReader in = new BufferedReader(new InputStreamReader(
            c.getInputStream()));

        String sIn = in.readLine();

        boolean b = true;

        while (sIn != null) {

          if (sIn != null) {

            //if(popup) if(sIn.substring(0,folder.length()).equals(folder)) link(CLOUD_URL+sIn, "_blank");
            returnString = returnString + sIn;
          }

          sIn = in.readLine();

        }

      }

      catch (Exception e) {

        e.printStackTrace();

      }

    } catch (Exception e) {
      e.printStackTrace();
    }
    return returnString;
  }
 
  public String postData(String action, String folder, String fileName,
      byte[] bytes) {
    return postData(action, folder,fileName,null,bytes);
  }

  public String postData(String action, String folder, String fileName,String sessionID_,
      byte[] bytes) {
    String returnString = "";
    try {

      String url = CLOUD_URL + "?action=" + action + "&folder="
          + folder + "&name=" + fileName;
         
          if(sessionID_ != null)
            url += "&sessionID="+sessionID_;
         
      URL u = new URL(url);

      URLConnection c = u.openConnection();

      c.setDoOutput(true);
      c.setDoInput(true);
      c.setUseCaches(false);
      // set request headers  
      c.setRequestProperty("Content-Type",
          "multipart/form-data; boundary=AXi93A");
      // open a stream which can write to the url

      DataOutputStream dstream = new DataOutputStream(c.getOutputStream());

      // write content to the server, begin with the tag that says a content element is comming

      dstream.writeBytes("--AXi93A\r\n");
      // discribe the content

      dstream.writeBytes("Content-Disposition: form-data; name=\"data\"; filename=\"whatever\" \r\n");

      dstream.writeBytes("Content-Type: image/png\r\n");

      dstream.writeBytes("Content-Transfer-Encoding: binary\r\n\r\n");

      dstream.write(bytes, 0, bytes.length);

      // close the multipart form request

      dstream.writeBytes("\r\n--AXi93A--\r\n\r\n");

      dstream.flush();

      dstream.close();

      // read the output from the URL

      try {

        BufferedReader in = new BufferedReader(new InputStreamReader(
            c.getInputStream()));

        String sIn = in.readLine();

        boolean b = true;

        while (sIn != null) {

          if (sIn != null) {

            //if(popup) if(sIn.substring(0,folder.length()).equals(folder)) link(CLOUD_URL+sIn, "_blank");
            returnString = returnString + sIn;
          }

          sIn = in.readLine();

        }

      }

      catch (Exception e) {

        e.printStackTrace();

      }

    } catch (Exception e) {
      e.printStackTrace();
    }
    return returnString;
  }

  public String postData(String action, String[][] args, String location) {
    String url = CLOUD_URL + "?action=" + action;
    for (int i = 0; i < args.length; i++) {
      try {
        url += "&" + URLEncoder.encode(args[i][0], "UTF-8") + "="
            + URLEncoder.encode(args[i][1], "UTF-8");
      } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }

    }

    return this.postData(url, location);
  }

  public boolean queAction(String action, String[][] args, byte[] bytes) {
    if (actionQued)
      return false;

    this.quedAction = action;
    this.quedArgs = args;
    this.quedBytes = bytes;

    this.actionQued = true;

    if (!this.threadStarted)
      this.start();

    return true;

  }

  public void run() {
    this.threadStarted = true;
    while (true) {
      ///super.run();
      if (this.actionQued) {
        //System.out.println(this.postAction(this.quedAction,this.quedArgs,this.quedBytes));

        this.actionQued = false;
      }

      try {
        this.sleep(500);
      } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    }

  }

  String SetupNewChair() {

    return CLOUD_URL;

  }

}
TOP

Related Classes of CloudHook.CloudHook

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.