lib/sendgrid_toolkit/statistics.rb in sendgrid_toolkit-1.3.0 vs lib/sendgrid_toolkit/statistics.rb in sendgrid_toolkit-1.4.0
- old
+ new
@@ -1,13 +1,22 @@
module SendgridToolkit
class Statistics < AbstractSendgridClient
+ def advanced(data_type, start_date, options = {})
+ options.merge! :data_type => data_type
+ options.merge! :start_date => format_date(start_date, options)
+
+ response = api_post('stats', 'getAdvanced', options)
+ response.each { |r| r['date'] = Date.parse(r['date']) if r.kind_of?(Hash) && r.has_key?('date') }
+ response
+ end
+
def retrieve(options = {})
response = api_post('stats', 'get', options)
response.each {|r| r['date'] = Date.parse(r['date']) if r.kind_of?(Hash) && r.has_key?('date')}
response
end
-
+
def retrieve_aggregate(options = {})
options.merge! :aggregate => 1
response = retrieve options
if Hash === response.parsed_response
to_ints(response.parsed_response)
@@ -20,13 +29,30 @@
def to_ints(resp)
%w(bounces clicks delivered invalid_email opens repeat_bounces repeat_spamreports repeat_unsubscribes requests spamreports unsubscribes).each do |int_field|
resp[int_field] = resp[int_field].to_i if resp.has_key?(int_field)
end
end
-
+
def list_categories(options = {})
options.merge! :list => true
response = retrieve options
response
+ end
+
+ private
+
+ def format_date(date, options = {})
+ if date.is_a? Date
+ case options[:aggregated_by].to_s
+ when 'week'
+ date = date.strftime("%Y-%V")
+ when 'month'
+ date = date.strftime("%Y-%m")
+ else
+ date = date.strftime("%Y-%m-%d")
+ end
+ end
+
+ date
end
end
end