class MessagebusReportsClient

Constants

FORMAT_CSV
FORMAT_JSON
REPORT_TYPE_BLOCKLIST
REPORT_TYPE_FEEDBACK
REPORT_TYPE_STATS
SCOPE_BLOCKS
SCOPE_BOUNCES
SCOPE_CLICKS
SCOPE_COMPLAINTS
SCOPE_OPENS
SCOPE_UNSUBSCRIBES
STATUS_DONE
STATUS_FAILED
STATUS_NODATA
STATUS_RUNNING

Public Class Methods

new(api_key, api_endpoint = DEFAULT_API_ENDPOINT) click to toggle source
Calls superclass method MessagebusSDK::MessagebusBase::new
# File lib/messagebus-sdk/reports_client.rb, line 37
def initialize(api_key, api_endpoint = DEFAULT_API_ENDPOINT)
  super(api_key, api_endpoint)
  @rest_endpoints = define_rest_endpoints
end

Public Instance Methods

create_blocklist_report(start_date, end_date, scope = 'blocks', format = 'json', channel_key = '', session_key = '') click to toggle source
# File lib/messagebus-sdk/reports_client.rb, line 99
def create_blocklist_report(start_date, end_date, scope = 'blocks', format = 'json', channel_key = '', session_key = '')
  create_report(REPORT_TYPE_BLOCKLIST, start_date, end_date, scope, format, channel_key, session_key)
end
create_feedback_report(start_date, end_date, scope = 'bounces', format = 'json', channel_key = '', session_key = '', use_send_time = true) click to toggle source
# File lib/messagebus-sdk/reports_client.rb, line 91
def create_feedback_report(start_date, end_date, scope = 'bounces', format = 'json', channel_key = '', session_key = '', use_send_time = true)
  create_report(REPORT_TYPE_FEEDBACK, start_date, end_date, scope, format, channel_key, session_key, use_send_time)
end
create_report(report_type, start_date, end_date, scope = nil, format = 'json', channel_key = '', session_key = '', use_send_time = true) click to toggle source
# File lib/messagebus-sdk/reports_client.rb, line 71
def create_report(report_type, start_date, end_date, scope = nil, format = 'json', channel_key = '', session_key = '', use_send_time = true)
  path = @rest_endpoints[:reports]
  days = 1
  end_date = set_date(end_date, 0)
  start_date = set_date(start_date, days)

  post_data = {:reportType => report_type,
               :format => format,
               :startDate => start_date,
               :endDate => end_date,
               :channelKey => channel_key,
               :sessionKey => session_key
              }

  post_data[:scope] = scope if (report_type == REPORT_TYPE_FEEDBACK || report_type == REPORT_TYPE_BLOCKLIST)
  post_data[:useSendTime] = use_send_time if report_type == REPORT_TYPE_FEEDBACK

  make_api_request(path, HTTP_POST, post_data.to_json)
end
create_stats_report(start_date, end_date, format = 'json', channel_key = '', session_key = '') click to toggle source
# File lib/messagebus-sdk/reports_client.rb, line 95
def create_stats_report(start_date, end_date, format = 'json', channel_key = '', session_key = '')
  create_report(REPORT_TYPE_STATS, start_date, end_date, nil, format, channel_key, session_key)
end
report(report_key, file_name = '', sleep_interval = 5) click to toggle source
# File lib/messagebus-sdk/reports_client.rb, line 52
def report(report_key, file_name = '', sleep_interval = 5)
  report_data = ''
  check_report_status = true
  while check_report_status
    response = report_status(report_key)
    case response[:reportStatus]
      when STATUS_DONE
        report_data = report_data(report_key, file_name)
        check_report_status = false
      when STATUS_NODATA, STATUS_FAILED
        report_data = ''
        check_report_status = false
      else
        sleep(sleep_interval)
    end
  end
  return report_data
end
report_data(report_key, file_name = '') click to toggle source
# File lib/messagebus-sdk/reports_client.rb, line 47
def report_data(report_key, file_name = '')
  path =  replace_report_key("#{@rest_endpoints[:report]}", report_key)
  make_api_request(path, HTTP_GET, '', false, file_name)
end
report_status(report_key) click to toggle source
# File lib/messagebus-sdk/reports_client.rb, line 42
def report_status(report_key)
  path =  replace_report_key("#{@rest_endpoints[:status]}", report_key)
  make_api_request(path)
end

Private Instance Methods

define_rest_endpoints() click to toggle source
# File lib/messagebus-sdk/reports_client.rb, line 105
def define_rest_endpoints
  {
    :reports => "/v5/reports",
    :report => "/v5/report/%REPORT_KEY%",
    :status => "/v5/report/%REPORT_KEY%/status"
  }
end