Class: ADTech::API::Report

Inherits:
Base
  • Object
show all
Defined in:
lib/adtech/api/report.rb

Instance Method Summary collapse

Methods inherited from Base

#client, #initialize

Constructor Details

This class inherits a constructor from ADTech::API::Base

Instance Method Details

#get_report_url(report_type_id, start_date, end_date, entities) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/adtech/api/report.rb', line 7

def get_report_url(report_type_id, start_date, end_date, entities)
  report = report_service.getReportById(report_type_id)

  ADTech.logger.info "Your report (#{report_type_id}) is of entity type: \
#{report.getEntityType} and report category: #{report.getReportCategory}"

  start_cal = gregorian_calendar(start_date.year,
                                 start_date.month - 1,
                                 start_date.day,
                                 0, 0, 0)
  ADTech.logger.info "Report start date set to: #{start_cal.getTime}";

  end_cal = gregorian_calendar(end_date.year,
                               end_date.month - 1,
                               end_date.day,
                               23, 59, 59)
  ADTech.logger.info "Report end date set to: #{end_cal.getTime}";

  entities = default_entities(report.getReportCategory) if !entities || entities.empty?

  if entities
    report_queue_entry = report_service.requestReportByEntities(
      report_type_id,
      start_cal.getTime,
      end_cal.getTime,
      report_entity(report.getEntityType),
      report_category(report.getReportCategory),
      entities
    )
  else
    report_queue_entry = report_service.requestReport(
      report_type_id,
      start_cal.getTime,
      end_cal.getTime
    )
  end

  report_download_url(System.getProperty('line.separator'),
                      'csv',
                      report_queue_entry)
end

#report_download_url(line_sep, extension, report_queue_entry) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/adtech/api/report.rb', line 49

def report_download_url(line_sep, extension, report_queue_entry)
  ADTech.logger.info 'Start polling for report...'
  report_url = ''

  while (true)
    report_queue_entry =
      report_service.getReportQueueEntryById(report_queue_entry.getId())

    status = ''
    case report_queue_entry.getState()
    when IReportQueueEntry::STATE_ENTERED
      status = 'ENTERED'
    when IReportQueueEntry::STATE_BUSY
      status = 'BUSY'
    when IReportQueueEntry::STATE_FINISHED
      status = 'FINISHED'
    when IReportQueueEntry::STATE_DELETED
      status = 'DELETED'
    when IReportQueueEntry::STATE_FAILED
      status = 'FAILED'
    end

    if report_queue_entry.getState() == IReportQueueEntry::STATE_DELETED ||
      report_queue_entry.getState() == IReportQueueEntry::STATE_FAILED
      ADTech.logger.error "Report state is: #{status}"
      ADTech.logger.info 'Exiting...'
      break
    elsif report_queue_entry.getState() == IReportQueueEntry::STATE_FINISHED
      ADTech.logger.debug "Report state: #{status}"
      report_url = "#{report_queue_entry.getResultURL()}&format=#{extension}"
      ADTech.logger.info "ResultURL: '#{report_url}'"
      break
    end

    # ADTech API sample code recommends this sleep never set below 10s
    sleep(10)
  end

  report_url
end