Skip to content

Commit 1f3e909

Browse files
committed
feat(omdb): Implemented OMDB service
1 parent 6f544d5 commit 1f3e909

File tree

5 files changed

+79
-11
lines changed

5 files changed

+79
-11
lines changed

libs/services/omdb/src/index.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
export * from './lib/services-omdb';
1+
export * from './omdb.module'
2+
export * from './omdb.service'

libs/services/omdb/src/lib/services-omdb.spec.ts

-7
This file was deleted.

libs/services/omdb/src/lib/services-omdb.ts

-3
This file was deleted.

libs/services/omdb/src/omdb.module.ts

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { Module, Global } from '@nestjs/common'
2+
3+
import { OmdbService } from './omdb.service'
4+
5+
@Global()
6+
@Module({
7+
providers: [
8+
OmdbService
9+
],
10+
exports: [
11+
OmdbService
12+
]
13+
})
14+
export class OmdbModule {
15+
}
+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import { Injectable, Logger } from '@nestjs/common'
2+
import * as Omdb from 'omdb-api-pt'
3+
import { Images, Movie } from '@pct-org/mongo-models'
4+
5+
@Injectable()
6+
export class OmdbService {
7+
8+
private readonly omdb
9+
10+
private readonly logger = new Logger('OMDB')
11+
12+
constructor() {
13+
const omdbKey = process.env.OMDB_KEY
14+
15+
if (omdbKey) {
16+
this.omdb = new Omdb({
17+
apiKey: omdbKey
18+
})
19+
}
20+
}
21+
22+
public async getMovieImages(item: Movie): Promise<Images> {
23+
let poster = null
24+
25+
if (item.images.poster?.full) {
26+
return item.images
27+
}
28+
29+
try {
30+
const images = await this.omdb.byId({
31+
imdb: item.imdbId,
32+
type: 'movie'
33+
})
34+
35+
poster = images.Poster
36+
37+
} catch (err) {
38+
if (err.statusCode && err.statusCode === 404) {
39+
this.logger.error(`Can't find images for '${item.slug}'`, err)
40+
41+
} else if (err.statusCode && err.statusCode === 401) {
42+
this.logger.error(`Rate limit hit when fetching for '${item.slug}'`, err)
43+
44+
} else {
45+
this.logger.error(`Error happened getting images for '${item.slug}'`, err)
46+
}
47+
}
48+
49+
return {
50+
backdrop: item.images.backdrop,
51+
poster: poster
52+
? {
53+
full: poster.url,
54+
high: poster.url,
55+
medium: poster.url,
56+
thumb: poster.url
57+
}
58+
: item.images.poster
59+
}
60+
}
61+
62+
}

0 commit comments

Comments
 (0)