spiel-connect
Version:
get all the backend methods to make request easy
134 lines (116 loc) • 3.45 kB
text/typescript
import {After, AfterAll, Before, BeforeAll, Delete, Endpoint, Get, HttpError,
IBody, IRouterOptions, middleware, Post, Put, Response,
Road, Server, SetRouter} from "spiel-server";
import {users} from "./assets";
const app = new Road();
const server = new Server(app, (error: any) => {
switch (error.code) {
case 404:
return new Response("Not Found", 404);
case 405:
return new Response("Not Allowed", 405);
default:
case 500:
return new Response(error.message, 500);
}
});
const info = (method: string, path: string, body: IBody, headers: Headers, next: () => any) => {
if (path.match(/^\/user/g)) {
console.log(`A ${method} request was made to ${JSON.stringify(path)}`);
return next();
} else {
return next();
}
};
const infoAll = (method: string, path: string, body: IBody, headers: Headers, next: () => any) => {
console.log("The middleware start");
return next();
};
const changeResponse = (method: string, path: string, body: IBody, headers: Headers, next: () => any) => {
if (path.match(/^\/greeting/g)) {
console.log("End");
return new Response({greet: "Bye"}, 200);
} else {
return next();
}
};
const finish = (method: string, path: string, body: IBody, headers: Headers, next: () => any) => {
console.log("Finish");
return next();
};
(infoAll)
(finish)
("user")
class User {
private body: IBody;
(info)
("")
public getUsers() {
return new Response(users, 200);
}
("#id")
public getUser(url: any) {
const id = url.args.id;
const user: any = users.find((elment) => elment.id === id);
return new Response(user, 200);
}
("")
public addUser(url: any) {
const user = this.body;
users.push(user);
return new Response(users, 200);
}
("#id")
public updateUser(url: any) {
const id = url.args.id;
const resp = users.map((user) => {
const value = user;
if (value.id === id) {
value.permission = this.body.permission;
}
return value;
});
if (!resp) {
return new HttpError("User not found", 404);
} else {
return new Response(resp, 200);
}
}
("#id")
public deleteUser(url: any) {
const id = url.args.id;
const index = users.findIndex((user: any) => user.id === id);
users.splice(index, 1);
return new Response(users, 200);
}
}
("greeting")
class Greeting {
(changeResponse)
("")
public getGreeting(url: any, body: any, headers: any, next: () => {}) {
return next();
}
("query")
public getGreetingByQuery(url: any) {
const query = JSON.parse(url.query.response);
return new Response(query, 200);
}
}
const endpoints = [new User(), new Greeting()];
const cors = {
requestHeaders: ["content-type"],
validMethods: ["GET", "PUT", "POST", "DELETE", "OPTIONS"],
validOrigins: ["http://localhost:9876"],
};
const configRouter: IRouterOptions = {
connectionMode: true,
cors,
endpoints,
road: app,
verbose: true,
};
new SetRouter(configRouter);
server.listen(3000, () => {
console.log("Serve is running in the port 3000");
});