discourse/script/import_scripts/socialcast/socialcast_api.rb

41 lines
914 B
Ruby

# 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