From 728e06c7e530c7aedeb499bef65fed5201ec9cc4 Mon Sep 17 00:00:00 2001 From: IJ Kim Date: Wed, 13 Sep 2017 21:28:05 -0400 Subject: [PATCH] added reports --- lib/sf.rb | 1 + lib/sf/report.rb | 40 ++++++++++++++++++++++++++++++++++++++++ lib/sf/version.rb | 2 +- 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 lib/sf/report.rb diff --git a/lib/sf.rb b/lib/sf.rb index 2d10966..07a6bd9 100644 --- a/lib/sf.rb +++ b/lib/sf.rb @@ -20,6 +20,7 @@ require "sf/venue" require "sf/opportunity" require "sf/service_institution" +require "sf/report" module Sf class << self def client diff --git a/lib/sf/report.rb b/lib/sf/report.rb new file mode 100644 index 0000000..8d14e2e --- /dev/null +++ b/lib/sf/report.rb @@ -0,0 +1,40 @@ +class Sf::Report + include Sf::Base + + def self.eduroam_subscribers + rpt_url = "#{ENV['SF_RPT_BASE_URL']}/#{ENV['SF_RPT_EDUROAM_SUBSCRIBERS']}?includeDetails=true" + result = Sf.client.get(rpt_url) + report = {} + if content = result.body + # data, error, meta + data_rows = content.factMap["T!T"]["rows"] + rpt_metadata = content.reportMetadata + report[:meta] = { + name: rpt_metadata.name, + columns: rpt_metadata.detailColumns, + count: data_rows.size, + id: rpt_metadata.id, + } + report[:data] = data_rows_to_hash(data_rows, report[:meta]) + report[:error] = {} + else + report[:data] = [] + report[:meta] = {} + report[:error] = {err: "Error"} + end + report + end + + private + + def self.data_rows_to_hash(data_rows, meta) + columns = meta[:columns] + data_rows.map do |row| + item = {} + 0.upto(columns.size - 1) do |i| + item[columns[i]] = row.dataCells[i].label + end + item + end + end +end diff --git a/lib/sf/version.rb b/lib/sf/version.rb index 39ac944..96f84f8 100644 --- a/lib/sf/version.rb +++ b/lib/sf/version.rb @@ -1,3 +1,3 @@ module Sf - VERSION = "0.1.51" + VERSION = "0.1.52" end