/
MediaDetailMarshallerService.groovy
99 lines (84 loc) · 3.52 KB
/
MediaDetailMarshallerService.groovy
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package streama.marshallers
import grails.converters.JSON
import grails.transaction.Transactional
import streama.*
@Transactional
class MediaDetailMarshallerService {
def springSecurityService
def settingsService
def mediaService
def init() {
JSON.createNamedConfig('mediaDetail') { cfg ->
cfg.registerObjectMarshaller(TvShow) { TvShow tvShow ->
def result = [:]
result['id'] = tvShow.id
result['mediaType'] = 'tvShow'
result['dateCreated'] = tvShow.dateCreated
result['lastUpdated'] = tvShow.lastUpdated
result['name'] = tvShow.name
result['overview'] = tvShow.overview
result['apiId'] = tvShow.apiId
result['backdrop_path'] = tvShow.backdrop_path
result['poster_path'] = tvShow.getPosterPath()
result['first_air_date'] = tvShow.first_air_date
result['original_language'] = tvShow.original_language
result['vote_average'] = tvShow.vote_average
result['vote_count'] = tvShow.vote_count
result['imdb_id'] = tvShow.imdb_id
result['popularity'] = tvShow.popularity
result['episodesWithFilesCount'] = tvShow.episodes.findAll{it.files}.size()
result['episodesCount'] = tvShow.episodes.size()
result['manualInput'] = tvShow.manualInput
result['poster_image_src'] = tvShow.poster_image?.src
result['genre'] = tvShow.genre
return result
}
cfg.registerObjectMarshaller(Movie) { Movie movie ->
def result = [:]
result['id'] = movie.id
result['mediaType'] = 'movie'
result['dateCreated'] = movie.dateCreated
result['lastUpdated'] = movie.lastUpdated
result['poster_path'] = movie.getPosterPath()
result['release_date'] = movie.release_date
result['title'] = movie.title
result['overview'] = movie.overview
result['apiId'] = movie.apiId
result['original_language'] = movie.original_language
result['vote_average'] = movie.vote_average
result['vote_count'] = movie.vote_count
result['popularity'] = movie.popularity
result['imdb_id'] = movie.imdb_id
result['poster_image_src'] = movie.poster_image?.src
result['genre'] = movie.genre
result['files'] = movie.files.findAll{it.extension != '.srt' && it.extension != '.vtt'}
result['subtitles'] = movie.files.findAll{it.extension == '.srt' || it.extension == '.vtt'}
result['hasFiles'] = movie.hasFiles()
return result
}
cfg.registerObjectMarshaller(Episode) { Episode episode ->
def result = [:]
result['id'] = episode.id
result['mediaType'] = 'episode'
result['dateCreated'] = episode.dateCreated
result['lastUpdated'] = episode.lastUpdated
result['backdrop_path'] = episode.still_path
result['release_date'] = episode.air_date
result['title'] = episode.title
result['overview'] = episode.overview
result['apiId'] = episode.apiId
result['original_language'] = episode.original_language
result['vote_average'] = episode.vote_average
result['vote_count'] = episode.vote_count
result['popularity'] = episode.popularity
result['imdb_id'] = episode.imdb_id
result['files'] = episode.getVideoFiles()
result['videoFiles'] = episode.getVideoFiles()
result['subtitles'] = episode.getSubtitles()
result['hasFiles'] = episode.hasFiles()
result['tvShow'] = episode.show
return result
}
}
}
}