def upload_log(self, log, name=None): url = '/api/json/create' url = urlparse.urljoin(BASE_URL, url) headers = {'Content-Type': 'application/json'} data = {'data': log, 'language': 'kodilog', 'expire': EXPIRATION} data = json.dumps(data) if USE_GZIP: s = StringIO.StringIO() g = gzip.GzipFile(fileobj=s, mode='w') g.write(data) g.close() data = s.getvalue() headers['Content-Encoding'] = 'gzip' req = urllib2.Request(url, data=data, headers=headers) try: res = urllib2.urlopen(req) html = res.read() try: js_data = json.loads(html) if 'result' in js_data: result = js_data['result'] if 'id' in result: return urlparse.urljoin(BASE_URL, result['id']) elif 'error' in result: raise UploaderError('tvaddons error: %s' % (result['error'])) else: raise UploaderError('Unexcepted Response: %s' % (result)) else: raise UploaderError('Unexcepted Response: %s' % (js_data)) except ValueError as e: raise UploaderError('Unparseable Resonse from tvaddons: %s' % (html)) except Exception as e: raise UploaderError(e)
def __check_auth(self, pin, auth, auth_flow, redirect_uri): result = auth.get_code(pin) if result.get('success') and result.get('auth_code'): try: access_token, _user_id = auth_flow.finish(result['auth_code'], redirect_uri) kodi.set_setting('dropbox_token', access_token) return access_token except dropbox_api.ErrorResponse as e: raise UploaderError('Authorization Failed (%s): %s' % (e.status, e.reason))
def upload_log(self, log, name=None): data = {'content': log, 'syntax': 'text', 'poster': 'tvaddons.ag'} headers = {'User-Agent': USER_AGENT} req = urllib2.Request(BASE_URL, data=urllib.urlencode(data), headers=headers) try: opener = urllib2.build_opener(NoRedirection) urllib2.install_opener(opener) res = urllib2.urlopen(req) if res.getcode() == 302: paste_url = res.info().getheader('location') if re.match('%s/[A-Za-z0-9]+' % (BASE_URL), paste_url): return paste_url else: raise UploaderError('Unexcepted url from ubuntu: %s' % (paste_url)) else: raise UploaderError('Unexcepted response from ubuntu: %s' % (res.getcode()), log_utils.LOGWARNING) except Exception as e: raise UploaderError(e)
def __authorize(self): auth_flow = dropbox_api.DropboxOAuth2Flow(APP_KEY, APP_SECRET) authorize_url = auth_flow.start() with db_auth.DbAuth(authorize_url) as auth: result = auth.start_session() if result is None: raise UploaderError('Unable to start db auth session') else: pin, redirect_uri = result line1 = i18n('dropbox_visit') % (AUTH_URL) line2 = i18n('dropbox_pin') % (pin) line3 = i18n('directions') with kodi.CountdownDialog(i18n('dropbox_auth'), line1=line1, line2=line2, line3=line3) as cd: token = cd.start(self.__check_auth, [pin, auth, auth_flow, redirect_uri]) if token: return token raise UploaderError('Authorization Time Out')
def send_email(self, email, results): url = '/mail_logs.php' data = {'email': email, 'results': results} headers = {'Content-Type': 'application/json'} url = urlparse.urljoin(BASE_URL, url) req = urllib2.Request(url, data=json.dumps(data), headers=headers) try: res = urllib2.urlopen(req) html = res.read() js_data = json.loads(html) if 'result' in js_data: if js_data['result'] == 'success': return True else: raise UploaderError(js_data.get('msg', 'Unknown Error')) except Exception as e: raise UploaderError(e) return False
def upload_file(self, filepath): self.__log('reading log...') file_content = open(filepath, 'r').read() for pattern, repl in REPLACES: file_content = re.sub(pattern, repl, file_content) self.__log('starting upload "%s"...' % filepath) url = '/api/json/create' url = urlparse.urljoin(BASE_URL, url) headers = {'Content-Type': 'application/json'} data = { 'data': file_content, 'language': 'kodilog', 'expire': EXPIRATION } data = json.dumps(data) req = urllib2.Request(url, data=data, headers=headers) try: res = urllib2.urlopen(req) html = res.read() try: js_data = json.loads(html) if 'result' in js_data: result = js_data['result'] if 'id' in result: return result['id'] elif 'error' in result: raise UploaderError('tvaddons error: %s' % (result['error'])) else: raise UploaderError('Unexcepted Response: %s' % (result)) else: raise UploaderError('Unexcepted Response: %s' % (js_data)) except ValueError as e: raise UploaderError('Unparseable Resonse from tvaddons: %s' % (html)) except Exception as e: raise UploaderError(e)
def upload_log(self, log, name=None): url = '/api/api_post.php' data = { 'api_dev_key': API_KEY, 'api_option': 'paste', 'api_paste_code': log, 'api_paste_name': 'Kodi Log', 'api_paste_private': 1, 'api_paste_expire_date': EXPIRATION } url = urlparse.urljoin(BASE_URL, url) req = urllib2.Request(url, data=urllib.urlencode(data)) try: res = urllib2.urlopen(req) html = res.read() if html.startswith('http'): return html elif html.upper().startswith('BAD API REQUEST'): raise UploaderError(html[len('Bad API request, '):]) else: raise UploaderError(html) except Exception as e: raise UploaderError(e)
def upload_log(self, log, name=None): if name is None: name = 'kodi.log' token = kodi.get_setting('dropbox_token') if not token: token = self.__authorize() try: if token: full_path = '/%s' % (name) db = dropbox_api.DropboxClient(token) db.upload_file(full_path, log, overwrite=True) res = db.share(full_path) return res.get('url') except dropbox_api.ErrorResponse as e: raise UploaderError('Upload Failed: (%s): %s' % (e.status, e.reason))