From a19affcdfd2eb0a1fef419be0498d879f73f8a8f Mon Sep 17 00:00:00 2001 From: Chip Wasson Date: Tue, 12 Sep 2023 09:27:08 -0600 Subject: [PATCH] Add swagger integration --- package.json | 1 + src/isword/isword.controller.ts | 2 ++ src/isword/isword.service.ts | 1 - src/main.ts | 8 +++++++ src/parkio/parkio.controller.ts | 2 ++ yarn.lock | 37 ++++++++++++++++++++++++++------- 6 files changed, 42 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index a8f24bb..c9ab8e6 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "@nestjs/common": "^10.0.0", "@nestjs/core": "^10.0.0", "@nestjs/platform-express": "^10.0.0", + "@nestjs/swagger": "^7.1.11", "axios": "^1.5.0", "ramda": "^0.29.0", "reflect-metadata": "^0.1.13", diff --git a/src/isword/isword.controller.ts b/src/isword/isword.controller.ts index 16fb924..f01717a 100644 --- a/src/isword/isword.controller.ts +++ b/src/isword/isword.controller.ts @@ -1,8 +1,10 @@ import { Body, Controller, Get, Param, Post } from '@nestjs/common'; import { IswordService } from './isword.service'; +import { ApiTags } from '@nestjs/swagger'; export type AreWordsDto = string[] +@ApiTags('dictionary') @Controller('isword') export class IswordController { constructor( diff --git a/src/isword/isword.service.ts b/src/isword/isword.service.ts index efee24d..5563dec 100644 --- a/src/isword/isword.service.ts +++ b/src/isword/isword.service.ts @@ -7,7 +7,6 @@ export class IswordService { private readonly dictContents: string[]; constructor() { this.dictContents = readFileSync(this.dict).toString().split('\n') - } isWord = (word: string) => diff --git a/src/main.ts b/src/main.ts index 9e3915e..b7c7a5c 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,8 +1,16 @@ import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; +import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger'; async function bootstrap() { const app = await NestFactory.create(AppModule); + const config = new DocumentBuilder() + .setTitle('us.dev API') + .setDescription("Chip's generalized API") + .setVersion('1.0') + .build(); + const document = SwaggerModule.createDocument(app, config); + SwaggerModule.setup('api', app, document); app.enableCors({origin: "*"}); await app.listen(3000); } diff --git a/src/parkio/parkio.controller.ts b/src/parkio/parkio.controller.ts index 86f8788..8534fb1 100644 --- a/src/parkio/parkio.controller.ts +++ b/src/parkio/parkio.controller.ts @@ -1,6 +1,8 @@ import { Controller, Get, Param } from '@nestjs/common'; import { ParkioService } from './parkio.service'; +import { ApiTags } from '@nestjs/swagger'; +@ApiTags('parkio') @Controller('parkio') export class ParkioController { constructor( diff --git a/yarn.lock b/yarn.lock index 79c8974..4915acf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -731,6 +731,11 @@ path-to-regexp "3.2.0" tslib "2.6.2" +"@nestjs/mapped-types@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@nestjs/mapped-types/-/mapped-types-2.0.2.tgz#c8a090a8d22145b85ed977414c158534210f2e4f" + integrity sha512-V0izw6tWs6fTp9+KiiPUbGHWALy563Frn8X6Bm87ANLRuE46iuBMD5acKBDP5lKL/75QFvrzSJT7HkCbB0jTpg== + "@nestjs/platform-express@^10.0.0": version "10.2.4" resolved "https://registry.yarnpkg.com/@nestjs/platform-express/-/platform-express-10.2.4.tgz#1faf96b6828125d263dc70b9469761b41ee55dd5" @@ -753,6 +758,17 @@ jsonc-parser "3.2.0" pluralize "8.0.0" +"@nestjs/swagger@^7.1.11": + version "7.1.11" + resolved "https://registry.yarnpkg.com/@nestjs/swagger/-/swagger-7.1.11.tgz#f2b8f93530988e7444fde5253960e30a2e7e7201" + integrity sha512-EneFcucWC4a0n/FVd1Hg1MRugt65vL/1RDsQMqhMRfVw6IbYWuiKh51TNI4QwOPrRGiR1ry8qHJCBcTX9cl89Q== + dependencies: + "@nestjs/mapped-types" "2.0.2" + js-yaml "4.1.0" + lodash "4.17.21" + path-to-regexp "3.2.0" + swagger-ui-dist "5.6.2" + "@nestjs/testing@^10.0.0": version "10.2.4" resolved "https://registry.yarnpkg.com/@nestjs/testing/-/testing-10.2.4.tgz#df28cb0d2d262c1764104b0ccf3d8b7c21587b04" @@ -3389,6 +3405,13 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +js-yaml@4.1.0, js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" @@ -3397,13 +3420,6 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -3512,7 +3528,7 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash@^4.17.21: +lodash@4.17.21, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -4558,6 +4574,11 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +swagger-ui-dist@5.6.2: + version "5.6.2" + resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-5.6.2.tgz#ff50a99e118fa71099f31cd37fde5d0e53f7fd28" + integrity sha512-2LKVuU2m6RHkemJloKiKJOTpN2RPmbsiad0OfSdtmFHOXJKAgYRZMwJcpT96RX6E9HUB5RkVOFC6vWqVjRgSOg== + symbol-observable@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205"