require 'base64'
require 'json'
require 'rest-client'

class SocialcastApi

  attr_accessor :domain, :username, :password

  def initialize domain, username, password
    @domain = domain
    @username = username
    @password = password
  end

  def base_url
    "https://#{@domain}.socialcast.com/api"
  end

  def headers
    encoded = Base64.encode64 "#{@username}:#{@password}"
    {:Authorization => "Basic #{encoded.strip!}", :Accept => "application/json"}
  end

  def request url
    JSON.parse(RestClient.get url, headers)
  end

  def list_users(opts={})
    page = opts[:page] ? opts[:page] : 1
    response = request "#{base_url}/users?page=#{page}"
    response['users'].sort {|u| u['id']}
  end

  def list_messages(opts={})
    page = opts[:page] ? opts[:page] : 1
    response = request "#{base_url}/messages?page=#{page}"
    response['messages'].sort {|m| m['id']}
  end
end
