diff --git a/src/main/java/sourcecode/MockUp/MockUp.java b/src/main/java/sourcecode/MockUp/MockUp.java index e58d51e..de94102 100644 --- a/src/main/java/sourcecode/MockUp/MockUp.java +++ b/src/main/java/sourcecode/MockUp/MockUp.java @@ -4,8 +4,12 @@ import java.io.IOException; import java.io.OutputStream; import java.net.InetSocketAddress; import java.net.URLDecoder; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.sql.Date; import java.util.ArrayList; import java.util.HashMap; +import java.util.Iterator; import org.apache.commons.io.IOUtils; import org.apache.http.Consts; @@ -14,6 +18,7 @@ import org.json.JSONArray; import org.json.JSONObject; import com.google.gson.Gson; +import com.google.gson.JsonObject; import com.mongodb.BasicDBObject; import com.mongodb.MongoClient; import com.mongodb.MongoClientOptions; @@ -34,12 +39,15 @@ public class MockUp private final static String POST = "POST"; private final static String PUT = "PUT"; private final static String DELETE = "DELETE"; - private static String DBNAME = "spw"; - private static String DBHOST = "10.1.2.155:27017"; + private static int port = 6300; + private static String DBNAME = "coop_mockup"; + private static String DBHOST = "10.1.2.144:27017"; + private static String DBUSERNAME = ""; + private static String DBPASSWORD = ""; + public static void main(String[] args) throws Exception { - int port = 6300; try { if(args.length>0) port = Integer.parseInt(args[0]); @@ -50,6 +58,12 @@ public class MockUp if(args.length>2) DBHOST = args[2]; + if(args.length>3) + DBUSERNAME = args[3]; + + if(args.length>4) + DBPASSWORD = args[4]; + //connect mongo MongoConnector(DBNAME); @@ -65,6 +79,9 @@ public class MockUp } static class MyHandler implements HttpHandler { + JSONObject resHeader = null; + int resEcode = 200; + public void handle(HttpExchange t) throws IOException{ String response = ""; try @@ -217,6 +234,16 @@ public class MockUp responsJSON.put("resultCode", "20000"); responsJSON.put("resultDescription", "Success"); } + + if(rowJSON.has("header")) + resHeader = rowJSON.getJSONObject("header"); + else + resHeader = null; + + if(rowJSON.has("ecode")) + resEcode = rowJSON.getInt("ecode"); + else + resEcode = 200; } } @@ -246,12 +273,44 @@ public class MockUp System.out.println("System error "+e.getMessage()); } + if(resHeader != null) + { + Iterator keys = resHeader.keys(); + while(keys.hasNext()) { + String key = keys.next(); + t.getResponseHeaders().set(key, resHeader.getString(key)); + } + + } + + String ret = response.toString(); + t.getResponseHeaders().set("Content-Type", "application/json"); + + t.getResponseHeaders().set("Access-Control-Allow-Origin", "https://localhost:"+port); + t.getResponseHeaders().set("Access-Control-Allow-Credentials", "true"); + t.getResponseHeaders().set("Access-Control-Allow-Headers", "content-Type"); + t.getResponseHeaders().set("Access-Control-Allow-Methods", "POST, PUT, GET, DELETE, OPTIONS"); + + + + + //ret= URLDecoder.decode(ret, "UTF-8"); + byte[] bytes = ret.getBytes(StandardCharsets.UTF_8); + t.sendResponseHeaders(resEcode, bytes.length); +// System.out.println(ret); + OutputStream os = t.getResponseBody(); + os.write(bytes); + os.close(); + - t.getResponseHeaders().set("Content-Type", "application/json"); - t.sendResponseHeaders(200, response.length()); - OutputStream os = t.getResponseBody(); - os.write(response.getBytes()); - os.close(); + + +// t.getResponseHeaders().set("Content-Type", "application/json"); +// t.sendResponseHeaders(200, response.length()); +// OutputStream os = t.getResponseBody(); +// os.write(response.getBytes(Charset.forName("US-ASCII"))); +//// os.write(response.getBytes()); +// os.close(); } } @@ -266,16 +325,24 @@ public class MockUp break; } } + if(value == null) + value = arrData[arrData.length-1]; + if(value.contains("?")) + { + arrData = value.split("\\?"); + value = arrData[0]; + } + return value; } private static void MongoConnector(String db) { - String username = ""; - String password = ""; + String username = DBUSERNAME; + String password = DBPASSWORD.replace("@", "%40"); String address = DBHOST; String dbname = db; - String authSource = db; + String authSource = "admin"; int timeoutMongoDB = 10000; MongoClientOptions.Builder optionsBuilder = MongoClientOptions.builder(); @@ -285,7 +352,7 @@ public class MockUp // optionsBuilder.connectionsPerHost(maxPoolSize); // optionsBuilder.minConnectionsPerHost(minPoolSize); - +// mongodb://root:password123@198.174.21.23:27017,198.342.121.23:27017,142.32.32.21:3001/databasename?replicaSet=rs01&ssl=false&connectTimeoutMS=100000 MongoClientURI uri = new MongoClientURI("mongodb://"+username+":"+password+"@"+address+"/?authSource="+authSource, optionsBuilder); if(username.equals("")) uri = new MongoClientURI("mongodb://"+address+"/?authSource="+authSource, optionsBuilder); @@ -311,6 +378,7 @@ public class MockUp // collectionName = method.toLowerCase()+"_"+collectionName; System.out.println("===> Find Normal"); BasicDBObject basicDBObject = new BasicDBObject(); +// System.out.println(keyData); basicDBObject.put("key", keyData); returnData = getDB(basicDBObject,method.toLowerCase()+"_"+collectionName); @@ -352,11 +420,21 @@ public class MockUp break; case POST: case PUT: - JSONObject body = new JSONObject(bodyData); - String[] a = bodyData.split(","); - String[] b = a[0].split(":"); - String c = b[0].replace("{", "").trim().replace("\"", ""); - returnData = (String) body.get(c); + try + { + JSONObject body = new JSONObject(bodyData); + String[] a = bodyData.split(","); + String[] b = a[0].split(":"); + String c = b[0].replace("{", "").trim().replace("\"", ""); + + returnData = findKeyObject(body.get(c)); + // returnData = (String) body.get(c); + }catch(Exception e) + { + returnData = ""; + } + + break; default: @@ -366,6 +444,24 @@ public class MockUp return returnData; } + private static String findKeyObject(Object obj) + { + String returnData = ""; + if(obj instanceof JSONObject) + { + returnData = obj.toString(); +// JSONObject json = (JSONObject) obj; +// String bodyData = obj.toString(); +// String[] a = bodyData.split(","); +// String[] b = a[0].split(":"); +// String c = b[0].replace("{", "").trim().replace("\"", ""); +// returnData = findKeyObject(json.get(c)); + }else + returnData = (String) obj; + + return returnData; + } + private static ArrayList findRetry(String method,String keyData) { ArrayList returnData = new ArrayList(); -- libgit2 0.21.2