class SoracomSummary::Traffic
Attributes
date[RW]
download_byte_size_total[RW]
imsi[RW]
type[RW]
upload_byte_size_total[RW]
Public Class Methods
download_sum(traffics)
click to toggle source
# File lib/soracom_summary/traffic.rb, line 72 def download_sum(traffics) traffics.inject(0) { |sum, traffic| sum + traffic.download_byte_size_total.to_i } end
group_by_imsi(traffics, time)
click to toggle source
# File lib/soracom_summary/traffic.rb, line 48 def group_by_imsi(traffics, time) day = time.strftime('%Y%m%d') # 対象期間の請求をフィルタする day_traffics = traffics.select { |traffic| traffic.date == day } day_traffics_by_imsi = day_traffics .group_by { |traffic| traffic.imsi } .map { |imsi, group| [imsi, sum(group)] } .to_h day_traffics_by_imsi end
new( imsi:, date:, type:, upload_byte_size_total:, download_byte_size_total:)
click to toggle source
# File lib/soracom_summary/traffic.rb, line 77 def initialize( imsi:, date:, type:, upload_byte_size_total:, download_byte_size_total:) @imsi = imsi @date = date @type = type @upload_byte_size_total = upload_byte_size_total @download_byte_size_total = download_byte_size_total end
sum(traffics)
click to toggle source
# File lib/soracom_summary/traffic.rb, line 62 def sum(traffics) traffics.inject(0) do |sum, traffic| sum + traffic.upload_byte_size_total.to_i + traffic.download_byte_size_total.to_i end end
summary(traffics, time)
click to toggle source
# File lib/soracom_summary/traffic.rb, line 5 def summary(traffics, time) month_text = time.strftime('%Y%m') day = time.strftime('%Y%m%d').to_i # 対象期間の請求をフィルタする month_traffics = traffics.select { |traffic| traffic.date[0, 6] == month_text && traffic.date.to_i <= day } day_traffics = traffics.select { |traffic| traffic.date.to_i == day } traffic_summary = { 'traffics-month-total' => sum(month_traffics), 'traffics-month-upload' => upload_sum(month_traffics), 'traffics-month-download' => download_sum(month_traffics), 'traffics-day-total' => sum(day_traffics), 'traffics-day-upload' => upload_sum(day_traffics), 'traffics-day-download' => download_sum(day_traffics) } # 通信量を種類ごとにグループ化する month_traffics_by_type = month_traffics .group_by { |traffic| traffic.type } .map do |type, group| [ "traffics-month-total-#{type}", sum(group), "traffics-month-upload-#{type}", upload_sum(group), "traffics-month-download-#{type}", download_sum(group) ] end.flatten traffic_summary.merge!(Hash[*month_traffics_by_type]) day_traffics_by_type = day_traffics .group_by { |traffic| traffic.type } .map do |type, group| [ "traffics-day-total-#{type}", sum(group), "traffics-day-upload-#{type}", upload_sum(group), "traffics-day-download-#{type}", download_sum(group) ] end.flatten traffic_summary.merge!(Hash[*day_traffics_by_type]) traffic_summary end
upload_sum(traffics)
click to toggle source
# File lib/soracom_summary/traffic.rb, line 68 def upload_sum(traffics) traffics.inject(0) { |sum, traffic| sum + traffic.upload_byte_size_total.to_i } end