class Slybroadcast::Client

Constants

API_URI
ENDPOINTS

Attributes

credentials[RW]

Public Class Methods

method_missing(method, *args, &block) click to toggle source
# File lib/slybroadcast/client.rb, line 43
def method_missing(method, *args, &block)
  instance.send(method, *args, &block)
end

Public Instance Methods

account_message_balance() click to toggle source
# File lib/slybroadcast/client.rb, line 85
def account_message_balance
  params = set_credentials(remain_message: '1')
  res = make_post(endpoint_url, params)
  parse_response(:RemainingMessagesResponse, res)
end
campaign(**options) click to toggle source
# File lib/slybroadcast/client.rb, line 67
def campaign(**options)
  params = set_credentials(options)
  res = make_post(endpoint_url, params)
  parse_response(:CampaignActionsResponse, res)
end
campaign_call(**options) click to toggle source
# File lib/slybroadcast/client.rb, line 55
def campaign_call(**options)
  params = set_credentials(options)
  res = make_post(endpoint_url, params)
  parse_response(:CampaignCallResponse, res)
end
campaign_cancel(**options) click to toggle source
# File lib/slybroadcast/client.rb, line 81
def campaign_cancel(**options)
  campaign(options.merge(c_option: :stop))
end
campaign_pause(**options) click to toggle source
# File lib/slybroadcast/client.rb, line 73
def campaign_pause(**options)
  campaign(options.merge(c_option: :pause))
end
campaign_resume(**options) click to toggle source
# File lib/slybroadcast/client.rb, line 77
def campaign_resume(**options)
  campaign(options.merge(c_option: :run))
end
campaign_status(**options) click to toggle source
# File lib/slybroadcast/client.rb, line 61
def campaign_status(**options)
  params = set_credentials(options.merge(c_option: :callstatus))
  res = make_post(endpoint_url, params)
  parse_response(:CampaignStatusResponse, res)
end
download_audio_file(**options) click to toggle source
# File lib/slybroadcast/client.rb, line 91
def download_audio_file(**options)
  params = set_credentials(options)
  res = make_post(endpoint_url, params)
  parse_response(:RemainingMessagesResponse, res)
end
list_audio_files() click to toggle source
# File lib/slybroadcast/client.rb, line 97
def list_audio_files
  params = set_credentials(c_method: 'get_audio_list')
  res = make_post(endpoint_url, params)
  parse_response(:AudioFileListResponse, res)
end
verify(**options) click to toggle source
# File lib/slybroadcast/client.rb, line 48
def verify(**options)
  params = set_credentials(options.merge(c_option: :user_verify))
  res = make_post(endpoint_url, params)
  raise Exceptions::InvalidCredentials, 'Invalid `c_uid` or `c_password`' unless res.body.eql?("OK")
  true
end

Private Instance Methods

endpoint_url() click to toggle source
# File lib/slybroadcast/client.rb, line 117
def endpoint_url
  method = caller_locations(1,1).first.label.to_sym
  URI(File.join(API_URI, ENDPOINTS.fetch(method)))
end
handle_error(err) click to toggle source
# File lib/slybroadcast/client.rb, line 126
def handle_error(err)
  case err
  when 'c_uid: required'
    raise Exceptions::InvalidCredentials, err
  when 'Bad Audio, can\'t download'
    raise Exceptions::BadAudio, err
  when 'session_id: required'
    raise Exceptions::SessionIdRequired, err
  when 'already finished'
    raise Exceptions::CampaignAlreadyFinished, err
  when 'invalid or not found'
    raise Exceptions::CampaignNotFound, err
  else
    raise StandardError, err
  end
end
make_post(url, params) click to toggle source
# File lib/slybroadcast/client.rb, line 105
def make_post(url, params)
  Net::HTTP.post_form(
    url,
    params
  )
end
parse_response(parser, response) click to toggle source
# File lib/slybroadcast/client.rb, line 112
def parse_response(parser, response)
  result = Parsers.const_get(parser).new(response.body)
  result.success? ? result : handle_error(result.error)
end
set_credentials(params) click to toggle source
# File lib/slybroadcast/client.rb, line 122
def set_credentials(params)
  (self.class.credentials || {}).merge(params)
end