/usr/share/pyshared/dmedia/api.py is in python-dmedia 0.6.0~repack-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 | # Authors:
# Jason Gerard DeRose <jderose@novacut.com>
#
# dmedia: distributed media library
# Copyright (C) 2011 Jason Gerard DeRose <jderose@novacut.com>
#
# This file is part of `dmedia`.
#
# `dmedia` is free software: you can redistribute it and/or modify it under the
# terms of the GNU Affero General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option) any
# later version.
#
# `dmedia` is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
# details.
#
# You should have received a copy of the GNU Affero General Public License along
# with `dmedia`. If not, see <http://www.gnu.org/licenses/>.
"""
Python convenience API for talking to dmedia components over DBus.
"""
import json
import dbus
from dmedia.constants import BUS
# On my system, this takes around 0.15 seconds, almost all because of
# >>> from desktopcouch.records.http import OAuthSession
#
#from dmedia.abstractcouch import load_env
def load_env(env_s):
env = json.loads(env_s)
# FIXME: hack to work-around for Python oauth not working with unicode,
# which is what we get when the env is retrieved over D-Bus as JSON
if 'oauth' in env:
env['oauth'] = dict(
(k.encode('ascii'), v.encode('ascii'))
for (k, v) in env['oauth'].iteritems()
)
return env
class DMedia(object):
"""
Talk to "org.freedesktop.DMedia".
"""
def __init__(self, bus=BUS):
self.bus = bus
self.conn = dbus.SessionBus()
self._proxy = None
@property
def proxy(self):
if self._proxy is None:
self._proxy = self.conn.get_object(self.bus, '/')
return self._proxy
def version(self):
return self.proxy.Version()
def kill(self):
self.proxy.Kill()
self._proxy = None
def get_env(self, env_s=None):
if not env_s:
env_s = self.proxy.GetEnv()
return load_env(env_s)
def get_auth_url(self):
return self.proxy.GetAuthURL()
def has_app(self):
return self.proxy.HasApp()
class DMediaImporter(object):
"""
Talk to "org.freedesktop.DMediaImporter".
"""
|