require 'base64' require 'json' 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(Excon.get(url, headers: 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