You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.0 KiB
41 lines
1.0 KiB
6 years ago
|
from plex.core.idict import idict
|
||
|
from plex.interfaces.core.base import Interface
|
||
|
|
||
|
|
||
|
class PluginPreferencesInterface(Interface):
|
||
|
path = ':/plugins/*/prefs'
|
||
|
|
||
|
def get(self, plugin_id, id=None):
|
||
|
response = self.http.get('/:/plugins/%s/prefs' % plugin_id)
|
||
|
|
||
|
container = self.parse(response, idict({
|
||
|
'MediaContainer': ('MediaContainer', idict({
|
||
|
'Setting': 'Setting'
|
||
|
}))
|
||
|
}))
|
||
|
|
||
|
if container is None or id is None:
|
||
|
return container
|
||
|
|
||
|
for setting in container:
|
||
|
if setting.id == id:
|
||
|
return setting
|
||
|
|
||
|
return None
|
||
|
|
||
|
def set(self, plugin_id, id, value):
|
||
|
response = self.http.get('/:/plugins/%s/prefs/set' % plugin_id, query={
|
||
|
id: self.to_setting_value(value, type(value))
|
||
|
})
|
||
|
|
||
|
return response.status_code == 200
|
||
|
|
||
|
def to_setting_value(self, value, value_type=None):
|
||
|
if value is None:
|
||
|
return None
|
||
|
|
||
|
if value_type is bool:
|
||
|
return str(value).lower()
|
||
|
|
||
|
return str(value)
|