awis-sdk-ruby 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +2 -1
- data/.rubocop.yml +87 -0
- data/Gemfile +5 -3
- data/Rakefile +7 -5
- data/awis.gemspec +20 -17
- data/bin/console +4 -3
- data/lib/awis.rb +18 -20
- data/lib/awis/api.rb +8 -6
- data/lib/awis/api/base.rb +3 -1
- data/lib/awis/api/category_browse.rb +10 -7
- data/lib/awis/api/category_listings.rb +15 -12
- data/lib/awis/api/sites_linking_in.rb +10 -7
- data/lib/awis/api/traffic_history.rb +12 -9
- data/lib/awis/api/url_info.rb +11 -5
- data/lib/awis/client.rb +9 -6
- data/lib/awis/config.rb +3 -1
- data/lib/awis/connection.rb +87 -13
- data/lib/awis/exceptions.rb +3 -1
- data/lib/awis/hash.rb +2 -0
- data/lib/awis/models.rb +9 -7
- data/lib/awis/models/base.rb +4 -2
- data/lib/awis/models/base_entity.rb +2 -0
- data/lib/awis/models/category_browse.rb +14 -2
- data/lib/awis/models/category_listings.rb +4 -2
- data/lib/awis/models/sites_linking_in.rb +4 -2
- data/lib/awis/models/traffic_history.rb +10 -2
- data/lib/awis/models/url_info.rb +9 -7
- data/lib/awis/utils.rb +5 -4
- data/lib/awis/utils/extra.rb +3 -1
- data/lib/awis/utils/hash.rb +2 -0
- data/lib/awis/utils/variable.rb +3 -1
- data/lib/awis/utils/xml.rb +3 -1
- data/lib/awis/version.rb +3 -1
- metadata +57 -46
- data/lib/awis/utils/request.rb +0 -153
    
        data/lib/awis/api/url_info.rb
    CHANGED
    
    | @@ -1,7 +1,12 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module Awis
         | 
| 2 4 | 
             
              module API
         | 
| 3 5 | 
             
                class UrlInfo < Base
         | 
| 4 | 
            -
                  DEFAULT_RESPONSE_GROUP = %w | 
| 6 | 
            +
                  DEFAULT_RESPONSE_GROUP = %w[
         | 
| 7 | 
            +
                    related_links categories rank rank_by_country usage_stats
         | 
| 8 | 
            +
                    adult_content speed language owned_domains links_in_count site_data
         | 
| 9 | 
            +
                  ].freeze
         | 
| 5 10 |  | 
| 6 11 | 
             
                  def load_request_uri(arguments = {})
         | 
| 7 12 | 
             
                    validation_arguments!(arguments)
         | 
| @@ -10,6 +15,7 @@ module Awis | |
| 10 15 | 
             
                  end
         | 
| 11 16 |  | 
| 12 17 | 
             
                  private
         | 
| 18 | 
            +
             | 
| 13 19 | 
             
                  def validation_arguments!(arguments)
         | 
| 14 20 | 
             
                    before_validation_arguments(arguments)
         | 
| 15 21 |  | 
| @@ -19,14 +25,14 @@ module Awis | |
| 19 25 |  | 
| 20 26 | 
             
                  def params
         | 
| 21 27 | 
             
                    {
         | 
| 22 | 
            -
                       | 
| 23 | 
            -
                       | 
| 24 | 
            -
                       | 
| 28 | 
            +
                      'Action'        => action_name,
         | 
| 29 | 
            +
                      'Url'           => arguments[:url],
         | 
| 30 | 
            +
                      'ResponseGroup' => response_groups
         | 
| 25 31 | 
             
                    }
         | 
| 26 32 | 
             
                  end
         | 
| 27 33 |  | 
| 28 34 | 
             
                  def response_groups
         | 
| 29 | 
            -
                    arguments[:response_group].sort.map { |group| camelize(group) }.join( | 
| 35 | 
            +
                    arguments[:response_group].sort.map { |group| camelize(group) }.join(',')
         | 
| 30 36 | 
             
                  end
         | 
| 31 37 | 
             
                end
         | 
| 32 38 | 
             
              end
         | 
    
        data/lib/awis/client.rb
    CHANGED
    
    | @@ -1,30 +1,33 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module Awis
         | 
| 2 4 | 
             
              class Client
         | 
| 3 5 | 
             
                def initialize
         | 
| 4 | 
            -
                  raise CertificateError | 
| 6 | 
            +
                  raise CertificateError, 'Amazon access certificate is missing!' if Awis.config.access_key_id.nil? || Awis.config.secret_access_key.nil?
         | 
| 5 7 | 
             
                end
         | 
| 6 8 |  | 
| 7 9 | 
             
                def url_info(args)
         | 
| 8 | 
            -
                  parse_response_with_request( | 
| 10 | 
            +
                  parse_response_with_request('UrlInfo', args)
         | 
| 9 11 | 
             
                end
         | 
| 10 12 |  | 
| 11 13 | 
             
                def traffic_history(args)
         | 
| 12 | 
            -
                  parse_response_with_request( | 
| 14 | 
            +
                  parse_response_with_request('TrafficHistory', args)
         | 
| 13 15 | 
             
                end
         | 
| 14 16 |  | 
| 15 17 | 
             
                def sites_linking_in(args)
         | 
| 16 | 
            -
                  parse_response_with_request( | 
| 18 | 
            +
                  parse_response_with_request('SitesLinkingIn', args)
         | 
| 17 19 | 
             
                end
         | 
| 18 20 |  | 
| 19 21 | 
             
                def category_browse(args)
         | 
| 20 | 
            -
                  parse_response_with_request( | 
| 22 | 
            +
                  parse_response_with_request('CategoryBrowse', args)
         | 
| 21 23 | 
             
                end
         | 
| 22 24 |  | 
| 23 25 | 
             
                def category_listings(args)
         | 
| 24 | 
            -
                  parse_response_with_request( | 
| 26 | 
            +
                  parse_response_with_request('CategoryListings', args)
         | 
| 25 27 | 
             
                end
         | 
| 26 28 |  | 
| 27 29 | 
             
                private
         | 
| 30 | 
            +
             | 
| 28 31 | 
             
                def parse_response_with_request(kclass, args)
         | 
| 29 32 | 
             
                  case kclass
         | 
| 30 33 | 
             
                  when 'UrlInfo'
         | 
    
        data/lib/awis/config.rb
    CHANGED
    
    
    
        data/lib/awis/connection.rb
    CHANGED
    
    | @@ -1,12 +1,24 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'cgi'
         | 
| 4 | 
            +
            require 'aws-sigv4'
         | 
| 5 | 
            +
            require 'net/https'
         | 
| 6 | 
            +
             | 
| 1 7 | 
             
            module Awis
         | 
| 2 8 | 
             
              class Connection
         | 
| 3 | 
            -
                include Awis::Utils::Request
         | 
| 4 | 
            -
             | 
| 5 9 | 
             
                attr_accessor :debug, :protocol
         | 
| 6 | 
            -
                 | 
| 10 | 
            +
                attr_reader :params, :secret_access_key, :access_key_id
         | 
| 7 11 |  | 
| 8 | 
            -
                 | 
| 9 | 
            -
                   | 
| 12 | 
            +
                HEADERS = {
         | 
| 13 | 
            +
                  'Content-Type' => 'application/xml',
         | 
| 14 | 
            +
                  'Accept' => 'application/xml',
         | 
| 15 | 
            +
                  'User-Agent' => "awis-sdk-ruby v#{Awis::VERSION}"
         | 
| 16 | 
            +
                }.freeze
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                def initialize(options = {})
         | 
| 19 | 
            +
                  @secret_access_key = options.fetch(:secret_access_key, Awis.config.access_key_id)
         | 
| 20 | 
            +
                  @access_key_id     = options.fetch(:access_key_id, Awis.config.secret_access_key)
         | 
| 21 | 
            +
                  raise CertificateError, 'Amazon access certificate is missing!' if @secret_access_key.nil? || @access_key_id.nil?
         | 
| 10 22 |  | 
| 11 23 | 
             
                  setup_options!
         | 
| 12 24 | 
             
                end
         | 
| @@ -18,19 +30,81 @@ module Awis | |
| 18 30 | 
             
                  @open_timeout = Awis.config.open_timeout || 10
         | 
| 19 31 | 
             
                end
         | 
| 20 32 |  | 
| 21 | 
            -
                def params
         | 
| 22 | 
            -
                  @params  | 
| 33 | 
            +
                def get(params = {})
         | 
| 34 | 
            +
                  @params = params
         | 
| 35 | 
            +
                  handle_response(request).body.force_encoding(Encoding::UTF_8)
         | 
| 23 36 | 
             
                end
         | 
| 24 37 |  | 
| 25 | 
            -
                 | 
| 26 | 
            -
             | 
| 38 | 
            +
                private
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                def handle_response(response)
         | 
| 41 | 
            +
                  case response
         | 
| 42 | 
            +
                  when Net::HTTPSuccess
         | 
| 43 | 
            +
                    response
         | 
| 44 | 
            +
                  else
         | 
| 45 | 
            +
                    handle_error_response(response)
         | 
| 46 | 
            +
                  end
         | 
| 27 47 | 
             
                end
         | 
| 28 48 |  | 
| 29 | 
            -
                def  | 
| 30 | 
            -
                   | 
| 49 | 
            +
                def handle_error_response(response)
         | 
| 50 | 
            +
                  case response.code.to_i
         | 
| 51 | 
            +
                  when 300...600
         | 
| 52 | 
            +
                    if response.body.nil?
         | 
| 53 | 
            +
                      raise ResponseError.new(nil, response)
         | 
| 54 | 
            +
                    else
         | 
| 55 | 
            +
                      error_message = MultiXml.parse(response.body).deep_find('ErrorCode')
         | 
| 56 | 
            +
                      raise ResponseError.new(error_message, response)
         | 
| 57 | 
            +
                    end
         | 
| 58 | 
            +
                  else
         | 
| 59 | 
            +
                    raise ResponseError.new("Unknown code: #{response.code}", response)
         | 
| 60 | 
            +
                  end
         | 
| 61 | 
            +
                end
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                def request
         | 
| 64 | 
            +
                  req = Net::HTTP::Get.new(uri)
         | 
| 65 | 
            +
                  headers.each do |key, value|
         | 
| 66 | 
            +
                    req[key] = value
         | 
| 67 | 
            +
                  end
         | 
| 68 | 
            +
                  Net::HTTP.start(
         | 
| 69 | 
            +
                    uri.hostname,
         | 
| 70 | 
            +
                    uri.port,
         | 
| 71 | 
            +
                    use_ssl: uri.scheme == 'https',
         | 
| 72 | 
            +
                    ssl_timeout: @timeout,
         | 
| 73 | 
            +
                    open_timeout: @open_timeout
         | 
| 74 | 
            +
                  ) do |http|
         | 
| 75 | 
            +
                    http.request(req)
         | 
| 76 | 
            +
                  end
         | 
| 77 | 
            +
                end
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                def uri
         | 
| 80 | 
            +
                  @uri ||= URI.parse("#{protocol}://#{Awis::SERVICE_HOST}/#{Awis::SERVICE_PATH}?" << query)
         | 
| 81 | 
            +
                end
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                def headers
         | 
| 84 | 
            +
                  HEADERS.merge(auth_headers)
         | 
| 85 | 
            +
                end
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                def auth_headers
         | 
| 88 | 
            +
                  signer.sign_request(
         | 
| 89 | 
            +
                    http_method: 'GET',
         | 
| 90 | 
            +
                    headers: HEADERS,
         | 
| 91 | 
            +
                    url: uri.to_s
         | 
| 92 | 
            +
                  ).headers
         | 
| 93 | 
            +
                end
         | 
| 94 | 
            +
             | 
| 95 | 
            +
                def signer
         | 
| 96 | 
            +
                  Aws::Sigv4::Signer.new(
         | 
| 97 | 
            +
                    service: Awis::SERVICE_NAME,
         | 
| 98 | 
            +
                    region: Awis::SERVICE_REGION,
         | 
| 99 | 
            +
                    access_key_id: access_key_id,
         | 
| 100 | 
            +
                    secret_access_key: secret_access_key
         | 
| 101 | 
            +
                  )
         | 
| 102 | 
            +
                end
         | 
| 31 103 |  | 
| 32 | 
            -
             | 
| 33 | 
            -
                   | 
| 104 | 
            +
                def query
         | 
| 105 | 
            +
                  params.map do |key, value|
         | 
| 106 | 
            +
                    "#{key}=#{CGI.escape(value.to_s)}"
         | 
| 107 | 
            +
                  end.sort!.join('&')
         | 
| 34 108 | 
             
                end
         | 
| 35 109 | 
             
              end
         | 
| 36 110 | 
             
            end
         | 
    
        data/lib/awis/exceptions.rb
    CHANGED
    
    | @@ -1,5 +1,7 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module Awis
         | 
| 2 | 
            -
              # Awis exceptions can be  | 
| 4 | 
            +
              # Awis exceptions can be caught by rescuing: Awis::StandardError
         | 
| 3 5 |  | 
| 4 6 | 
             
              class StandardError < StandardError; end
         | 
| 5 7 | 
             
              class ArgumentError < StandardError; end
         | 
    
        data/lib/awis/hash.rb
    CHANGED
    
    
    
        data/lib/awis/models.rb
    CHANGED
    
    | @@ -1,11 +1,13 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module Awis
         | 
| 2 4 | 
             
              module Models
         | 
| 3 | 
            -
                autoload :Base,              | 
| 4 | 
            -
                autoload :BaseEntity,        | 
| 5 | 
            -
                autoload :UrlInfo,           | 
| 6 | 
            -
                autoload :TrafficHistory,    | 
| 7 | 
            -
                autoload :SitesLinkingIn,    | 
| 8 | 
            -
                autoload :CategoryListings,  | 
| 9 | 
            -
                autoload :CategoryBrowse,    | 
| 5 | 
            +
                autoload :Base,             'awis/models/base'
         | 
| 6 | 
            +
                autoload :BaseEntity,       'awis/models/base_entity'
         | 
| 7 | 
            +
                autoload :UrlInfo,          'awis/models/url_info'
         | 
| 8 | 
            +
                autoload :TrafficHistory,   'awis/models/traffic_history'
         | 
| 9 | 
            +
                autoload :SitesLinkingIn,   'awis/models/sites_linking_in'
         | 
| 10 | 
            +
                autoload :CategoryListings, 'awis/models/category_listings'
         | 
| 11 | 
            +
                autoload :CategoryBrowse,   'awis/models/category_browse'
         | 
| 10 12 | 
             
              end
         | 
| 11 13 | 
             
            end
         | 
    
        data/lib/awis/models/base.rb
    CHANGED
    
    | @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module Awis
         | 
| 2 4 | 
             
              module Models
         | 
| 3 5 | 
             
                class Base
         | 
| @@ -15,11 +17,11 @@ module Awis | |
| 15 17 | 
             
                    self.class.name.split(/\:\:/)[-1]
         | 
| 16 18 | 
             
                  end
         | 
| 17 19 |  | 
| 18 | 
            -
                  def relationship_collections( | 
| 20 | 
            +
                  def relationship_collections(item_object, items, items_count, kclass)
         | 
| 19 21 | 
             
                    return if items.empty?
         | 
| 20 22 |  | 
| 21 23 | 
             
                    all_items = {}.array_slice_merge!(:item, items, items_count)
         | 
| 22 | 
            -
                    all_items.map { |item|  | 
| 24 | 
            +
                    all_items.map { |item| item_object << kclass.new(item) }
         | 
| 23 25 | 
             
                  end
         | 
| 24 26 |  | 
| 25 27 | 
             
                  def success?
         | 
| @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module Awis
         | 
| 2 4 | 
             
              module Models
         | 
| 3 5 | 
             
                class CategoryBrowse < Base
         | 
| @@ -12,6 +14,11 @@ module Awis | |
| 12 14 | 
             
                    setup_data! loading_response(response)
         | 
| 13 15 | 
             
                  end
         | 
| 14 16 |  | 
| 17 | 
            +
                  # rubocop:disable Metrics/AbcSize
         | 
| 18 | 
            +
                  # rubocop:disable Metrics/CyclomaticComplexity
         | 
| 19 | 
            +
                  # rubocop:disable Metrics/PerceivedComplexity
         | 
| 20 | 
            +
                  # rubocop:disable Metrics/MethodLength
         | 
| 21 | 
            +
                  # rubocop:disable Metrics/BlockLength
         | 
| 15 22 | 
             
                  def setup_data!(response)
         | 
| 16 23 | 
             
                    categories = []
         | 
| 17 24 | 
             
                    language_categories = []
         | 
| @@ -20,8 +27,8 @@ module Awis | |
| 20 27 |  | 
| 21 28 | 
             
                    response.each_node do |node, path|
         | 
| 22 29 | 
             
                      text = node.inner_xml
         | 
| 23 | 
            -
                      text = text.to_i if text.to_i.to_s  | 
| 24 | 
            -
                      text = nil if  | 
| 30 | 
            +
                      text = text.to_i if text.to_i.to_s == text
         | 
| 31 | 
            +
                      text = nil if text.class == String && text.empty?
         | 
| 25 32 |  | 
| 26 33 | 
             
                      if node.name == 'aws:RequestId'
         | 
| 27 34 | 
             
                        @request_id ||= text
         | 
| @@ -67,6 +74,11 @@ module Awis | |
| 67 74 | 
             
                    relationship_collections(@related_categories, related_categories, 4, RelatedCategory)
         | 
| 68 75 | 
             
                    relationship_collections(@letter_bars, letter_bars, 4, LetterBar)
         | 
| 69 76 | 
             
                  end
         | 
| 77 | 
            +
                  # rubocop:enable Metrics/AbcSize
         | 
| 78 | 
            +
                  # rubocop:enable Metrics/CyclomaticComplexity
         | 
| 79 | 
            +
                  # rubocop:enable Metrics/PerceivedComplexity
         | 
| 80 | 
            +
                  # rubocop:enable Metrics/MethodLength
         | 
| 81 | 
            +
                  # rubocop:enable Metrics/BlockLength
         | 
| 70 82 |  | 
| 71 83 | 
             
                  def base_node_name
         | 
| 72 84 | 
             
                    "#{root_node_name}/aws:CategoryBrowse"
         | 
| @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module Awis
         | 
| 2 4 | 
             
              module Models
         | 
| 3 5 | 
             
                class CategoryListings < Base
         | 
| @@ -13,8 +15,8 @@ module Awis | |
| 13 15 |  | 
| 14 16 | 
             
                    response.each_node do |node, path|
         | 
| 15 17 | 
             
                      text = node.inner_xml
         | 
| 16 | 
            -
                      text = text.to_i if text.to_i.to_s  | 
| 17 | 
            -
                      text = nil if  | 
| 18 | 
            +
                      text = text.to_i if text.to_i.to_s == text
         | 
| 19 | 
            +
                      text = nil if text.class == String && text.empty?
         | 
| 18 20 |  | 
| 19 21 | 
             
                      if node.name == 'aws:RequestId'
         | 
| 20 22 | 
             
                        @request_id ||= text
         | 
| @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module Awis
         | 
| 2 4 | 
             
              module Models
         | 
| 3 5 | 
             
                class SitesLinkingIn < Base
         | 
| @@ -11,9 +13,9 @@ module Awis | |
| 11 13 | 
             
                  def setup_data!(response)
         | 
| 12 14 | 
             
                    sites = []
         | 
| 13 15 |  | 
| 14 | 
            -
                    response.each_node do |node,  | 
| 16 | 
            +
                    response.each_node do |node, _path|
         | 
| 15 17 | 
             
                      text = node.inner_xml
         | 
| 16 | 
            -
                      text = nil if  | 
| 18 | 
            +
                      text = nil if text.class == String && text.empty?
         | 
| 17 19 |  | 
| 18 20 | 
             
                      if node.name == 'aws:RequestId'
         | 
| 19 21 | 
             
                        @request_id ||= text
         | 
| @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module Awis
         | 
| 2 4 | 
             
              module Models
         | 
| 3 5 | 
             
                class TrafficHistory < Base
         | 
| @@ -8,13 +10,16 @@ module Awis | |
| 8 10 | 
             
                    setup_data! loading_response(response)
         | 
| 9 11 | 
             
                  end
         | 
| 10 12 |  | 
| 13 | 
            +
                  # rubocop:disable Metrics/AbcSize
         | 
| 14 | 
            +
                  # rubocop:disable Metrics/CyclomaticComplexity
         | 
| 15 | 
            +
                  # rubocop:disable Metrics/PerceivedComplexity
         | 
| 11 16 | 
             
                  def setup_data!(response)
         | 
| 12 17 | 
             
                    datas = []
         | 
| 13 18 |  | 
| 14 19 | 
             
                    response.each_node do |node, path|
         | 
| 15 20 | 
             
                      text = node.inner_xml
         | 
| 16 | 
            -
                      text = text.to_i if text.to_i.to_s  | 
| 17 | 
            -
                      text = nil if  | 
| 21 | 
            +
                      text = text.to_i if text.to_i.to_s == text
         | 
| 22 | 
            +
                      text = nil if text.class == String && text.empty?
         | 
| 18 23 |  | 
| 19 24 | 
             
                      if node.name == 'aws:RequestId'
         | 
| 20 25 | 
             
                        @request_id ||= text
         | 
| @@ -41,6 +46,9 @@ module Awis | |
| 41 46 |  | 
| 42 47 | 
             
                    relationship_collections(@historical_data, datas, 5, HistoricalData)
         | 
| 43 48 | 
             
                  end
         | 
| 49 | 
            +
                  # rubocop:enable Metrics/AbcSize
         | 
| 50 | 
            +
                  # rubocop:enable Metrics/CyclomaticComplexity
         | 
| 51 | 
            +
                  # rubocop:enable Metrics/PerceivedComplexity
         | 
| 44 52 |  | 
| 45 53 | 
             
                  def base_node_name
         | 
| 46 54 | 
             
                    "#{root_node_name}/aws:TrafficHistory/aws:HistoricalData/aws:Data"
         | 
    
        data/lib/awis/models/url_info.rb
    CHANGED
    
    | @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module Awis
         | 
| 2 4 | 
             
              module Models
         | 
| 3 5 | 
             
                class UrlInfo < Base
         | 
| @@ -24,8 +26,8 @@ module Awis | |
| 24 26 |  | 
| 25 27 | 
             
                    response.each_node do |node, path|
         | 
| 26 28 | 
             
                      text = node.inner_xml
         | 
| 27 | 
            -
                      text = text.to_i if text.to_i.to_s  | 
| 28 | 
            -
                      text = nil if  | 
| 29 | 
            +
                      text = text.to_i if text.to_i.to_s == text && node.name != 'aws:Delta'
         | 
| 30 | 
            +
                      text = nil if text.class == String && text.empty?
         | 
| 29 31 |  | 
| 30 32 | 
             
                      if node.name == 'aws:RequestId'
         | 
| 31 33 | 
             
                        @request_id ||= text
         | 
| @@ -75,7 +77,7 @@ module Awis | |
| 75 77 | 
             
                        related_related_links << { data_url: text }
         | 
| 76 78 | 
             
                      elsif node.name == 'aws:NavigableUrl' && path == "#{related_links_node_name}/aws:NavigableUrl"
         | 
| 77 79 | 
             
                        related_related_links << { navigable_url: text }
         | 
| 78 | 
            -
                      elsif node.name == 'aws:Title' && | 
| 80 | 
            +
                      elsif node.name == 'aws:Title' && path == "#{related_links_node_name}/aws:Title"
         | 
| 79 81 | 
             
                        related_related_links << { title: text }
         | 
| 80 82 | 
             
                      elsif node.name == 'aws:Title' && path == "#{categories_node_name}/aws:Title"
         | 
| 81 83 | 
             
                        category_data << { title: text }
         | 
| @@ -166,11 +168,11 @@ module Awis | |
| 166 168 | 
             
                    owned_domains_relationship_collections(@owned_domains, owned_domain_objects, 2, OwnedDomain)
         | 
| 167 169 | 
             
                  end
         | 
| 168 170 |  | 
| 169 | 
            -
                  def owned_domains_relationship_collections( | 
| 171 | 
            +
                  def owned_domains_relationship_collections(item_object, items, items_count, kclass)
         | 
| 170 172 | 
             
                    return if items.empty?
         | 
| 171 173 |  | 
| 172 174 | 
             
                    all_items = {}.array_slice_merge!(:item, items, items_count)
         | 
| 173 | 
            -
                    all_items.map { |item|  | 
| 175 | 
            +
                    all_items.map { |item| item_object << kclass.new(item) }
         | 
| 174 176 | 
             
                  end
         | 
| 175 177 | 
             
                end
         | 
| 176 178 |  | 
| @@ -188,7 +190,7 @@ module Awis | |
| 188 190 | 
             
                  end
         | 
| 189 191 |  | 
| 190 192 | 
             
                  def phone_number_collections(phone_numbers)
         | 
| 191 | 
            -
                    return @phone_numbers = [] if phone_numbers. | 
| 193 | 
            +
                    return @phone_numbers = [] if phone_numbers.blank?
         | 
| 192 194 |  | 
| 193 195 | 
             
                    phone_numbers.map { |item| @phone_numbers << PhoneNumber.new(item) }
         | 
| 194 196 | 
             
                  end
         | 
| @@ -215,7 +217,7 @@ module Awis | |
| 215 217 | 
             
                                :reach_page_views_per_user_value, :reach_page_views_per_user_delta
         | 
| 216 218 |  | 
| 217 219 | 
             
                  def range_type
         | 
| 218 | 
            -
                    return 'month'  | 
| 220 | 
            +
                    return 'month' if time_range_months.present?
         | 
| 219 221 |  | 
| 220 222 | 
             
                    'day'
         | 
| 221 223 | 
             
                  end
         | 
    
        data/lib/awis/utils.rb
    CHANGED
    
    | @@ -1,9 +1,10 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
             | 
| 3 | 
            -
            require  | 
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'awis/utils/extra'
         | 
| 4 | 
            +
            require 'awis/utils/variable'
         | 
| 4 5 |  | 
| 5 6 | 
             
            module Awis
         | 
| 6 7 | 
             
              module Utils
         | 
| 7 | 
            -
                autoload :XML,  | 
| 8 | 
            +
                autoload :XML, 'awis/utils/xml'
         | 
| 8 9 | 
             
              end
         | 
| 9 10 | 
             
            end
         |