lib/paubox/format_helper.rb in paubox-0.3.0 vs lib/paubox/format_helper.rb in paubox-0.3.2

- old
+ new

@@ -1,60 +1,60 @@ -# frozen_string_literal: true - -module Paubox - # Utility methods for Message and MailToMessage - module FormatHelper - require 'base64' - BASE64_REGEX = %r(/^(?:[A-Za-z0-9+\/]{4}\n?)*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/).freeze - - def base64_encoded?(value) - return false unless value.is_a?(String) - - !value.strip.match(BASE64_REGEX).nil? - end - - def base64_encode_if_needed(str) - return str if base64_encoded?(str.to_s) - - Base64.encode64(str.to_s) - end - - # Converts hash keys to strings and maps them to expected JSON key. - # Also converts hashes in shallow arrays. - def convert_keys_to_json_version(hash) - converted = {} - hash.each_pair do |key, val| - converted[ruby_to_json_key(key)] = val.is_a?(Hash) ? convert_keys_to_json_version(val) : val - next unless val.is_a?(Array) - - val.each_with_index { |el, i| val[i] = convert_keys_to_json_version(el) if el.is_a?(Hash) } - end - converted - end - - def ruby_to_json_key(key) - { reply_to: 'reply-to', html_content: 'text/html', text_content: 'text/plain', - filename: 'fileName', file_name: 'fileName', content_type: 'contentType', - allow_non_tls: 'allowNonTLS', force_secure_notification: 'forceSecureNotification' }[key] || key.to_s - end - - # def get_values_whitelist(*vals) - # vals.map { |k| next unless mail[k]; [ruby_to_json_key(k), mail[k]] }.to_h - # end - - def string_or_array_to_array(object) - case object - when String - a = object.split(',').map { |str| squish(str) } - when Array - a = object.map { |s| squish(s) } - else - return [] - end - a.reject(&:empty?) - end - - def squish(str) - str.to_s.split.join(' ') - end - end -end +# frozen_string_literal: true + +module Paubox + # Utility methods for Message and MailToMessage + module FormatHelper + require 'base64' + BASE64_REGEX = %r(/^(?:[A-Za-z0-9+\/]{4}\n?)*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/).freeze + + def base64_encoded?(value) + return false unless value.is_a?(String) + + !value.strip.match(BASE64_REGEX).nil? + end + + def base64_encode_if_needed(str) + return str if base64_encoded?(str.to_s) + + Base64.encode64(str.to_s) + end + + # Converts hash keys to strings and maps them to expected JSON key. + # Also converts hashes in shallow arrays. + def convert_keys_to_json_version(hash) + converted = {} + hash.each_pair do |key, val| + converted[ruby_to_json_key(key)] = val.is_a?(Hash) ? convert_keys_to_json_version(val) : val + next unless val.is_a?(Array) + + val.each_with_index { |el, i| val[i] = convert_keys_to_json_version(el) if el.is_a?(Hash) } + end + converted + end + + def ruby_to_json_key(key) + { reply_to: 'reply-to', html_content: 'text/html', text_content: 'text/plain', + filename: 'fileName', file_name: 'fileName', content_type: 'contentType', + allow_non_tls: 'allowNonTLS', force_secure_notification: 'forceSecureNotification' }[key] || key.to_s + end + + # def get_values_whitelist(*vals) + # vals.map { |k| next unless mail[k]; [ruby_to_json_key(k), mail[k]] }.to_h + # end + + def string_or_array_to_array(object) + case object + when String + a = object.split(',').map { |str| squish(str) } + when Array + a = object.map { |s| squish(s) } + else + return [] + end + a.reject(&:empty?) + end + + def squish(str) + str.to_s.split.join(' ') + end + end +end