From 60ed843bedc98a8e52dbbca0c9b37a4810dc51ae Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Fri, 26 Feb 2021 14:14:16 +0100 Subject: [PATCH] feat: add Ghost admin client --- package-lock.json | 56 ++++++++++++++++++++++++++------- package.json | 3 +- src/posts/posts.module.ts | 2 ++ src/posts/posts.service.spec.ts | 18 +++++++++++ src/posts/posts.service.ts | 17 ++++++++++ 5 files changed, 83 insertions(+), 13 deletions(-) create mode 100644 src/posts/posts.service.spec.ts create mode 100644 src/posts/posts.service.ts diff --git a/package-lock.json b/package-lock.json index dc0afa3bb..f7c3c6c63 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1334,14 +1334,26 @@ } }, "@nestjs/common": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-7.5.1.tgz", - "integrity": "sha512-UKTWa/MFTryRm4L9b+lsKFg+m/B4zDCsx/pQAMZVCYMW4FRg6QH4BIaq5fMz5G2hL5IFlFVoOC/eXJwhGDOrYA==", + "version": "7.6.13", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-7.6.13.tgz", + "integrity": "sha512-xijw6so4yA8Ywi8mnrA7Kz97ZC36u20Eyb5/XvmokdLcgTcTyHVdE39r44JYnjHPf8SKZoJ965zdu/fKl4s4GQ==", "requires": { - "axios": "0.21.0", + "axios": "0.21.1", "iterare": "1.2.1", - "tslib": "2.0.3", - "uuid": "8.3.1" + "tslib": "2.1.0", + "uuid": "8.3.2" + }, + "dependencies": { + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + } } }, "@nestjs/core": { @@ -1627,6 +1639,26 @@ "defer-to-connect": "^1.0.1" } }, + "@tryghost/admin-api": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/@tryghost/admin-api/-/admin-api-1.3.8.tgz", + "integrity": "sha512-xRyyc3b29xcfyGhUx3nfvsJhXBz7+2NMWbAzSijKphQooCfG7L45XsfF9oRXwEToXUfHbnpBqvzKtsCIp6i8NA==", + "requires": { + "axios": "0.21.1", + "form-data": "^3.0.0", + "jsonwebtoken": "^8.4.0" + }, + "dependencies": { + "axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "requires": { + "follow-redirects": "^1.10.0" + } + } + } + }, "@types/anymatch": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", @@ -2754,9 +2786,9 @@ "dev": true }, "axios": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.0.tgz", - "integrity": "sha512-fmkJBknJKoZwem3/IKSSLpkdNXZeBu5Q7GA/aRsr2btgrptmSCxi2oFjZHqGdK9DoTil9PIHlPIZw2EcRJXRvw==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", "requires": { "follow-redirects": "^1.10.0" } @@ -7108,9 +7140,9 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "inquirer": { "version": "7.3.3", diff --git a/package.json b/package.json index 9a2df72b3..996c2345b 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "test:e2e": "jest --config ./test/jest-e2e.json" }, "dependencies": { - "@nestjs/common": "^7.5.1", + "@nestjs/common": "^7.6.13", "@nestjs/core": "^7.5.1", "@nestjs/jwt": "^7.2.0", "@nestjs/mongoose": "^7.1.0", @@ -30,6 +30,7 @@ "@nestjs/platform-express": "^7.5.1", "@nestjs/schedule": "^0.4.1", "@nestjs/swagger": "^4.7.5", + "@tryghost/admin-api": "^1.3.8", "@types/bcrypt": "^3.0.0", "bcrypt": "^5.0.0", "class-transformer": "^0.3.1", diff --git a/src/posts/posts.module.ts b/src/posts/posts.module.ts index de11cb04f..90768fd6f 100644 --- a/src/posts/posts.module.ts +++ b/src/posts/posts.module.ts @@ -1,8 +1,10 @@ import { HttpModule, Module } from '@nestjs/common'; import { PostsController } from './posts.controller'; +import { PostsService } from './posts.service'; @Module({ imports: [HttpModule], controllers: [PostsController], + providers: [PostsService], }) export class PostsModule {} diff --git a/src/posts/posts.service.spec.ts b/src/posts/posts.service.spec.ts new file mode 100644 index 000000000..e15215844 --- /dev/null +++ b/src/posts/posts.service.spec.ts @@ -0,0 +1,18 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { PostsService } from './posts.service'; + +describe('PostsService', () => { + let service: PostsService; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [PostsService], + }).compile(); + + service = module.get<PostsService>(PostsService); + }); + + it('should be defined', () => { + expect(service).toBeDefined(); + }); +}); diff --git a/src/posts/posts.service.ts b/src/posts/posts.service.ts new file mode 100644 index 000000000..0d4490c02 --- /dev/null +++ b/src/posts/posts.service.ts @@ -0,0 +1,17 @@ +import { HttpService, Injectable } from '@nestjs/common'; +import * as GhostAdminAPI from '@tryghost/admin-api'; + +@Injectable() +export class PostsService { + private api: any; + + constructor(private readonly httpService: HttpService) { + // Configure Ghost client + this.api = new GhostAdminAPI({ + url: process.env.GHOST_HOST_AND_PORT, + // Admin API key goes here + key: process.env.GHOST_HOST_AND_PORT, + version: 'v3', + }); + } +} -- GitLab