Пример #1
0
        def wrapper(*args, **kwargs):
            try:
                return func(*args, **kwargs)
            except Exception, e:
                logging.error("Error: %s : %s", func.__name__, str(e))

                if not hasattr(e, 'errorCode'):
                    out.failureMessage("Sorry, operation has failed!!!.")
                    tools.exitErr()

                errorCode = int(e.errorCode)

                # auth-token error, re-auth
                if errorCode == 9:
                    storage = Storage()
                    storage.removeUser()
                    GeekNote()
                    return func(*args, **kwargs)

                elif errorCode == 3:
                    out.failureMessage("Sorry, you do not have permissions "
                                       "to do this operation.")

                # Rate limited
                # Patched because otherwise if you get rate limited you still keep
                # hammering the server on scripts
                elif errorCode == 19:
                    print("\nRate Limit Hit: Please wait %s seconds before continuing" %
                          str(e.rateLimitDuration))
                    tools.exitErr()

                else:
                    return False

                tools.exitErr()
Пример #2
0
        def make_resource(filename):
            try:
                mtype = mimetypes.guess_type(filename)[0]
                    
                if mtype.split('/')[0] == "text":
                    rmode = "r"
                else:
                    rmode = "rb"

                with open(filename, rmode) as f:
                    """ file exists """
                    resource = Types.Resource()
                    resource.data = Types.Data()

                    data = f.read()
                    md5 = hashlib.md5()
                    md5.update(data)
                    
                    resource.data.bodyHash = md5.hexdigest() 
                    resource.data.body = data
                    resource.data.size = len(data) 
                    resource.mime = mtype
                    resource.attributes = Types.ResourceAttributes()
                    resource.attributes.fileName = os.path.basename(filename)
                    return resource
            except IOError:
                msg = "The file '%s' does not exist." % filename
                out.failureMessage(msg)
                raise IOError(msg)
Пример #3
0
        def make_resource(filename):
            try:
                mtype = mimetypes.guess_type(filename)[0]

                if mtype.split('/')[0] == "text":
                    rmode = "r"
                else:
                    rmode = "rb"

                with open(filename, rmode) as f:
                    """ file exists """
                    resource = Types.Resource()
                    resource.data = Types.Data()

                    data = f.read()
                    md5 = hashlib.md5()
                    md5.update(data)

                    resource.data.bodyHash = md5.hexdigest()
                    resource.data.body = data
                    resource.data.size = len(data)
                    resource.mime = mtype
                    resource.attributes = Types.ResourceAttributes()
                    resource.attributes.fileName = os.path.basename(filename)
                    return resource
            except IOError:
                msg = "The file '%s' does not exist." % filename
                out.failureMessage(msg)
                raise IOError(msg)
Пример #4
0
 def test_failure_message_success(self):
     sav = sys.stderr
     buf = StringIO()
     sys.stderr = buf
     failureMessage('fail')
     sys.stderr = sav
     buf.seek(0)
     self.assertEquals(buf.read(), 'fail\n')
Пример #5
0
 def test_failure_message_success(self):
     sav = sys.stderr
     buf = StringIO()
     sys.stderr = buf
     failureMessage('fail')
     sys.stderr = sav
     buf.seek(0)
     self.assertEquals(buf.read(), 'fail\n')
Пример #6
0
def createNote(title,content,tags,notebook,geeknote=None,\
        skipnotebook=False):

    #-------------------Trunc texts-------------------
    notebook=notebook.strip()
    notebook=truncStr(notebook,MAX_NOTEBOOK_TITLE_LEN)
    title=title.strip()
    title=truncStr(title,MAX_NOTE_TITLE_LEN)

    #-------Make sure title doesnt start with #-------
    tp=textparse.TextParser('markdown')
    _h_re=re.compile(tp._h_re_base %'1,', re.X | re.M)
    m=_h_re.match(title)
    if m:
        title=m.group(6)
    m=_h_re.match(notebook)
    if m:
        notebook=m.group(6)

    if tags is not None and len(tags.split(','))>=MAX_NOTE_TAGS:
        tags=u','.join(tags.split(',')[:MAX_NOTE_TAGS])
    
    #---------------------Connect---------------------
    if geeknote is None:
        geeknote=GeekNoteConnector()
        geeknote.connectToEvertone()

    #-----------------Create notebook-----------------
    if not skipnotebook:
        result=createNoteBook(notebook,geeknote)

    if skipnotebook or result==0:

        #----------------------Write----------------------
        inputdata=geeknote._parseInput(title,content,tags,notebook,None)
        out.preloader.setMessage('Creating note...')
        result=bool(geeknote.getEvernote().createNote(**inputdata))
        if result:
            out.successMessage("Note has been successfully saved.")
        else:
            out.failureMessage("Error while saving the note.")
Пример #7
0
def createNote(title,content,tags,notebook,geeknote=None,\
        skipnotebook=False):

    #-------------------Trunc texts-------------------
    notebook = notebook.strip()
    notebook = truncStr(notebook, MAX_NOTEBOOK_TITLE_LEN)
    title = title.strip()
    title = truncStr(title, MAX_NOTE_TITLE_LEN)

    #-------Make sure title doesnt start with #-------
    tp = textparse.TextParser('markdown')
    _h_re = re.compile(tp._h_re_base % '1,', re.X | re.M)
    m = _h_re.match(title)
    if m:
        title = m.group(6)
    m = _h_re.match(notebook)
    if m:
        notebook = m.group(6)

    if tags is not None and len(tags.split(',')) >= MAX_NOTE_TAGS:
        tags = u','.join(tags.split(',')[:MAX_NOTE_TAGS])

    #---------------------Connect---------------------
    if geeknote is None:
        geeknote = GeekNoteConnector()
        geeknote.connectToEvertone()

    #-----------------Create notebook-----------------
    if not skipnotebook:
        result = createNoteBook(notebook, geeknote)

    if skipnotebook or result == 0:

        #----------------------Write----------------------
        inputdata = geeknote._parseInput(title, content, tags, notebook, None)
        out.preloader.setMessage('Creating note...')
        result = bool(geeknote.getEvernote().createNote(**inputdata))
        if result:
            out.successMessage("Note has been successfully saved.")
        else:
            out.failureMessage("Error while saving the note.")
Пример #8
0
def createNoteBook(title,geeknote=None,verbose=True):

    #-------------------Trunc title-------------------
    title=title.strip()
    title=truncStr(title,MAX_NOTEBOOK_TITLE_LEN)

    #-------Make sure title doesnt start with #-------
    tp=textparse.TextParser('markdown')
    _h_re=re.compile(tp._h_re_base %'1,', re.X | re.M)
    m=_h_re.match(title)
    if m:
        title=m.group(6)

    #---------------------Connect---------------------
    if geeknote is None:
        geeknote=GeekNoteConnector()
        geeknote.connectToEvertone()

    #-----------------Check if exists-----------------
    notebooks=geeknote.getEvernote().findNotebooks()
    out.preloader.stop()
    if not isinstance(title,unicode):
        title=unicode(title,'utf8')
    notebooks=[unicode(ii.name,'utf8') for ii in notebooks]

    if title in notebooks:
        out.successMessage('Notebook already exists.')
        return 0
    else:
        out.preloader.setMessage("Creating notebook...")
        result = geeknote.getEvernote().createNotebook(name=title)
        if result:
            out.successMessage("Notebook has been successfully created.")
            return 0
        else:
            out.failureMessage("Error while the process "
                               "of creating the notebook.")
            return tools.exitErr()
Пример #9
0
def createNoteBook(title, geeknote=None, verbose=True):

    #-------------------Trunc title-------------------
    title = title.strip()
    title = truncStr(title, MAX_NOTEBOOK_TITLE_LEN)

    #-------Make sure title doesnt start with #-------
    tp = textparse.TextParser('markdown')
    _h_re = re.compile(tp._h_re_base % '1,', re.X | re.M)
    m = _h_re.match(title)
    if m:
        title = m.group(6)

    #---------------------Connect---------------------
    if geeknote is None:
        geeknote = GeekNoteConnector()
        geeknote.connectToEvertone()

    #-----------------Check if exists-----------------
    notebooks = geeknote.getEvernote().findNotebooks()
    out.preloader.stop()
    if not isinstance(title, unicode):
        title = unicode(title, 'utf8')
    notebooks = [unicode(ii.name, 'utf8') for ii in notebooks]

    if title in notebooks:
        out.successMessage('Notebook already exists.')
        return 0
    else:
        out.preloader.setMessage("Creating notebook...")
        result = geeknote.getEvernote().createNotebook(name=title)
        if result:
            out.successMessage("Notebook has been successfully created.")
            return 0
        else:
            out.failureMessage("Error while the process "
                               "of creating the notebook.")
            return tools.exitErr()
Пример #10
0
        def wrapper(*args, **kwargs):
            try:
                return func(*args, **kwargs)
            except Exception, e:
                logging.error("Error: %s : %s", func.__name__, str(e))

                if not hasattr(e, 'errorCode'):
                    out.failureMessage("Sorry, operation has failed!!!.")
                    tools.exitErr()

                errorCode = int(e.errorCode)

                # auth-token error, re-auth
                if errorCode == 9:
                    storage = Storage()
                    storage.removeUser()
                    GeekNote()
                    return func(*args, **kwargs)

                elif errorCode == 3:
                    out.failureMessage("Sorry, you do not have permissions "
                                       "to do this operation.")

                # Rate limited
                # Patched because otherwise if you get rate limited you still keep
                # hammering the server on scripts
                elif errorCode == 19:
                    print(
                        "\nRate Limit Hit: Please wait %s seconds before continuing"
                        % str(e.rateLimitDuration))
                    tools.exitErr()

                else:
                    return False

                tools.exitErr()
Пример #11
0
 def test_failure_message_success(self):
     failureMessage('fail')
     sys.stderr.seek(0)
     self.assertEquals(sys.stderr.read(), 'fail\n')
Пример #12
0
 def test_failure_message_success(self):
     failureMessage('fail')
     sys.stdout.seek(0)
     self.assertEquals(sys.stdout.read(), 'fail\n')