/*
Copyright (c) [2023] [squallzhao]
fountain is licensed under APACHE LICENSE, VERSION 2.0.
You can use this software according to the terms and conditions of the APACHE LICENSE, VERSION 2.0.
You may obtain a copy of APACHE LICENSE, VERSION 2.0 at: https://www.apache.org/licenses/LICENSE-2.0
*/
package microservice.web.server
import std.collection.*
public class DefaultRouter <: IRouter{
var map: HashMap<String, HashMap<String,IServlet> > = HashMap<String, HashMap<String,IServlet> >()
public func find(method: String, uri: String): Option<IServlet>{
var o: Option<HashMap<String,IServlet> > = map.get(uri)
if (let Some(v) <- o){
let servlet = v.get(method)
if (let Some(s) <- servlet){
return s;
}
}
return Option<IServlet>.None
}
public func get(uri: String, servlet: IServlet): Unit{
var o: Option<HashMap<String,IServlet> > = map.get(uri)
if (let Some(v) <- o){
v.put("GET",servlet)
} else{
let v = HashMap<String,IServlet>()
v.put("GET",servlet)
map.put(uri,v)
}
}
public func post(uri: String, servlet: IServlet): Unit{
var o: Option<HashMap<String,IServlet> > = map.get(uri)
if (let Some(v) <- o){
v.put("POST",servlet)
} else{
let v = HashMap<String,IServlet>()
v.put("POST",servlet)
map.put(uri,v)
}
}
public func request(uri: String, servlet: IServlet): Unit{
var o: Option<HashMap<String,IServlet> > = map.get(uri)
if (let Some(v) <- o){
v.put("POST",servlet)
v.put("GET",servlet)
} else{
let v = HashMap<String,IServlet>()
v.put("POST",servlet)
v.put("GET",servlet)
map.put(uri,v)
}
}
public func head(uri: String, servlet: IServlet): Unit{
var o: Option<HashMap<String,IServlet> > = map.get(uri)
if (let Some(v) <- o){
v.put("HEAD",servlet)
} else{
let v = HashMap<String,IServlet>()
v.put("HEAD",servlet)
map.put(uri,v)
}
}
public func put(uri: String, servlet: IServlet): Unit{
var o: Option<HashMap<String,IServlet> > = map.get(uri)
if (let Some(v) <- o){
v.put("PUT",servlet)
} else{
let v = HashMap<String,IServlet>()
v.put("PUT",servlet)
map.put(uri,v)
}
}
public func delete(uri: String, servlet: IServlet): Unit{
var o: Option<HashMap<String,IServlet> > = map.get(uri)
if (let Some(v) <- o){
v.put("DELETE",servlet)
} else{
let v = HashMap<String,IServlet>()
v.put("DELETE",servlet)
map.put(uri,v)
}
}
public func options(uri: String, servlet: IServlet): Unit{
var o: Option<HashMap<String,IServlet> > = map.get(uri)
if (let Some(v) <- o){
v.put("OPTIONS",servlet)
} else{
let v = HashMap<String,IServlet>()
v.put("OPTIONS",servlet)
map.put(uri,v)
}
}
public func all(uri: String, servlet: IServlet): Unit{
var o: Option<HashMap<String,IServlet> > = map.get(uri)
if (let Some(v) <- o){
v.put("POST",servlet)
v.put("GET",servlet)
v.put("HEAD",servlet)
v.put("DELETE",servlet)
v.put("PUT",servlet)
v.put("OPTIONS",servlet)
} else{
let v = HashMap<String,IServlet>()
v.put("POST",servlet)
v.put("GET",servlet)
v.put("HEAD",servlet)
v.put("DELETE",servlet)
v.put("PUT",servlet)
v.put("OPTIONS",servlet)
map.put(uri,v)
}
}
}