aboutsummaryrefslogtreecommitdiff
path: root/pandora/clientbuilder.py
diff options
context:
space:
mode:
Diffstat (limited to 'pandora/clientbuilder.py')
-rw-r--r--pandora/clientbuilder.py42
1 files changed, 25 insertions, 17 deletions
diff --git a/pandora/clientbuilder.py b/pandora/clientbuilder.py
index bc55cec..2b11ffb 100644
--- a/pandora/clientbuilder.py
+++ b/pandora/clientbuilder.py
@@ -70,8 +70,7 @@ class TranslatingDict(dict):
70 70
71 def __setitem__(self, key, value): 71 def __setitem__(self, key, value):
72 key = self.translate_key(key) 72 key = self.translate_key(key)
73 super().__setitem__( 73 super().__setitem__(key, self.translate_value(key, value))
74 key, self.translate_value(key, value))
75 74
76 75
77class APIClientBuilder: 76class APIClientBuilder:
@@ -99,19 +98,25 @@ class APIClientBuilder:
99 self.client_class = client_class or self.DEFAULT_CLIENT_CLASS 98 self.client_class = client_class or self.DEFAULT_CLIENT_CLASS
100 99
101 def build_from_settings_dict(self, settings): 100 def build_from_settings_dict(self, settings):
102 enc = Encryptor(settings["DECRYPTION_KEY"], 101 enc = Encryptor(settings["DECRYPTION_KEY"], settings["ENCRYPTION_KEY"])
103 settings["ENCRYPTION_KEY"])
104 102
105 trans = APITransport(enc, 103 trans = APITransport(
106 settings.get("API_HOST", DEFAULT_API_HOST), 104 enc,
107 settings.get("PROXY", None)) 105 settings.get("API_HOST", DEFAULT_API_HOST),
106 settings.get("PROXY", None),
107 )
108 108
109 quality = settings.get("AUDIO_QUALITY", 109 quality = settings.get(
110 self.client_class.MED_AUDIO_QUALITY) 110 "AUDIO_QUALITY", self.client_class.MED_AUDIO_QUALITY
111 )
111 112
112 return self.client_class(trans, settings["PARTNER_USER"], 113 return self.client_class(
113 settings["PARTNER_PASSWORD"], 114 trans,
114 settings["DEVICE"], quality) 115 settings["PARTNER_USER"],
116 settings["PARTNER_PASSWORD"],
117 settings["DEVICE"],
118 quality,
119 )
115 120
116 121
117class SettingsDict(TranslatingDict): 122class SettingsDict(TranslatingDict):
@@ -185,8 +190,9 @@ class FileBasedClientBuilder(APIClientBuilder):
185 client = self.build_from_settings_dict(config) 190 client = self.build_from_settings_dict(config)
186 191
187 if self.authenticate: 192 if self.authenticate:
188 client.login(config["USER"]["USERNAME"], 193 client.login(
189 config["USER"]["PASSWORD"]) 194 config["USER"]["USERNAME"], config["USER"]["PASSWORD"]
195 )
190 196
191 return client 197 return client
192 198
@@ -201,8 +207,9 @@ class PydoraConfigFileBuilder(FileBasedClientBuilder):
201 207
202 @staticmethod 208 @staticmethod
203 def cfg_to_dict(cfg, key, kind=SettingsDict): 209 def cfg_to_dict(cfg, key, kind=SettingsDict):
204 return kind((k.strip().upper(), v.strip()) 210 return kind(
205 for k, v in cfg.items(key, raw=True)) 211 (k.strip().upper(), v.strip()) for k, v in cfg.items(key, raw=True)
212 )
206 213
207 def parse_config(self): 214 def parse_config(self):
208 cfg = ConfigParser() 215 cfg = ConfigParser()
@@ -212,7 +219,8 @@ class PydoraConfigFileBuilder(FileBasedClientBuilder):
212 219
213 settings = PydoraConfigFileBuilder.cfg_to_dict(cfg, "api") 220 settings = PydoraConfigFileBuilder.cfg_to_dict(cfg, "api")
214 settings["user"] = PydoraConfigFileBuilder.cfg_to_dict( 221 settings["user"] = PydoraConfigFileBuilder.cfg_to_dict(
215 cfg, "user", dict) 222 cfg, "user", dict
223 )
216 224
217 return settings 225 return settings
218 226