HWPower / src /hwp5 /plat /_uno /ucb.py
seawolf2357's picture
Add src
d94b56e verified
# -*- coding: utf-8 -*-
#
# pyhwp : hwp file format parser in python
# Copyright (C) 2010-2023 mete0r <https://github.com/mete0r>
#
# This program 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.
#
# This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
#
def open_url(context, url):
''' open InputStream from a URL.
:param url: a URL to open an InputStream.
:returns: an instance of InputStream
'''
# see http://wiki.openoffice.org
# /wiki/Documentation/DevGuide/UCB/Using_the_UCB_API
from hwp5.plat._uno.services import css
css = css.bind(context)
ucb = css.ucb.UniversalContentBroker('Local', 'Office')
content_id = ucb.createContentIdentifier(url)
content = ucb.queryContent(content_id)
import unohelper
from com.sun.star.io import XActiveDataSink
class DataSink(unohelper.Base, XActiveDataSink):
def setInputStream(self, stream):
self.stream = stream
def getInputStream(self):
return self.stream
datasink = DataSink()
from com.sun.star.ucb import Command, OpenCommandArgument2
openargs = OpenCommandArgument2()
openargs.Mode = 2 # OpenMode.DOCUMENT
openargs.Priority = 32768
openargs.Sink = datasink
command = Command()
command.Name = 'open'
command.Handle = -1
command.Argument = openargs
content.execute(command, 0, None)
return datasink.stream