diff --git a/libs/blog-bff/articles/api/src/lib/api.ts b/libs/blog-bff/articles/api/src/lib/api.ts index 6270cea8..d1e2122a 100644 --- a/libs/blog-bff/articles/api/src/lib/api.ts +++ b/libs/blog-bff/articles/api/src/lib/api.ts @@ -29,6 +29,8 @@ app.get('/', async (c) => { queryParams.category && (query.category_slug = queryParams.category); queryParams.excludeRecent && (query.exclude_recent = queryParams.excludeRecent); + queryParams.excludeCategory && + (query.exclude_category = queryParams.excludeCategory); const result = await client.getPosts(query); @@ -43,7 +45,6 @@ app.get('/:slug', async (c) => { const client = new WpPosts(c.var.createWPClient({ namespace: 'al/v1' })); const result = await client.getBySlug(slug); - return c.json(toArticle(result.data)); }); diff --git a/libs/blog-bff/articles/api/src/lib/dtos.ts b/libs/blog-bff/articles/api/src/lib/dtos.ts index 638d3c13..220605c0 100644 --- a/libs/blog-bff/articles/api/src/lib/dtos.ts +++ b/libs/blog-bff/articles/api/src/lib/dtos.ts @@ -15,7 +15,7 @@ export interface WPPostDto { }; acf: { reading_time: string | number; - difficulty: string; + difficulty: 'beginner' | 'intermediate' | 'advanced'; }; } diff --git a/libs/blog-bff/articles/api/src/lib/mappers.ts b/libs/blog-bff/articles/api/src/lib/mappers.ts index 0ad05c59..f4abbdd1 100644 --- a/libs/blog-bff/articles/api/src/lib/mappers.ts +++ b/libs/blog-bff/articles/api/src/lib/mappers.ts @@ -43,8 +43,9 @@ export const toArticlePreviewList = (dtos: WPPostDto[]): ArticlePreview[] => { export const toArticle = (dto?: WPPostDetailsDto): Article => { const title = cheerio.load(dto.title.rendered || ''); + const content = sanitizeHtml(dto?.content.rendered || '', { - allowedTags: sanitizeHtml.defaults.allowedTags.concat(['img']), + allowedTags: sanitizeHtml.defaults.allowedTags.concat(['img', 'iframe']), allowedAttributes: { img: [ 'src', @@ -58,6 +59,7 @@ export const toArticle = (dto?: WPPostDetailsDto): Article => { 'sizes', ], a: ['href'], + iframe: ['src'], }, allowedClasses: { pre: ['lang:*'], diff --git a/libs/blog-bff/authors/api/src/lib/api.ts b/libs/blog-bff/authors/api/src/lib/api.ts index 6d5d137e..7abacb4a 100644 --- a/libs/blog-bff/authors/api/src/lib/api.ts +++ b/libs/blog-bff/authors/api/src/lib/api.ts @@ -26,6 +26,8 @@ app.get('/', async (c) => { queryParams['sortedTitles'] && (query['sorted_titles'] = queryParams['sortedTitles']); + queryParams['acfFormat'] && (query['acf_format'] = queryParams['acfFormat']); + const result = await client.getAuthors(query); return c.json(>{ diff --git a/libs/blog-bff/authors/api/src/lib/dtos.ts b/libs/blog-bff/authors/api/src/lib/dtos.ts index f80b7788..4882bc73 100644 --- a/libs/blog-bff/authors/api/src/lib/dtos.ts +++ b/libs/blog-bff/authors/api/src/lib/dtos.ts @@ -5,6 +5,7 @@ export interface WPAuthorDto { description: string; acf: { al_position: string; + acf_avatar: string; al_github_nickname: string; al_twitter_handle: string; al_linkedin_id: string; diff --git a/libs/blog-bff/authors/api/src/lib/mappers.ts b/libs/blog-bff/authors/api/src/lib/mappers.ts index 1f84ca57..a15e4cdf 100644 --- a/libs/blog-bff/authors/api/src/lib/mappers.ts +++ b/libs/blog-bff/authors/api/src/lib/mappers.ts @@ -10,10 +10,7 @@ export const toAuthor = (dto: WPAuthorDto): Author => { pl: dto.acf.user_description_pl, en: dto.acf.user_description_en, }, - avatarUrl: - Object.entries(dto.avatar_urls).find(([, url]) => - url.includes('96'), - )?.[1] || Object.values(dto.avatar_urls)[0], + avatarUrl: dto.acf.acf_avatar, position: dto.acf.al_position, github: dto.acf.al_github_nickname || null, twitter: dto.acf.al_twitter_handle || null, diff --git a/libs/blog-bff/authors/api/src/lib/wp-authors.ts b/libs/blog-bff/authors/api/src/lib/wp-authors.ts index 0b2275fe..34dfa77f 100644 --- a/libs/blog-bff/authors/api/src/lib/wp-authors.ts +++ b/libs/blog-bff/authors/api/src/lib/wp-authors.ts @@ -18,6 +18,7 @@ export class WpAuthors { return this._wpClient.get('users', { slug: slug, _fields: 'id,type,slug,name,description,avatar_urls,acf', + acf_format: 'standard', }); } }