Skip to content

Commit

Permalink
Use a codec to decode a hardcoded response from labs #3342
Browse files Browse the repository at this point in the history
  • Loading branch information
kevinrutherford committed Jun 20, 2024
1 parent 7755839 commit e7b22b1
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -1,9 +1,40 @@
import * as E from 'fp-ts/Either';
import * as RA from 'fp-ts/ReadonlyArray';
import * as TE from 'fp-ts/TaskEither';
import { flow, pipe } from 'fp-ts/function';
import * as t from 'io-ts';
import { Logger } from '../../logger';
import * as DE from '../../types/data-error';
import { decodeAndLogFailures } from '../decode-and-log-failures';
import { ExternalQueries } from '../external-queries';

const titles = [
'Infectious Diseases (except HIV/AIDS)',
'Epidemiology',
];
const hardCodedResponse = {
data: [
{
type: 'category',
id: 'Infectious Diseases (except HIV/AIDS)',
},
{
type: 'category',
id: 'Epidemiology',
},
],
};

export const fetchSearchCategories: ExternalQueries['fetchSearchCategories'] = () => TE.right(titles);
const scietyLabsCategoriesResponseCodec = t.type({
data: t.array(t.type({
type: t.literal('category'),
id: t.string,
})),
});

export const fetchSearchCategories = (logger: Logger): ExternalQueries['fetchSearchCategories'] => () => pipe(
hardCodedResponse,
TE.right,
TE.chainEitherKW(flow(
decodeAndLogFailures(logger, scietyLabsCategoriesResponseCodec, { url: '' }),
E.mapLeft(() => DE.unavailable),
)),
TE.map((response) => response.data),
TE.map(RA.map((category) => category.id)),
);
2 changes: 1 addition & 1 deletion src/third-parties/instantiate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ export const instantiate = (
logger,
),
fetchRecommendedPapers: createFetchRecommendedPapers(queryExternalService, logger),
fetchSearchCategories,
fetchSearchCategories: fetchSearchCategories(logger),
fetchStaticFile: fetchStaticFile(logger),
fetchUserAvatarUrl: fetchUserAvatarUrl(queryExternalService, logger),
getArticleSubjectArea: getBiorxivOrMedrxivCategory({ queryExternalService, logger }),
Expand Down

0 comments on commit e7b22b1

Please sign in to comment.