Exemple #1
0
 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))
Exemple #3
0
 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')
Exemple #5
0
 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
Exemple #6
0
    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)
Exemple #7
0
 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))