sign in
Home | Updates | Pages | Users | Admin | Help

Ruby CampusWire Client

require 'rubygems'
require 'httparty'

# Sample usage
# campuswire = CampuswireClient.new 'username', 'password', 'organization name'
# campuswire.users
# campuswire.users(1)
# ...

class CampuswireClient
  include HTTParty
  headers 'Content-Type' => "text/xml; charset=utf-8" 

  def org_path
    "organizations/#{@organization}" 
  end

  def initialize(u, p, organization)
    self.class.base_uri "https://thecampuswire.com/" 
    @options = {:basic_auth => {:username => u, :password => p}}
    @organization = organization
  end

  def messages(id = nil)
    if id
      self.class.get("/messages/#{id}.xml", @options)
    else
      self.class.get("/#{org_path}/messages.xml", @options)
    end
  end

  # Users
  def users(id = nil)
    if id
      self.class.get("/users/#{id}.xml", @options)
    else
      self.class.get("/#{org_path}/users.xml", @options)
    end
  end

  def create_user(params = {})
    self.class.post("/#{org_path}/users.xml", @options.merge(:body => params.to_xml(:root => "user")))
  end

  def destroy_user(id = nil)
    self.class.delete("/users/#{id}.xml", @options)
  end

  # Groups
  def groups(id = nil)
    if id
      self.class.get("/groups/#{id}.xml", @options)
    else
      self.class.get("/#{org_path}/groups.xml", @options)
    end
  end

  def destroy_group(id = nil)
    self.class.delete("/groups/#{id}.xml", @options)
  end

  def create_group(name = nil)
    self.class.post("/#{org_path}/groups.xml", @options.merge(:body => {:name => name}.to_xml(:root => "group")))  
  end

  # Memberships
  def destroy_membership(membership_id)
    self.class.delete("/memberships/#{membership_id}.xml", @options)
  end

  def create_membership(group_id, user_id)
    self.class.post("/users/#{user_id}/memberships.xml", @options.merge(:body => {:group_id => group_id, :user_id => user_id}.to_xml(:root => "membership")))
  end

end

Powered by JunebugWiki v0.0.37 Page last edited by wiki on May 28, 2009 03:40 PM
Version 1 newer»currentversions