Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions .classpath
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="bin/main" path="src/main/java/com/omarnyte">
<attributes>
<attribute name="gradle_scope" value="main"/>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="bin/test" path="src/test/java">
<attributes>
<attribute name="gradle_scope" value="test"/>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="bin/test" path="src/test/resources">
<attributes>
<attribute name="gradle_scope" value="test"/>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-10/"/>
<classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer"/>
<classpathentry kind="output" path="bin/default"/>
</classpath>
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/.gradle
/bin
/.settings
/build
/gradle
.project
gradlew
gradlew.bat
Expand Down
22 changes: 11 additions & 11 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
/*
* This file was generated by the Gradle 'init' task.
*
* This is a general purpose Gradle build.
* Learn how to create Gradle builds at https://guides.gradle.org/creating-new-gradle-builds/
*/
plugins {
id 'java'
}

apply plugin: 'java'
group = 'com.omarnyte'
version = '1.1.2'

repositories {
mavenCentral()
Expand All @@ -26,21 +24,23 @@ def defaultPort = 8888
def demoDirectoryPath = System.getProperty("user.dir") + '/src/test/resources/demoFiles'
def testDirectoryPath = System.getProperty("user.dir") + '/src/test/resources/testFiles'

def mainClasspath = "com/omarnyte/Main"

task startCorsServer(type: JavaExec) {
classpath sourceSets.main.runtimeClasspath
main = "Main"
main = mainClasspath
args "-port", corsPort, "-dir", corsDirectoryPath
}

task startDemoServer(type: JavaExec) {
classpath sourceSets.main.runtimeClasspath
main = "Main"
main = mainClasspath
args "-port", defaultPort, "-dir", demoDirectoryPath
}

task startTestServer(type: JavaExec) {
classpath sourceSets.main.runtimeClasspath
main = "Main"
main = mainClasspath
args "-port", defaultPort, "-dir", testDirectoryPath

}
Expand Down Expand Up @@ -68,6 +68,6 @@ test {

jar {
manifest {
attributes 'Main-Class': 'Main'
attributes 'Main-Class': 'com.omarnyte.Main'
}
}
Binary file added gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
5 changes: 5 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.8.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
5 changes: 0 additions & 5 deletions src/main/java/Handler/Handler.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
package com.omarnyte;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;

public class CLIParser {
import com.omarnyte.exception.MissingFlagException;
import com.omarnyte.exception.UnsupportedFlagException;

public class CliParser {
private static final String DIRECTORY_FLAG = "-dir";
private static final String PORT_FLAG = "-port";
private static final List<String> VALID_STORE_FLAGS = Arrays.asList( DIRECTORY_FLAG );
Expand All @@ -13,7 +17,7 @@ public class CLIParser {
private String[] args;
private HashMap<String, String> flagsMap;

public CLIParser(String[] args) throws UnsupportedFlagException {
public CliParser(String[] args) throws UnsupportedFlagException {
this.args = args;
this.flagsMap = createFlagsMap();
}
Expand All @@ -39,11 +43,11 @@ public String getDirectory() {
}

public String printValidFlags() {
return String.join(", ", this.VALID_FLAGS);
return String.join(", ", VALID_FLAGS);
}

public String printValidStoreFlags() {
return String.join(", ", this.VALID_STORE_FLAGS);
return String.join(", ", VALID_STORE_FLAGS);
}

private HashMap<String, String> createFlagsMap() throws UnsupportedFlagException {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,18 @@
package com.omarnyte;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;

import com.omarnyte.exception.BadRequestException;
import com.omarnyte.middleware.Middleware;
import com.omarnyte.request.Request;
import com.omarnyte.request.RequestParser;
import com.omarnyte.response.Response;
import com.omarnyte.response.ResponseFormatter;

public class ClientThread implements Runnable {
private Socket clientSocket;
private BufferedReader in;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
package com.omarnyte;

import java.util.HashMap;

import com.omarnyte.http.MessageHeader;
import com.omarnyte.middleware.Middleware;
import com.omarnyte.response.Response;

public class CorsMiddleware extends Middleware {

public Response applyMiddleware(Response originalResponse) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@
import java.io.BufferedReader;
package com.omarnyte;

import java.io.File;
import java.io.FileWriter;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.Map;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.Files;

import com.omarnyte.exception.NonexistentDirectoryException;

public class Directory {
private static final String DEFAULT_FILE_TYPE = "application/octet-stream";
private static final Map<String, String> MIME_TYPES = Map.ofEntries(
Map.entry("css", "text/css"),
Map.entry("gif", "image/gif"),
Map.entry("html", "text/html"),
Map.entry("jpg", "image/jpeg"),
Expand Down Expand Up @@ -130,5 +133,4 @@ private String getExtension(String filePath) {
return filePath.split("\\.")[1];
}


}
18 changes: 14 additions & 4 deletions src/main/java/Main.java → src/main/java/com/omarnyte/Main.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,25 @@
package com.omarnyte;

import java.util.HashMap;


import com.omarnyte.CliParser;
import com.omarnyte.exception.*;
import com.omarnyte.handler.*;
import com.omarnyte.handler.NotFoundHandler;
import com.omarnyte.middleware.Middleware;
import com.omarnyte.middleware.MiddlewareConfig;
import com.omarnyte.request.HttpMethod;
import com.omarnyte.request.UrlDecoder;

public class Main {
private final static int DEFAULT_PORT_NUMBER = 8888;
private final static String AUTH_ROUTE = "/api/authenticate";
private static CLIParser parser;
private static CliParser parser;
private static Directory directory;

public static void main(String[] args) {
try {
parser = new CLIParser(args);
parser = new CliParser(args);

directory = extractDirectory();
Handler defaultHandler = new NotFoundHandler(directory);
Expand Down Expand Up @@ -57,7 +68,6 @@ private static Router setUpRouter(Handler defaultHandler) {
private static HashMap<String, Handler> createRoutesMap() {
HashMap<String, Handler> routes = new HashMap<String, Handler>();

String rootPath = System.getProperty("user.dir");
routes.put("/*", new ServerHandler(HttpMethod.SUPPORTED_METHODS));
routes.put("/", new DirectoryHandler(directory));
routes.put("/echo", new EchoHandler());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
package com.omarnyte;

import java.util.HashMap;

import com.omarnyte.exception.NonexistentDirectoryException;
import com.omarnyte.handler.DirectoryHandler;
import com.omarnyte.handler.FileHandler;
import com.omarnyte.handler.Handler;
import com.omarnyte.handler.PatchHandler;
import com.omarnyte.jsonpatch.JsonPatchParser;
import com.omarnyte.request.Request;
import com.omarnyte.response.Response;

public class Router {
private Handler defaultHandler;
private HashMap<String, Handler> routes;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
package com.omarnyte;

import java.io.IOException;
import java.net.BindException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.Executors;
import java.util.concurrent.ExecutorService;

import com.omarnyte.middleware.Middleware;

public class Server {
private Middleware middleware;
private int port;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
package com.omarnyte.authentication;

import java.util.Base64;
import java.util.Base64.Decoder;
import java.util.HashMap;
import java.util.List;

import com.omarnyte.http.MessageHeader;
import com.omarnyte.middleware.Middleware;
import com.omarnyte.request.Request;

public class Authenticator extends Middleware {
private String authRoute;
private Credentials credentials;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
package com.omarnyte.authentication;

public class Credentials {
private String password;
private String username;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
package com.omarnyte.exception;

public class BadRequestException extends Exception {

public BadRequestException(String message) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
package com.omarnyte.exception;

public class LoggerException extends Exception {

public LoggerException(String message) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
package com.omarnyte.exception;

public class MissingFlagException extends Exception {

public MissingFlagException (String flagType) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
package com.omarnyte.exception;

public class NonexistentDirectoryException extends Exception {

public NonexistentDirectoryException(String directory) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
package com.omarnyte.exception;

public class UnprocessableEntityException extends Exception {

public UnprocessableEntityException (String message) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
package com.omarnyte.exception;

public class UnsupportedFlagException extends Exception {

public UnsupportedFlagException (String flag) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
package com.omarnyte.handler;

import com.omarnyte.http.MessageHeader;
import com.omarnyte.request.Request;
import com.omarnyte.response.HttpStatusCode;
import com.omarnyte.response.Response;

public class AuthHandler implements Handler {
private final static String AUTH_SCHEME = "Basic";

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,16 @@
import java.io.File;
import java.io.UnsupportedEncodingException;
package com.omarnyte.handler;

import java.util.Arrays;
import java.util.List;

import com.omarnyte.Directory;
import com.omarnyte.http.MessageHeader;
import com.omarnyte.request.Request;
import com.omarnyte.request.HttpMethod;
import com.omarnyte.response.HttpStatusCode;
import com.omarnyte.response.Response;
import com.omarnyte.util.ResponseUtil;

public class DirectoryHandler implements Handler {
private static final List<String> SUPPORTED_METHODS = Arrays.asList(
HttpMethod.GET,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
import java.io.UnsupportedEncodingException;
package com.omarnyte.handler;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

import com.omarnyte.http.MessageHeader;
import com.omarnyte.request.Request;
import com.omarnyte.response.HttpStatusCode;
import com.omarnyte.response.Response;

public class EchoHandler implements Handler {
private static final String timeFormat = "hh:mm:ss";
private static final String TIME_FORMAT = "hh:mm:ss";

public Response generateResponse(Request request) {
String method = request.getMethod();

String statusCodeAndReasonPhrase;
String messageBody = "";
switch (method) {
case "HEAD":
return buildHeadResponse();
Expand Down Expand Up @@ -46,7 +50,7 @@ private String createMessageBody() {
}

private String getFormattedTime() {
DateFormat dateFormat = new SimpleDateFormat(this.timeFormat);
DateFormat dateFormat = new SimpleDateFormat(TIME_FORMAT);
return dateFormat.format(new Date());
}

Expand Down
Loading