Class: ADTech::API::Report
Instance Method Summary collapse
- #get_report_url(report_type_id, start_date, end_date, entities) ⇒ Object
- #report_download_url(line_sep, extension, report_queue_entry) ⇒ Object
Methods inherited from Base
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 |