# frozen_string_literal: true 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