Add isword module
This commit is contained in:
@@ -1,4 +1,11 @@
|
|||||||
FROM node:18
|
FROM node:18-ubuntu
|
||||||
|
|
||||||
|
|
||||||
|
# Install american word lists for /isword
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
wamerican \
|
||||||
|
# wamerican-insane \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
ADD package.json .
|
ADD package.json .
|
||||||
ADD yarn.lock .
|
ADD yarn.lock .
|
||||||
|
@@ -2,9 +2,10 @@ import { Module } from '@nestjs/common';
|
|||||||
import { AppController } from './app.controller';
|
import { AppController } from './app.controller';
|
||||||
import { AppService } from './app.service';
|
import { AppService } from './app.service';
|
||||||
import { ParkioModule } from './parkio/parkio.module';
|
import { ParkioModule } from './parkio/parkio.module';
|
||||||
|
import { IswordModule } from './isword/isword.module';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [ParkioModule],
|
imports: [ParkioModule, IswordModule],
|
||||||
controllers: [AppController],
|
controllers: [AppController],
|
||||||
providers: [AppService],
|
providers: [AppService],
|
||||||
})
|
})
|
||||||
|
24
src/isword/isword.controller.ts
Normal file
24
src/isword/isword.controller.ts
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
import { Body, Controller, Get, Param, Post } from '@nestjs/common';
|
||||||
|
import { IswordService } from './isword.service';
|
||||||
|
|
||||||
|
export type AreWordsDto = string[]
|
||||||
|
|
||||||
|
@Controller('isword')
|
||||||
|
export class IswordController {
|
||||||
|
constructor(
|
||||||
|
private readonly isWordService: IswordService
|
||||||
|
) {}
|
||||||
|
|
||||||
|
@Get(':word')
|
||||||
|
isWord(@Param('word') word: string) {
|
||||||
|
return this.isWordService.isWord(word)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Post()
|
||||||
|
areWords(@Body() body: AreWordsDto) {
|
||||||
|
return body.reduce((acc, word) => {
|
||||||
|
acc[word] = this.isWordService.isWord(word)
|
||||||
|
return acc;
|
||||||
|
}, {} as {[key: string]: boolean})
|
||||||
|
}
|
||||||
|
}
|
9
src/isword/isword.module.ts
Normal file
9
src/isword/isword.module.ts
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
import { Module } from '@nestjs/common';
|
||||||
|
import { IswordService } from './isword.service';
|
||||||
|
import { IswordController } from './isword.controller';
|
||||||
|
|
||||||
|
@Module({
|
||||||
|
providers: [IswordService],
|
||||||
|
controllers: [IswordController]
|
||||||
|
})
|
||||||
|
export class IswordModule {}
|
15
src/isword/isword.service.ts
Normal file
15
src/isword/isword.service.ts
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
import { Injectable } from '@nestjs/common';
|
||||||
|
import { readFileSync } from 'fs';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class IswordService {
|
||||||
|
private readonly dict: string = '/usr/share/dict/words';
|
||||||
|
private readonly dictContents: string[];
|
||||||
|
constructor() {
|
||||||
|
this.dictContents = readFileSync(this.dict).toString().split('\n')
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
isWord = (word: string) =>
|
||||||
|
this.dictContents.includes(word)
|
||||||
|
}
|
Reference in New Issue
Block a user