Namby Pamby Magicians

    twister-lib-js

    0.4.1 • Public • Published

    twister-lib-js

    A Twister Library in JavaScript

    Scope of this Project

    twister-lib-js handles all querying and manipulation of the Twister P2P network, given the availability of a (remote or local) twisterd JSON-RPC endpoint. This includes managing the network resource, by bundleing queries and by caching. This also includes the ability sign posts and to encrypt and decrypt direct messages locally.

    twister-lib-js should be compilable for as many platforms as possible including:

    • All popular Browsers (for web apps as well as firefoxOS)
    • node-js (for server-side functionality)
    • The iOS Javascript VM (for building native iOS apps)
    • The Android Javascript VM (for building native android apps)

    A techdemo of twister-lib-js combined with react-js can be found at http://github.com/Tschaul/twister-react

    Implementation Status

    Resource query manipulate (client side wallet) manipulate (server side wallet)
    Posts
    Replies
    Retwists
    Profile
    Avatar
    Followings
    Mentions -
    Hashtags -
    Promoted Posts - -
    Direct Messages - -
    Group Messages - - -

    Todo

    Next Version

    • Implement methods to create or import accounts.
    • Implement group chats

    At Some Point

    • Implement bind-methods (e.g. bindProfile(...) ) that repeatedly queries the resource and invokes a callback function for every update.
    • When posting a new resource revision (status, profile, avatar...) add the updated resource to the cache but flag it as "dirty" and rollback if the resource is not confirmed after a certain time.
    • Implement get...Promise(...) functions (e.g. getProfilePromise(...) ) that work with https://github.com/yortus/asyncawait to avoid callback hells
    • Implement code specific error functions (e.g. "errorfunc_32052" catches errors with code 32052)

    Usage

    In a Node Project

    From inside the project folder run

    npm install twister-lib-js
    

    Then inside your code import the library using

    Twister = require('twister-lib-js');
    

    In a Webapp

    Download the twister-lib.js file into you project folder. Link to it inside html using

    <script src="path/to/twister-lib.js"></script>
    

    Code Examples

    Display the content of the latest post of user tschaul:

    Twister.getUser("tschaul").doStatus(function(post){
      console.log(post.getContent());  
    });
    

    For more code examples in tutorial form, see /examples

    Error Codes

    twister-lib-js passes through all JSON-RPC errors. Internal errors are thrown in the same format with codes ranging between 32050 and 32099:

    • 32050: DHT resource signature could not be verified.
    • 32051: Unknown query setting was requested.
    • 32052: DHT resource is empty. (Only thrown for status, post, profile and avatar resources.)
    • 32060: Post signature could not be verified.
    • 32061: Public key not available on server.
    • 32062: Signature of retwisted post could not be verified.
    • 32063: Post could not be decrypted.
    • 32064: Private key is in conflict with public key.
    • 32080: Unsupported wallet type.
    • 32081: No wallet users found on the server.
    • 32082: Torrent inactive. Activate torrent first!
    • 32090: Host not reachable.
    • 32091: Request was not processed successfully (http error: HTTP_ERROR_CODE).
    • 32092: An error occurred while parsing the JSON response body.

    Change Log

    0.3.0

    • New query setting queryId. Can be used to mark multiple queries with a common id. With the Twister.onQueryComplete(...) function a handler can be registered that is triggered when the last query is completed. see examples/021_deep_fetching.js

    0.2.1

    • Better handling of http/connection errors. Error codes: 32090-32092

    0.2.0

    • Resources can now remove themselves from the cache using their own trim() function.
    • New function Twister.trimCache(timestamp) deletes every resource from the cache that is older than the timestamp, or has not been accessed since the timestamp. Needed to manage localStorage size in browsers.
    • Resources with invalid signatures now get removed from the cache.

    Install

    npm i twister-lib-js

    DownloadsWeekly Downloads

    17

    Version

    0.4.1

    License

    MIT

    Last publish

    Collaborators

    • tschaul