# -*- 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('