Class: Eco::API::Session::Batch::RequestStats
- Inherits:
-
Object
- Object
- Eco::API::Session::Batch::RequestStats
- Defined in:
- lib/eco/api/session/batch/request_stats.rb
Constant Summary collapse
- CORE_ATTRS =
Eco::API::Common::People::PersonParser::CORE_ATTRS
- ACCOUNT_ATTRS =
(Eco::API::Common::People::PersonParser::ACCOUNT_ATTRS + ["permissions_custom"]).uniq
- DETAILS_ATTRS =
["fields"]
Instance Attribute Summary collapse
-
#count ⇒ Integer
readonly
the total number of requests.
-
#stats ⇒ Hash
readonly
plain
Hashwith the number of requests that include an attribute. -
#type ⇒ Object
readonly
Returns the value of attribute type.
Class Method Summary collapse
- .account_attrs(stats: false, all: false) ⇒ Object
- .core_attrs(stats: false, all: false) ⇒ Object
- .details_attrs(stats: false, all: false) ⇒ Object
- .valid_type?(type) ⇒ Boolean
Instance Method Summary collapse
- #account(percent: false) ⇒ Object
- #account_attrs ⇒ Object
- #account_remove(percent: false) ⇒ Object
- #attr(attr, percent: false, total: count) ⇒ Object
- #core(percent: false) ⇒ Object
- #core_attrs ⇒ Object
- #details(percent: false) ⇒ Object
- #details_attrs ⇒ Object
- #details_remove(percent: false) ⇒ Object
- #fields_average ⇒ Object
-
#initialize(type:, requests: []) ⇒ RequestStats
constructor
A new instance of RequestStats.
- #message(percent: false) ⇒ Object
- #model ⇒ Object
- #to_h ⇒ Object
Constructor Details
#initialize(type:, requests: []) ⇒ RequestStats
46 47 48 49 50 51 |
# File 'lib/eco/api/session/batch/request_stats.rb', line 46 def initialize(type:, requests: []) raise "type should be one of #{Eco::API::Session::Batch::Job.types}. Given: #{type}" unless self.class.valid_type?(type.to_sym) @type = type.to_sym @count = requests && requests.length @stats = build(requests) end |
Instance Attribute Details
#count ⇒ Integer (readonly)
the total number of requests
7 8 9 |
# File 'lib/eco/api/session/batch/request_stats.rb', line 7 def count @count end |
#stats ⇒ Hash (readonly)
plain Hash with the number of requests that include an attribute
7 8 9 |
# File 'lib/eco/api/session/batch/request_stats.rb', line 7 def stats @stats end |
#type ⇒ Object (readonly)
Returns the value of attribute type.
44 45 46 |
# File 'lib/eco/api/session/batch/request_stats.rb', line 44 def type @type end |
Class Method Details
.account_attrs(stats: false, all: false) ⇒ Object
24 25 26 27 28 29 30 31 |
# File 'lib/eco/api/session/batch/request_stats.rb', line 24 def account_attrs(stats: false, all: false) ACCOUNT_ATTRS.dup.tap do |attrs| if stats || all attrs.unshift("account_remove") attrs.unshift("account") if all end end end |
.core_attrs(stats: false, all: false) ⇒ Object
18 19 20 21 22 |
# File 'lib/eco/api/session/batch/request_stats.rb', line 18 def core_attrs(stats: false, all: false) CORE_ATTRS.dup.tap do |attrs| attrs.unshift("core") if stats || all end end |
.details_attrs(stats: false, all: false) ⇒ Object
33 34 35 36 37 38 39 40 |
# File 'lib/eco/api/session/batch/request_stats.rb', line 33 def details_attrs(stats: false, all: false) DETAILS_ATTRS.dup.tap do |attrs| if stats || all attrs.unshift("details_remove") attrs.unshift("details") if all end end end |
.valid_type?(type) ⇒ Boolean
14 15 16 |
# File 'lib/eco/api/session/batch/request_stats.rb', line 14 def valid_type?(type) Eco::API::Session::Batch::Job.valid_type?(type.to_sym) end |
Instance Method Details
#account(percent: false) ⇒ Object
79 80 81 |
# File 'lib/eco/api/session/batch/request_stats.rb', line 79 def account(percent: false) attr("account", percent: percent) end |
#account_attrs ⇒ Object
61 62 63 |
# File 'lib/eco/api/session/batch/request_stats.rb', line 61 def account_attrs @account_attrs ||= self.class.account_attrs end |
#account_remove(percent: false) ⇒ Object
83 84 85 |
# File 'lib/eco/api/session/batch/request_stats.rb', line 83 def account_remove(percent: false) attr("account_remove", percent: percent) end |
#attr(attr, percent: false, total: count) ⇒ Object
69 70 71 72 73 |
# File 'lib/eco/api/session/batch/request_stats.rb', line 69 def attr(attr, percent: false, total: count) i = @stats["#{attr}"] return i unless percent percentage(i, total: total) end |
#core(percent: false) ⇒ Object
75 76 77 |
# File 'lib/eco/api/session/batch/request_stats.rb', line 75 def core(percent: false) attr("core", percent: percent) end |
#core_attrs ⇒ Object
57 58 59 |
# File 'lib/eco/api/session/batch/request_stats.rb', line 57 def core_attrs @core_attrs ||= self.class.core_attrs end |
#details(percent: false) ⇒ Object
87 88 89 |
# File 'lib/eco/api/session/batch/request_stats.rb', line 87 def details(percent: false) attr("details", percent: percent) end |
#details_attrs ⇒ Object
65 66 67 |
# File 'lib/eco/api/session/batch/request_stats.rb', line 65 def details_attrs @details_attrs ||= self.class.details_attrs end |
#details_remove(percent: false) ⇒ Object
91 92 93 |
# File 'lib/eco/api/session/batch/request_stats.rb', line 91 def details_remove(percent: false) attr("details_remove", percent: percent) end |
#fields_average ⇒ Object
95 96 97 98 99 |
# File 'lib/eco/api/session/batch/request_stats.rb', line 95 def fields_average if (fields_num = attr("fields")) && (total = details) > 0 (fields_num.to_f / total.to_f).round(2) end end |
#message(percent: false) ⇒ Object
101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/eco/api/session/batch/request_stats.rb', line 101 def (percent: false) key_val_delimiter = ": "; attr_delimiter = " ++ " pairs_to_line = Proc.new do |pairs| pairs.map do |p| [p.first.to_s, "#{p.last.to_s}" + (percent ? "%" : "")].join(key_val_delimiter) end.join(attr_delimiter) end lines = [] lines << pairs_to_line.call(core_pairs(percent: percent)) lines << pairs_to_line.call(account_pairs(percent: percent)) lines << pairs_to_line.call(details_pairs(percent: percent)) lines.join("\n") end |
#model ⇒ Object
116 117 118 |
# File 'lib/eco/api/session/batch/request_stats.rb', line 116 def model end |
#to_h ⇒ Object
53 54 55 |
# File 'lib/eco/api/session/batch/request_stats.rb', line 53 def to_h @stats end |