You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: socialcast_api.rb
    path of file: ./repos/discourse/script/import_scripts/socialcast
    
    the code of the file until where you have to start completion: # 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
    
  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