ProtoLink - Access your ProtoNet

ProtoLink is a library for interfacing with ProtoNet, the next-gen internet infrastructure. Truly social and people-powered.

Version: 0.2.1

Tests are in test/all_test.rb.

Dependencies

See Gemfile

Usage

# CHANNELS

# simple message
require 'rubygems'
require 'protolink'

protonet = Protolink::Protonet.open('HTTP://SUBDOMAIN.DOMAIN.DE', 'USERLOGIN', 'PASSWORD')
channel  = protonet.channels.first
channel.speak 'Hello world!'


# post message in specific channel
require 'rubygems'
require 'protolink'

protonet = Protolink::Protonet.open('HTTP://SUBDOMAIN.DOMAIN.DE', 'USERLOGIN', 'PASSWORD')
channel  = protonet.find_channel_by_name("test")
channel.speak 'Hello world!'


# create a channel
require 'rubygems'
require 'protolink'

protonet = Protolink::Protonet.open('HTTP://SUBDOMAIN.DOMAIN.DE', 'USERLOGIN', 'PASSWORD')
channel  = protonet.create_channel(:name => "test", :description => "This is the description... woah", :skip_autosubscribe => true)
channel.speak 'Hello world!'


# find channel by id
require 'rubygems'
require 'protolink'

protonet = Protolink::Protonet.open('HTTP://SUBDOMAIN.DOMAIN.DE', 'USERLOGIN', 'PASSWORD')
channel  = protonet.find_channel(117)
channel.speak 'Hello world!'


# find or create a channel
require 'rubygems'
require 'protolink'

protonet = Protolink::Protonet.open('HTTP://SUBDOMAIN.DOMAIN.DE', 'USERLOGIN', 'PASSWORD')
channel  = protonet.find_or_create_channel_by_name("test", :description => "This is the description... woah")
channel.speak 'Hello world!'


# USERS

# find user by login
require 'rubygems'
require 'protolink'

protonet = Protolink::Protonet.open('HTTP://SUBDOMAIN.DOMAIN.DE', 'USERLOGIN', 'PASSWORD')
user     = protonet.find_user_by_login("bjoern.dorra")

# find user by id
require 'rubygems'
require 'protolink'

protonet = Protolink::Protonet.open('HTTP://SUBDOMAIN.DOMAIN.DE', 'USERLOGIN', 'PASSWORD')
user     = protonet.find_user(117)

# create a user
require 'rubygems'
require 'protolink'

protonet = Protolink::Protonet.open('HTTP://SUBDOMAIN.DOMAIN.DE', 'USERLOGIN', 'PASSWORD')
user     = protonet.create_user(:login => "testuser", :password => "userpassword", :name => "Test-User", :email => "[email protected]")


# find or create a user
require 'rubygems'
require 'protolink'

protonet = Protolink::Protonet.open('HTTP://SUBDOMAIN.DOMAIN.DE', 'USERLOGIN', 'PASSWORD')
user     = protonet.find_or_create_user_by_login("testuser", :password => "mymassword", :name => "Test-User", :email => "[email protected]")


# get users auth_token for auto-login
require 'rubygems'
require 'protolink'

protonet = Protolink::Protonet.open('HTTP://SUBDOMAIN.DOMAIN.DE', 'USERLOGIN', 'PASSWORD')
user     = protonet.find_user_by_name("bjoern.dorra")
user.auth_token
  => "A19zNgCzgv4RGDGPc2mL" 


# LISTENS

# create a listen
require 'rubygems'
require 'protolink'

protonet   = Protolink::Protonet.open('HTTP://SUBDOMAIN.DOMAIN.DE', 'USERLOGIN', 'PASSWORD')
user       = protonet.find_user_by_login("bjoern.dorra")
channel    = protonet.find_channel_by_name("test")
protonet.create_listen(user.id, channel.id)

# destroy a listen
require 'rubygems'
require 'protolink'

protonet   = Protolink::Protonet.open('HTTP://SUBDOMAIN.DOMAIN.DE', 'USERLOGIN', 'PASSWORD')
user       = protonet.find_user_by_login("bjoern.dorra")
channel    = protonet.find_channel_by_name("test")
protonet.destroy_listen(user.id, channel.id)


# CREATE AND SUBSCRIBE

require 'rubygems'
require 'protolink'

protonet   = Protolink::Protonet.open('localhost:3000', 'bjoern.dorra', 'geheim')

user       = protonet.find_or_create_user_by_login("johndoe", "password", "JohnDoe", "[email protected]")
auth_token = user.auth_token
channel    = protonet.find_or_create_channel_by_name("test", "This is a test channel!")
protonet.create_listen(user.id, channel.id)
"\nhttp://localhost:3000/?auth_token=#{auth_token}"

Installation

gem install protolink

IRB

$LOAD_PATH.unshift "#{`pwd`.strip}/lib" # project directory
require 'rubygems'
require 'protolink'
require 'ruby-debug'
Debugger.start
# change this if you need to connect to another server
PTN_SERVER = "http://localhost:3000"
PTN_USER   = "admin"
PTN_PASS   = "admin"
protonet = Protolink::Protonet.open(PTN_SERVER, PTN_USER, PTN_PASS)

How to contribute

If you find what looks like a bug:

  1. Check the GitHub issue tracker to see if anyone else has had the same issue. http://github.com/protonet/protolink/issues/
  2. If you don't see anything, create an issue with information on how to reproduce it.

If you want to contribute an enhancement or a fix:

  1. Fork the project on github. http://github.com/protonet/protolink
  2. Make your changes with tests.
  3. Commit the changes without making changes to the Rakefile, VERSION, or any other files that aren't related to your enhancement or fix
  4. Send a pull request.