aboutsummaryrefslogtreecommitdiff
path: root/src/graphql/anime/resolvers.ts
blob: f2fc4b61a62fc8ac1459c46721a0f9fc8c67e959 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import type { WithIndex } from '../$types';
import type { Resolvers as RootResolvers } from '../$types';

type AnimeResolvers = Pick<
  RootResolvers,
  'Query' | 'Anime' | 'Subtitles' | 'SubtitleSchedule' | 'Subtitle'
>;

export const resolvers: WithIndex<AnimeResolvers> = {
  Query: {
    Anime: async (_, args) => {
      const timezone = args.timezone || 'Asia/Tokyo';

      return {
        subtitles: {
          timezone,
          schedule: Object.fromEntries(
            Object.entries(
              (await (await fetch(`https://subsplease.org/api/?f=schedule&tz=${timezone}`)).json())
                .schedule
            ).map(([key, value]) => [key.toLowerCase(), value])
          )
        }
      };
    }
  }
};