Module: InternetBoxLogger::Parsers::Utils
- Included in:
- FreeboxV5Parser
- Defined in:
- lib/internet_box_logger/parsers/utils.rb
Constant Summary collapse
- CONSIDERED_TRUE =
%w(actif active activée activé ok true connectée connecté on décroché 1)
- CONSIDERED_FALSE =
%w(inactif inactive desactivé desactivée deconnecté deconnectée désactivé désactivée déconnecté déconnectée ko false off raccroché 0)
Instance Method Summary collapse
- #as_es_documents(created_at = Time.now) ⇒ Object
- #to_bandwidth(field_name, value_to_convert) ⇒ Object
- #to_bool(field_name, value_to_convert) ⇒ Object
- #to_db(field_name, value_to_convert) ⇒ Object
- #to_duration(field_name, value_to_convert) ⇒ Object
- #to_int(field_name, value_to_convert) ⇒ Object
- #to_num(field_name, value_to_convert) ⇒ Object
Instance Method Details
#as_es_documents(created_at = Time.now) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/internet_box_logger/parsers/utils.rb', line 72 def as_es_documents(created_at=Time.now) res = [] self.up_down_reports.each_pair do |measurement, name| %w(up down).each do |measurement_type| data_name = "#{measurement}_#{measurement_type}" es_object = { index: "#{self.class.name.underscore.tr('/', '_')}_#{measurement}", type: measurement_type } data = { created_at: created_at, name: data_name, description: name, value: attributes[data_name.to_sym] } es_object[:body] = data res << es_object end end generic_info = {} attributes.each do |attr_name, content| # Tries to remove data that are up/down measurements already covered by previous collection data_key = attr_name.to_s.gsub(/_(up|down)$/, '').to_sym next if attr_name.length > 3 && self.up_down_reports.keys.include?(data_key) # Else adds info to generic info generic_info[attr_name] = content end generic_info[:name] = 'generic' generic_info[:created_at] = created_at res << { index: "#{self.class.name.underscore.tr('/', '_')}_generic", type: :info.to_s, body: generic_info } res end |
#to_bandwidth(field_name, value_to_convert) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/internet_box_logger/parsers/utils.rb', line 8 def to_bandwidth(field_name, value_to_convert) value_to_convert.match /^\s*(?<val>[\d\.]+)\s+(?<unit>[kKMmGg])b\/s/ do |md| mult = case md[:unit] when 'k', 'K' then 1024 when 'm', 'M' then 1024 * 1024 when 'g', 'G' then 1024 * 1024 end return md[:val].to_f * mult end EasyAppHelper.logger.warn "Cannot convert #{value_to_convert.inspect} to time duration (integer) for field #{field_name} !" nil end |
#to_bool(field_name, value_to_convert) ⇒ Object
37 38 39 40 41 42 43 44 45 46 |
# File 'lib/internet_box_logger/parsers/utils.rb', line 37 def to_bool(field_name, value_to_convert) CONSIDERED_TRUE.each do |val| return true if value_to_convert.match /^#{val}$/i end CONSIDERED_FALSE.each do |val| return false if value_to_convert.match /^#{val}$/i end EasyAppHelper.logger.warn "Cannot convert #{value_to_convert.inspect} to boolean for field #{field_name} !" nil end |
#to_db(field_name, value_to_convert) ⇒ Object
48 49 50 51 52 53 54 |
# File 'lib/internet_box_logger/parsers/utils.rb', line 48 def to_db(field_name, value_to_convert) value_to_convert.match /^(?<num_value>.+) db$/i do |md| return to_num(field_name, md[:num_value]) end EasyAppHelper.logger.warn "Cannot convert #{value_to_convert.inspect} to db for field #{field_name} !" nil end |
#to_duration(field_name, value_to_convert) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/internet_box_logger/parsers/utils.rb', line 25 def to_duration(field_name, value_to_convert) # 9 jours, 22 heures, 42 minutes value_to_convert.match /(?<days>\d+)\s*jours?,\s*(?<hours>\d+)\s*heures?,\s*(?<minutes>\d+)\s*minutes?/i do |md| d = md[:days].nil? ? 0 : md[:days].to_i h = md[:hours].nil? ? 0 : md[:hours].to_i m = md[:minutes].nil? ? 0 : md[:minutes].to_i return d * 86400 + h * 3600 + m * 60 end EasyAppHelper.logger.warn "Cannot convert #{value_to_convert.inspect} to time duration (integer) for field #{field_name} !" nil end |
#to_int(field_name, value_to_convert) ⇒ Object
64 65 66 67 68 69 70 |
# File 'lib/internet_box_logger/parsers/utils.rb', line 64 def to_int(field_name, value_to_convert) value_to_convert.match /^(?<num_value>[[:digit:]]+)$/i do |md| return md[:num_value].to_i end EasyAppHelper.logger.warn "Cannot convert #{value_to_convert.inspect} to integer for field #{field_name} !" nil end |
#to_num(field_name, value_to_convert) ⇒ Object
56 57 58 59 60 61 62 |
# File 'lib/internet_box_logger/parsers/utils.rb', line 56 def to_num(field_name, value_to_convert) value_to_convert.match /^(?<num_value>[[:digit:]\.\s,]+)$/i do |md| return md[:num_value].to_f end EasyAppHelper.logger.warn "Cannot convert #{value_to_convert.inspect} to num for field #{field_name} !" nil end |