diff options
Diffstat (limited to 'pandora/clientbuilder.py')
-rw-r--r-- | pandora/clientbuilder.py | 42 |
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 | ||
77 | class APIClientBuilder: | 76 | class 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 | ||
117 | class SettingsDict(TranslatingDict): | 122 | class 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 | ||