Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fixing import logic #12

Merged
merged 4 commits into from
May 19, 2024
Merged
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
8 changes: 8 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
root = true

[*]
end_of_line = lf
insert_final_newline = true
charset = utf-8
indent_style = space
indent_size = 2
1 change: 1 addition & 0 deletions src/cli/check-routes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ export default async(args: string[], cwd: string,): Promise<void> => {
error('validation_warnings', `${ warnings }`,);
}
if (warnings === EMPTY && errors === EMPTY) {
// eslint-disable-next-line no-console
console.log(logSymbols.success + ' ' + language('no_errors_warnings',),);
}
};
3 changes: 2 additions & 1 deletion src/helper/user-agent.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,6 @@ const getVersion = (name: string, lock: Lock,): string => {
const lock: Lock = reqlib.require('/package-lock.json',) as Lock;
const main = `${ lock.name }/${ formatVersion(lock,) }`;
const needle = `needle/${ getVersion('needle', lock,) }`;
const self = `@idrinth-api-bench/framework/${ getVersion('@idrinth-api-bench/framework', lock,) }`;
const name = '@idrinth-api-bench/framework';
const self = `${ name }/${ getVersion(name, lock,) }`;
export default `${ main } ${ self } ${ needle }`.replace(/ {2,}/ug, ' ',);
76 changes: 38 additions & 38 deletions src/middlewares/access-token.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
import Middleware from './middleware.js';
import {
process as processType,
prepare as prepareType,
} from './middleware.js';
import Request from '../routes/request.js';
import Result from '../messaging/result.js';
import HashMap from '../helper/hashmap.js';
Expand All @@ -19,44 +22,41 @@ const get = (
return fallback;
};

class Access implements Middleware {
public prepare(request: Request,): Request {
const access = store.get('access', '',);
const refresh = store.get('refresh', '',);
if (access) {
if (typeof request.body === 'string') {
request.body = request.body.replace(
/%refresh-token-middleware%/ug,
refresh,
);
request.body = request.body.replace(
/%access-token-middleware%/ug,
access,
);
}
if (typeof request.headers === 'undefined') {
request.headers = {};
}
request.headers.authorization = `Bearer ${ access }`;
export const prepare: prepareType = (request: Request,): Request => {
const access = store.get('access', '',);
const refresh = store.get('refresh', '',);
if (access) {
if (typeof request.body === 'string') {
request.body = request.body.replace(
/%refresh-token-middleware%/ug,
refresh,
);
request.body = request.body.replace(
/%access-token-middleware%/ug,
access,
);
}
return request;
if (typeof request.headers === 'undefined') {
request.headers = {};
}
request.headers.authorization = `Bearer ${ access }`;
}
return request;
};
Idrinth marked this conversation as resolved.
Show resolved Hide resolved

public process(response: Result,): void {
if (typeof response.response.headers === 'undefined') {
return;
}
const contentType = response.response.headers['content-type'];
if (! jsonCheck.test(contentType,)) {
return;
}
const body = JSON.parse(response.response.body,);
let access = store.get('access', '',);
let refresh = store.get('refresh', '',);
access = get(access, body, 'access', 'access_token', 'access-token',);
refresh = get(refresh, body, 'refresh', 'refresh_token', 'refresh-token',);
store.set('access', access,);
store.set('refresh', refresh,);
export const process: processType = (response: Result,): void => {
if (typeof response.response.headers === 'undefined') {
return;
}
const contentType = response.response.headers['content-type'];
if (! jsonCheck.test(contentType,)) {
return;
}
}
export default Access;
const body = JSON.parse(response.response.body,);
let access = store.get('access', '',);
let refresh = store.get('refresh', '',);
access = get(access, body, 'access', 'access_token', 'access-token',);
refresh = get(refresh, body, 'refresh', 'refresh_token', 'refresh-token',);
store.set('access', access,);
store.set('refresh', refresh,);
};
48 changes: 24 additions & 24 deletions src/middlewares/cookie.ts
Original file line number Diff line number Diff line change
@@ -1,33 +1,33 @@
import Middleware from './middleware.js';
import {
process as processType,
prepare as prepareType,
} from './middleware.js';
import Request from '../routes/request.js';
import Result from '../messaging/result.js';
import store from '../store/store.js';

class Cookie implements Middleware {
public prepare(request: Request,): Request {
if (typeof request.cookies === 'undefined') {
request.cookies = {};
}
const jar = JSON.parse(store.get('cookie', '{}',),);
for (const cookie in jar) {
if (typeof jar[cookie] === 'string') {
request.cookies[cookie] = request.cookies[cookie] || jar[cookie];
}
export const prepare: prepareType = (request: Request,): Request => {
if (typeof request.cookies === 'undefined') {
request.cookies = {};
}
const jar = JSON.parse(store.get('cookie', '{}',),);
for (const cookie in jar) {
if (typeof jar[cookie] === 'string') {
request.cookies[cookie] = request.cookies[cookie] || jar[cookie];
}
return request;
}
return request;
};

public process(response: Result,): void {
if (typeof response.response.cookies === 'undefined') {
return;
}
const jar = JSON.parse(store.get('cookie', '{}',),);
for (const cookie in response.response.cookies) {
if (typeof response.response.cookies[cookie] === 'string') {
jar[cookie] = response.response.cookies[cookie];
}
export const process: processType = (response: Result,): void => {
if (typeof response.response.cookies === 'undefined') {
return;
}
const jar = JSON.parse(store.get('cookie', '{}',),);
for (const cookie in response.response.cookies) {
if (typeof response.response.cookies[cookie] === 'string') {
jar[cookie] = response.response.cookies[cookie];
}
store.set('cookie', JSON.stringify(jar,),);
}
}
export default Cookie;
store.set('cookie', JSON.stringify(jar,),);
};
42 changes: 21 additions & 21 deletions src/middlewares/csrf-header.ts
Original file line number Diff line number Diff line change
@@ -1,29 +1,29 @@
import Middleware from './middleware.js';
import {
process as processType,
prepare as prepareType,
} from './middleware.js';
import Request from '../routes/request.js';
import Result from '../messaging/result.js';
import store from '../store/store.js';

class CsrfHeader implements Middleware {
public prepare(request: Request,): Request {
const csrf = store.get('csrf', '',);
if (csrf) {
if (typeof request.headers === 'undefined') {
request.headers = {};
}
if (! request.headers['x-csrf-token']) {
request.headers['x-csrf-token'] = csrf;
}
export const prepare: prepareType = (request: Request,): Request => {
const csrf = store.get('csrf', '',);
if (csrf) {
if (typeof request.headers === 'undefined') {
request.headers = {};
}
if (! request.headers['x-csrf-token']) {
request.headers['x-csrf-token'] = csrf;
}
return request;
}
return request;
};

public process(response: Result,): void {
if (typeof response.response.headers === 'undefined') {
return;
}
if (response.response.headers['x-csrf-token']) {
store.set('csrf', response.response.headers['x-csrf-token'],);
}
export const process: processType = (response: Result,): void => {
if (typeof response.response.headers === 'undefined') {
return;
}
if (response.response.headers['x-csrf-token']) {
store.set('csrf', response.response.headers['x-csrf-token'],);
}
}
export default CsrfHeader;
};
32 changes: 13 additions & 19 deletions src/middlewares/encoding.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import Middleware from './middleware.js';
import {
prepare as prepareType,
} from './middleware.js';
import Request from '../routes/request.js';
import formUrlEncoded from 'form-urlencoded';
import Result from '../messaging/result.js';

const handleForm = (request: Request,): Request => {
if (! request.headers['content-type']) {
Expand All @@ -18,22 +19,15 @@ const handleJSON = (request: Request,): Request => {
return request;
};

class Encoding implements Middleware {
public prepare(request: Request,): Request {
if (typeof request.headers === 'undefined') {
request.headers = {};
}
if (request.autohandle === 'json') {
return handleJSON(request,);
}
if (request.autohandle === 'form' && typeof request.body === 'object') {
return handleForm(request,);
}
return request;
export const prepare: prepareType = (request: Request,): Request => {
if (typeof request.headers === 'undefined') {
request.headers = {};
}

public process(response: Result,): void {
//no task here
if (request.autohandle === 'json') {
return handleJSON(request,);
}
if (request.autohandle === 'form' && typeof request.body === 'object') {
return handleForm(request,);
}
}
export default Encoding;
return request;
};
43 changes: 19 additions & 24 deletions src/middlewares/failure-check.ts
Original file line number Diff line number Diff line change
@@ -1,31 +1,26 @@
import Middleware from './middleware.js';
import {
process as processType,
} from './middleware.js';
import Result from '../messaging/result.js';
import language from '../helper/language.js';
import StandardResponse from '../helper/standard-response.js';
import Request from '../routes/request.js';

export default class FailureCheck implements Middleware {
public prepare(request: Request,): Request {
return request;
export const process: processType = (result: Result,): void => {
let response: StandardResponse;
try {
response = JSON.parse(result.response.body,);
} catch (e) {
throw Error(language('invalid_json_body', `${ e }`,),);
}
if (response.status === 'success') {
throw new Error(
language('response_not_failure', 'status', `${ response.status }`,),
);
}

public process(result: Result,): void {
let response: StandardResponse;
try {
response = JSON.parse(result.response.body,);
} catch (e) {
throw Error(language('invalid_json_body', `${ e }`,),);
}
if (response.status === 'success') {
throw new Error(
language('response_not_failure', 'status', `${ response.status }`,),
);
}

if (response.success === true) {
throw new Error(
language('response_not_failure', 'success', `${ response.success }`,),
);
}
if (response.success === true) {
throw new Error(
language('response_not_failure', 'success', `${ response.success }`,),
);
}
}
};
35 changes: 15 additions & 20 deletions src/middlewares/json-validator.ts
Original file line number Diff line number Diff line change
@@ -1,27 +1,22 @@
import Middleware from './middleware.js';
import Request from '../routes/request.js';
import {
process as processType,
} from './middleware.js';
import Result from '../messaging/result.js';
import language from '../helper/language.js';

const jsonCheck = /^application\/json/ui;

export default class JsonValidator implements Middleware {
public prepare(request: Request,): Request {
return request;
export const process: processType = (result: Result,): void => {
if (typeof result.response.headers['content-type'] === 'undefined') {
throw Error(language('no_content_type',),);
}

public process(result: Result,): void {
if (typeof result.response.headers['content-type'] === 'undefined') {
throw Error(language('no_content_type',),);
}
const contentType = result.response.headers['content-type'];
if (! jsonCheck.test(contentType,)) {
throw Error(language('no_json_content_type', contentType,),);
}
try {
JSON.parse(result.response.body,);
} catch (e) {
throw Error(language('invalid_json_body', `${ e }`,),);
}
const contentType = result.response.headers['content-type'];
if (! jsonCheck.test(contentType,)) {
throw Error(language('no_json_content_type', contentType,),);
}
try {
JSON.parse(result.response.body,);
} catch (e) {
throw Error(language('invalid_json_body', `${ e }`,),);
}
}
};
23 changes: 9 additions & 14 deletions src/middlewares/max-time.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,14 @@
import Middleware from './middleware.js';
import Request from '../routes/request.js';
import {
process as processType,
} from './middleware.js';
import Result from '../messaging/result.js';
import language from '../helper/language.js';

export default class MaxTime implements Middleware {
public prepare(request: Request,): Request {
return request;
export const process: processType = (result: Result,): void => {
if (typeof result.maxDuration !== 'number') {
return;
}

public process(result: Result,): void {
if (typeof result.maxDuration !== 'number') {
return;
}
if (result.duration > result.maxDuration) {
throw new Error(language('too_slow', `${ result.maxDuration }`,),);
}
if (result.duration > result.maxDuration) {
throw new Error(language('too_slow', `${ result.maxDuration }`,),);
}
Idrinth marked this conversation as resolved.
Show resolved Hide resolved
}
};
Loading
Loading