Browse Source

accept post parameters

Martin Kunz 5 years ago
parent
commit
d13938571a

+ 1 - 0
.idea/compiler.xml

@@ -7,6 +7,7 @@
         <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
         <outputRelativeToContentRoot value="true" />
         <module name="transceivr" />
+        <module name="uploader" />
       </profile>
     </annotationProcessing>
   </component>

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+  </component>
+</project>

+ 7 - 2
pom.xml

@@ -49,7 +49,10 @@
                             <goal>shade</goal>
                         </goals>
                         <configuration>
-                            <minimizeJar>true</minimizeJar>
+                            <createSourcesJar>false</createSourcesJar>
+                            <shadedClassifierName>shaded</shadedClassifierName>
+                            <shadedArtifactAttached>true</shadedArtifactAttached>
+                            <minimizeJar>false</minimizeJar>
                         </configuration>
                     </execution>
                 </executions>
@@ -62,12 +65,14 @@
                     <archive>
                         <manifest>
                             <addClasspath>true</addClasspath>
-                            <mainClass>at.acdp.urweb.Main</mainClass>
+                            <mainClass>com.acdp.transceivr.Main</mainClass>
                         </manifest>
                     </archive>
                 </configuration>
             </plugin>
+
         </plugins>
+
     </build>
     <dependencies>
         <dependency>

+ 2 - 4
src/main/java/com/acdp/transceivr/LoadTools.java

@@ -99,10 +99,8 @@ public class LoadTools {
                             t.contentLength = contentLength;
                         }
                     }
-                    if (contentLength != -1) {
-                        t.bytesRead = bytesRead;
-                        t.currentTS = System.currentTimeMillis();
-                    }
+                    t.bytesRead = bytesRead;
+                    t.currentTS = System.currentTimeMillis();
                 }
             }
         };

+ 0 - 1
src/main/java/com/acdp/transceivr/Main.java

@@ -1,7 +1,6 @@
 package com.acdp.transceivr;
 
 public class Main {
-
     public static void main(String [ ] args) {
         new WebServer(8082,true).start();
     }

+ 37 - 26
src/main/java/com/acdp/transceivr/WebServer.java

@@ -1,7 +1,7 @@
 package com.acdp.transceivr;
 
 import java.net.http.HttpClient;
-import java.nio.file.Paths;
+import java.nio.charset.StandardCharsets;
 import java.util.concurrent.ConcurrentHashMap;
 
 import com.eclipsesource.json.Json;
@@ -11,6 +11,10 @@ import io.undertow.Handlers;
 import io.undertow.Undertow;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpServerExchange;
+import io.undertow.server.handlers.BlockingHandler;
+import io.undertow.server.handlers.form.EagerFormParsingHandler;
+import io.undertow.server.handlers.form.FormDataParser;
+import io.undertow.server.handlers.resource.ClassPathResourceManager;
 import io.undertow.server.handlers.resource.PathResourceManager;
 import io.undertow.util.Headers;
 import org.slf4j.LoggerFactory;
@@ -21,47 +25,54 @@ public class WebServer {
     private final static org.slf4j.Logger logger = LoggerFactory.getLogger(WebServer.class);
     private final int port;
     private Undertow server;
-    private HttpClient client;
     private int nextID=1;
     private ConcurrentHashMap<Integer, Transfer> uploads=new ConcurrentHashMap();
 
     public WebServer(int port, boolean debug) {
         this.port = port;
-        client= HttpClient.newBuilder()
-                .followRedirects(HttpClient.Redirect.NORMAL)
-                .build();
     }
 
     public void start() {
         Undertow.Builder builder = Undertow.builder();
         builder.addHttpListener(port, "0.0.0.0");
         builder.setHandler(Handlers.routing()
-            .post("/xfer", new HttpHandler() {
+            .post("/xfer", new BlockingHandler(new EagerFormParsingHandler(ex -> {
+                // var qParams=ex.getQueryParameters();
+                var pParams=ex.getAttachment(FormDataParser.FORM_DATA);
+                Transfer t=new Transfer(nextID++);
+                t.from=pParams.getFirst("from").getValue();
+                t.to=pParams.getFirst("to").getValue();
+                LoadTools.startTransfer(t);
+                uploads.put(t.id, t);
+                ex.getResponseSender().send("OK: "+t.id);
+            })))
+            .get("/zero",new HttpHandler() {
                 @Override
                 public void handleRequest(HttpServerExchange ex) throws Exception {
                     if(!dispatch(ex,this)) return;
-                    JsonObject value = Json.parse(new String(ex.getInputStream().readAllBytes())).asObject();
-                    Transfer t=new Transfer(nextID++);
-                    t.from=value.get("from").asString();
-                    t.to=value.get("to").asString();
-                    LoadTools.startTransfer(t);
-                    uploads.put(t.id, t);
-                    ex.getResponseSender().send("OK: "+t.id);
+                    ex.startBlocking();
+                    var ba=new byte[1024];
+                    while(true)
+                        ex.getOutputStream().write(ba);
                 }
             })
-            .get("/status", new HttpHandler() {
-                @Override
-                public void handleRequest(HttpServerExchange ex) throws Exception {
-                    if (!dispatch(ex, this)) return;
-                    JsonArray ja=new JsonArray();
-                    for(Transfer t:uploads.values()) {
-                        ja.add(t.toJSON());
-                    }
-                    ex.getResponseHeaders().put(Headers.CONTENT_TYPE, "application/json");
-                    ex.getResponseSender().send(ja.toString());
-                }})
-            .get("/*", resource(new PathResourceManager(Paths.get("webroot"), 100))
-                    .setDirectoryListingEnabled(true))
+            .post("/null",new BlockingHandler (ex -> {
+                var ba=new byte[1024];
+                while(true) {
+                    ex.getInputStream().read(ba);
+                }
+            }))
+            .get("/status", ex -> {
+                JsonArray ja=new JsonArray();
+                for(Transfer t:uploads.values())
+                    ja.add(t.toJSON());
+                ex.getResponseHeaders().put(Headers.CONTENT_TYPE, "application/json");
+                ex.getResponseSender().send(ja.toString());
+            })
+            .get("/*", resource(new ClassPathResourceManager(getClass().getClassLoader(),"webroot" ))
+                        .setDirectoryListingEnabled(true))
+          //  .get("/*", resource(new PathResourceManager(Paths.get("webroot"), 100))
+            //        .setDirectoryListingEnabled(true))
         );
         server = builder.build();
         server.start();

webroot/index.html → src/main/resources/webroot/index.html


webroot/js/moment.js → src/main/resources/webroot/js/moment.js


webroot/js/vue.js → src/main/resources/webroot/js/vue.js