1. Yuri Bochkarev
  2. imagepaste


imagepaste / notes / features.txt

Development notes.

[_] http form auth
    [+] send additional post in radikal
    [+] send post in rghost
    [+] add support for UrlEncoded format

    [_] check if auth is available for the engine
        [+] Configuration.getEngineAuth
        [-] pcLoginSupported in PasteContext
        [-] pcCredentialsAvailable in PasteContext

            tells the engine if available credentials can be passed to the engine
            supportsLogin=True credentialsAvailable=True = authenticated paste
            supportsLogin=True credentialsAvailable=False = anonymous post
            supportsLogin=False credentialsAvailable=False = anonymous post
            supportsLogin=False credentialsAvailable=True = report error: login is not supported for this engine
    [_] handle invalid login information in engines
    [_] simplify login handlers

[_] architecture
    [_] learn all engines to extract both direct link and link to page
    [-] consider PasteHandler monad stack returning Maybe link as
        a computation result instead of modifying PasteContext
    [+] engine may return error (e.g. when trying to paste zip file to fastpic)
    [+] implement "try next engine on error" behavior
    [+] use System.Exit.exitWith to exit the program with error code
    [_] handle network timeouts
    [_] add command-line options
        [_] -c config
    [+] logging
        [+] add Log module with msgDebug, msgInfo functions
    [_] learn oauth authorization principles
    [_] add oauth support

[_] engines
    [+] add uploadscreenshot.com (apikey=1c7688a8199888584473517828)
    [+] add imm.io
    [_] add imageshack.us
    [_] add yfrog.com
    [-] add tinypic.com (seems to be old (2009), full of flash and with captcha)
    [+] add imgur.com (auth, apikey=420de151712e1f55f03221c4939c2080)
    [+] add scrin.org
    [-] add minus.com (http://minus.com/pages/api, no anonymous API access)
    [_] add yandex.fotki
    [_] add twitpic.com (http://dev.twitpic.com, apikey=a1a5b6fe0ab2f61cbf88c7cb4fc4728b)
    [_] add thumbsnap.com (http://thumbsnap.com/api/docs)
    [_] add ipic.su

    [+] fastpic
    [+] flashtux
    [+] imagebin
    [+] ipicture
    [+] ompldr
    [+] radikal (auth)
    [+] rghost (auth)

[+] configuration
    [_] read HTTP proxy info from config
        environment variable HTTP_PROXY has priority over the config
    [+] config file are read in the order as follows:
        1. $USERPROFILE/imp/imp.conf (windows compatibility)
        2. $XDG_CONFIG_HOME/imp/imp.conf
        3. $HOME/imp/imp.conf
        4. $XDG_CONFIG_DIRS/imp/imp.conf
    [+] read from JSON file
    [_] add option to choose which link to show: direct or link to page

[+] engine priority
    [+] add default internal engine order
    [+] if specified, engine priority changes default engine order
        engine_priority property

[+] engine file type mapping
    [+] if specified, the mapping changes engine order depending on the file extension

[+] small fixes
    [+] convert filename to short name if necessary
        file name is always converted to short
    [+] fix engine name detection: it should filter all engines
        which *start* with given name. it filters all which
        *contain* the name now

[+] testing
    [+] add automated engine tests (use HUnit to test impure code)
        $ make check

[_] utility
    [_] write man page
    [_] add yaourt package
    [+] add cabal package
    [_] insert changeset to Version.hs automatically on project build
        consider: $ hg id -i

[+] versioning policy: http://www.haskell.org/haskellwiki/Package_versioning_policy
    the project uses four digit versioing policy: A.B.C.D
    A - branch number, increase upon huge architectural changes or
        next stable release with lots of features
    B - major number, increase upon API change (see PvP)
    C - minor number, increase upon class, type, binding, module addition (see PvP)
    D - bugfix number. increase upon fixing a bug. each bugfix may contain
        fixes for several bugs, not just one