1
1
import { KyHttpClient } from "../__generated__/ky-client" ;
2
2
import { Api } from "../__generated__/radarr/Api" ;
3
- import { CustomFormatResource , QualityDefinitionResource , QualityProfileResource } from "../__generated__/radarr/data-contracts" ;
3
+ import {
4
+ CustomFormatResource ,
5
+ LanguageResource ,
6
+ QualityDefinitionResource ,
7
+ QualityProfileResource ,
8
+ } from "../__generated__/radarr/data-contracts" ;
4
9
import { logger } from "../logger" ;
10
+ import { cloneWithJSON } from "../util" ;
5
11
import { IArrClient , validateClientParams } from "./unified-client" ;
6
12
7
- export class RadarrClient implements IArrClient < QualityProfileResource , QualityDefinitionResource , CustomFormatResource > {
13
+ export class RadarrClient implements IArrClient < QualityProfileResource , QualityDefinitionResource , CustomFormatResource , LanguageResource > {
8
14
private api ! : Api < unknown > ;
15
+ private languageMap : Map < string , LanguageResource > = new Map ( ) ;
9
16
10
17
constructor ( baseUrl : string , apiKey : string ) {
11
18
this . initialize ( baseUrl , apiKey ) ;
@@ -24,13 +31,18 @@ export class RadarrClient implements IArrClient<QualityProfileResource, QualityD
24
31
this . api = new Api ( httpClient ) ;
25
32
}
26
33
34
+ async getLanguages ( ) {
35
+ return this . api . v3LanguageList ( ) ;
36
+ }
37
+
27
38
// Quality Management
28
39
getQualityDefinitions ( ) {
29
40
return this . api . v3QualitydefinitionList ( ) ;
30
41
}
31
42
32
43
async updateQualityDefinitions ( definitions : QualityDefinitionResource [ ] ) {
33
44
await this . api . v3QualitydefinitionUpdateUpdate ( definitions ) ;
45
+ this . api . v3LanguageList ( ) ;
34
46
return this . getQualityDefinitions ( ) ;
35
47
}
36
48
@@ -39,10 +51,19 @@ export class RadarrClient implements IArrClient<QualityProfileResource, QualityD
39
51
return this . api . v3QualityprofileList ( ) ;
40
52
}
41
53
42
- createQualityProfile ( profile : QualityProfileResource ) : Promise < QualityProfileResource > {
43
- if ( profile . language ) {
54
+ async createQualityProfile ( profile : QualityProfileResource ) : Promise < QualityProfileResource > {
55
+ const cloned = cloneWithJSON ( profile ) ;
56
+
57
+ if ( this . languageMap . size <= 0 ) {
58
+ const languages = await this . getLanguages ( ) ;
59
+ this . languageMap = new Map ( languages . map ( ( i ) => [ i . name ! , i ] ) ) ;
44
60
}
45
- return this . api . v3QualityprofileCreate ( profile ) ;
61
+
62
+ if ( profile . language == null ) {
63
+ cloned . language = this . languageMap . get ( "Any" ) ;
64
+ }
65
+
66
+ return this . api . v3QualityprofileCreate ( cloned ) ;
46
67
}
47
68
48
69
updateQualityProfile ( id : string , profile : QualityProfileResource ) : Promise < QualityProfileResource > {
0 commit comments