Rolodex for Open Peer
JavaScript Other
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
example
lib
openpeer
scripts
.gitignore
.npmignore
LICENSE
README.md
package.json

README.md

Status: DEV

Rolodex for Open Peer

Having a distributed and secure communication system like Open Peer is quite useless if you have nobody to talk with.

This rolodex SDK supports the following:

  • Integration with passport for authentication with 120+ services.
  • Contact federation for any service with a contacts API (that we have a plugin for).
  • Q promise based AMD-compatible client API.
  • connect middleware to service client requests.
  • Contact information normalized to hCard properties.
  • Communication with services scheduled via kickq ( currently disabled due to kickq bug )
  • Contacts and service status cached in redis.
  • Easy horizontal round-robin scaling via shared-noting architecture (requires central redis).

Example

cd example
make install
# Configure services in `rolodex.config.json` (see 'Configuration' below)
make run

Usage

Install:

npm install openpeer-rolodex
# Provision a Redis database

When you first run your application, required dependencies for any configured service will be automatically installed. You can also install these manually:

cd ./lib/plugin/<service>
npm install

Integrate:

  • Server-side - See ./example/server.js.
  • Client-side - See ./example/ui/index.html and ./example/ui/app.js.

Configuration

For each service you want to integrate with you need to:

  1. Create an application on the service.
  2. Configure the service in rolodex.config.json.

The rolodex.config.json file must be structured as follows:

{
    "allow": {
        # Optional for cross-domain access.
        "hosts": [
            "localhost"
        ]
    },
    "db": {
        "redis": {
            "host": "<redis host>",
            "port": <redis port>,
            # The following are defaults and may be omitted.
            "password": "",
            "prefix": "rolodex:"
        }
    },
    "routes": {
        # The following are defaults and may be omitted.
        client: "/.openpeer-rolodex/client",
        auth: "/.openpeer-rolodex/auth",
        authCallback: "/.openpeer-rolodex/callback",
        logout: "/.openpeer-rolodex/logout",
        refetch: "/.openpeer-rolodex/refetch",
        services: "/.openpeer-rolodex/services",
        contacts: "/.openpeer-rolodex/contacts"
    },
    "services": [
        // One or more of the service config objects below.
    ]
}

GitHub

Create application here https://github.com/settings/applications with callback URL http://localhost:8080/.openpeer-rolodex/callback/github.

{
    "name": "github",
    "passport": {
        "clientID": "<Client ID>",
        "clientSecret": "<Client Secret>"
    }
}

Twitter

Create application here https://dev.twitter.com/apps with callback URL http://127.0.0.1:8080/.openpeer-rolodex/callback/twitter.

{
    "name": "twitter",
    "passport": {
        "consumerKey": "<Consumer key>",
        "consumerSecret": "<Consumer secret>"
    }
}

LinkedIn

Create application here https://www.linkedin.com/secure/developer

{
    "name": "linkedin",
    "passport": {
        "apiKey": "<API Key>",
        "secretKey": "<Secret Key>"
    }
}

Facebook

Create application here https://developers.facebook.com/apps

{
    "name": "facebook",
    "passport": {
        "appID": "<App ID>",
        "appSecret": "<App Secret>"
    }
}

License

BSD-2-Clause