# -*- coding: utf-8 -*-
#
import re
from lxml import etree
from collections import namedtuple
from obsapi import helpers
from obsapi.sourceapi import ObsSourceApi
from obsapi.buildapi import ObsBuildApi
from obsapi.repoflags import RepoFlags
from obsapi.fileinfo import FileInfo
from .null import Null
LSItem = namedtuple('LSItem', 'name md5 size mtime')
Directory = namedtuple('Directory', 'name rev vrev srcmd5')
SourceInfo = namedtuple('SourceInfo', 'package rev vrev srcmd5 verifymd5')
Binary = namedtuple('Binary', 'filename size mtime')
User = namedtuple('User', 'userid role')
Group = namedtuple('Group', 'groupid role')
CallStatus = namedtuple('CallStatus', 'code, summary details')
REGEX_NS = 'http://exslt.org/regular-expressions'
DEFAULTAPIURL = 'https://api.opensuse.org'
emptyxml = ''
EMPTYTREE = etree.fromstring(emptyxml)
EMPTY = EMPTYTREE.xpath('.')[0]
xml2etree = helpers.xml2etree
as_string = helpers.as_string
class ObsApi(object):
default_xml = ''
def __init__(self, apiurl=None):
self.apiurl = apiurl or DEFAULTAPIURL
self.lastapi = Null
self._response = Null
# init the source api
self.source = ObsSourceApi(self.apiurl)
self.source.retries = 0
self.source.verify_ssl = True
self.source.set_callback(self._api_callback)
# init the build api
self.build = ObsBuildApi(self.apiurl)
self.build.retries = 0
self.build.verify_ssl = True
self.build.set_callback(self._api_callback)
def _api_callback(self, api_instance):
self.lastapi = api_instance
print(self.response.text)
if not self.success:
self._raise_error()
def _raise_error(self):
msg = self.status_message
raise Exception(msg)
@property
def call_status(self):
if not self.response.text.strip().startswith('