A proof of concept module for a dream package of mailman client written in javascript
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
readups
test
.gitignore
README.md
cli.js
package.json
utils.js

README.md

Description

This is a proof of concept thing for the idea of having mailman client written in javascript for GSOC'15.

Quick start

    $ git clone https://github.com/black-perl/mailman-cli.git
    $ cd mailman-cli
    $ npm install
    $ node
    > var MC = require('./cli.js')
    // make the client object
    > var cli = new MC({'endpoint':'http://localhost:8001/3.0/'})
    // getting the lists 
    > cli.lists().auth().get() 

Testing

    $ npm test

Find me@NPM

$ npm install mailman-cli

Main Dependencies

  • Bluebird - Promise library for js.
  • Superagent - Super easy request making js library.

Syntax styling

It offers chaining, promises and of course the callbacks style syntax.

Methods supported

.lists() - Makes request to the endpoint /lists/
.auth() - Does auth with the REST Server
.listId() - Makes request to the endpoint /lists/<list-id>
.owner() - Lists owners of the list
.members() - Lists members of the list
.moderators() - List moderators of the list

####Chaining calls

  • Get moderators for a particular list
    cli.lists().auth().listId(<list-id>).moderators()

####Listing lists

  • Callbacks

      > cli.lists().auth().get(function(err,data){
           if (err) {
              // handle error
           }
           else{
              console.log(data);
           }
          });
    
  • Promises

      > cli.lists().auth().get().then(function(data){
          console.log(data);
          });
    

####Listing owners of a list

  • Callbacks

      > cli.lists().auth().listId(<list-id>).owner().get(function(err,data){
           if (err) {
              // handle error
           }
           else{
              console.log(data);
           }
          });
    
  • Promises

      > cli.lists().auth().listId(<list-id>).owner().get().then(function(data){
          console.log(data);
          });
    

Core Classes

MC - The base constructor for the Mailman API service.
MCRequest - MCRequest is the base API request object constructor.
CollectionRequest - CollectionRequest extends MCRequest with properties & methods for filtering collections. NOTE : MCRequest is RequestA and CollectionRequest is RequestB as per the proposal.
ListsRequest - ListsRequest extends CollectionRequest to handle the /lists API endpoint.

PS

If you try to read the code, you may find some unnecessary things as this is aimed towards something big 😃