package io.github.mayubao.kuaichuan.micro_server;
import android.app.Activity;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
/**
* the index res uri handler
*
* Created by mayubao on 2016/12/14.
* Contact me 345269374@qq.com
*/
public class IndexResUriHandler implements ResUriHandler {
private static final String TAG = IndexResUriHandler.class.getSimpleName();
private Activity mActivity;
public IndexResUriHandler(Activity activity){
this.mActivity = activity;
}
@Override
public boolean matches(String uri) {
if(uri == null || uri.equals("") || uri.equals("/")){
return true;
}
return false;
}
@Override
public void handler(Request request) {
//1.get the local index.html
String indexHtml = null;
try {
InputStream is = this.mActivity.getAssets().open("index.html");
indexHtml = IOStreamUtils.inputStreamToString(is);
} catch (IOException e) {
e.printStackTrace();
}
//2.send the data to the client like http protocal
if(request.getUnderlySocket() != null && indexHtml != null){
OutputStream outputStream = null;
PrintStream printStream = null;
try {
outputStream = request.getUnderlySocket().getOutputStream();
printStream = new PrintStream(outputStream);
printStream.println("HTTP/1.1 200 OK");
// printStream.println("Content-Length:" + indexHtml.length());
printStream.println("Content-Type:text/html");
printStream.println("Cache-Control:no-cache");
printStream.println("Pragma:no-cache");
printStream.println("Expires:0");
printStream.println();
indexHtml = convert(indexHtml);
byte[] bytes = indexHtml.getBytes("UTF-8");
printStream.write(bytes);
printStream.flush();
printStream.close();
} catch (IOException e) {
e.printStackTrace();
}finally {
if(outputStream != null){
try {
outputStream.close();
outputStream = null;
} catch (Exception e) {
e.printStackTrace();
}
}
if(printStream != null){
try {
printStream.close();
printStream = null;
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
@Override
public void destroy() {
this.mActivity = null;
}
/**
* convert html with further proccessing
* @param indexHtml
* @return
*/
public String convert(String indexHtml) {
return indexHtml;
}
}