class Majestic::Api::ItemInfo

Attributes

ac_rank[RW]
analysis_results_unit_cost[RW]
citation_flow[RW]
crawled[RW]
crawled_urls[RW]
data[RW]
download_referring_domains_analysis_results_unit_cost[RW]
error_message[RW]
exact_referring_edu_domains[RW]
exact_referring_gov_domains[RW]
final_redirect_result[RW]
hash_mappings[RW]
index[RW]
indexed_urls[RW]
language_codes[RW]
language_confidences[RW]
language_descriptions[RW]
language_page_ratios[RW]
language_total_pages[RW]
last_crawl_date[RW]
last_crawl_result[RW]
last_seen[RW]
mappings[RW]
outbound_external_backliks[RW]
redirecting[RW]
redirecting_to[RW]
referring_domain_types[RW]
referring_domain_types_mappings[RW]
referring_domains[RW]
referring_edu_domains[RW]
referring_gov_domains[RW]
referring_ip_addresses[RW]
referring_language_codes[RW]
referring_language_confidences[RW]
referring_language_descriptions[RW]
referring_language_page_ratios[RW]
referring_language_total_pages[RW]
referring_subnets[RW]
result_code[RW]
root_domain_ip_address[RW]
status[RW]
success[RW]
title[RW]
topical_trust_flows[RW]
trust_flow[RW]
trust_metric[RW]
type[RW]
url[RW]

Public Class Methods

new(data) click to toggle source

This method returns a new instance of the Response class. If one of the parameters are not provided, it will default to nil.

# File lib/majestic/api/item_info.rb, line 25
def initialize(data)
  self.data           =   data
  
  self.mappings       =   {
    "ItemNum"                               =>    {:index                                           =>    :integer},
    "ItemType"                              =>    {:type                                            =>    :integer},
    "Item"                                  =>    {:url                                             =>    :string},
    "ResultCode"                            =>    {:result_code                                     =>    :string},
    "Status"                                =>    {:status                                          =>    :string},
    "ExtBackLinks"                          =>    {:external_backlinks                              =>    :integer},
    "RefDomains"                            =>    {:referring_domains                               =>    :integer},
    "IndexedURLs"                           =>    {:indexed_urls                                    =>    :integer},
    "AnalysisResUnitsCost"                  =>    {:analysis_results_unit_cost                      =>    :integer},
    "ACRank"                                =>    {:ac_rank                                         =>    :integer},
    "GetTopBackLinksAnalysisResUnitsCost"   =>    {:get_top_backlinks_analysis_results_unit_cost    =>    :integer},
    "DownloadBacklinksAnalysisResUnitsCost" =>    {:download_backlinks_analysis_results_unit_cost   =>    :integer},
    "DownloadRefDomainBacklinksAnalysisResUnitsCost"  => {:download_referring_domains_analysis_results_unit_cost   =>    :integer},
    "RefIPs"                                =>    {:referring_ip_addresses                          =>    :integer},
    "RefSubNets"                            =>    {:referring_subnets                               =>    :integer},
    "RefDomainsEDU"                         =>    {:referring_edu_domains                           =>    :integer},
    "ExtBackLinksEDU"                       =>    {:external_edu_backlinks                          =>    :integer},
    "RefDomainsGOV"                         =>    {:referring_gov_domains                           =>    :integer},
    "ExtBackLinksGOV"                       =>    {:external_gov_backlinks                          =>    :integer},
    "RefDomainsEDU_Exact"                   =>    {:exact_referring_edu_domains                     =>    :integer},
    "ExtBackLinksEDU_Exact"                 =>    {:exact_external_edu_backlinks                    =>    :integer},
    "RefDomainsGOV_Exact"                   =>    {:exact_referring_gov_domains                     =>    :integer},
    "ExtBackLinksGOV_Exact"                 =>    {:exact_external_gov_backlinks                    =>    :integer},
    "CrawledFlag"                           =>    {:crawled                                         =>    :boolean},
    "LastCrawlDate"                         =>    {:last_crawl_date                                 =>    :date},
    "LastCrawlResult"                       =>    {:last_crawl_result                               =>    :string},
    "RedirectFlag"                          =>    {:redirecting                                     =>    :boolean},
    "FinalRedirectResult"                   =>    {:final_redirect_result                           =>    :string},
    "LastSeen"                              =>    {:last_seen                                       =>    :string},
    "OutDomainsExternal"                    =>    {:outbound_domain_links                           =>    :integer},
    "OutLinksExternal"                      =>    {:outbound_external_backliks                      =>    :integer},
    "OutLinksInternal"                      =>    {:outbound_internal_backlinks                     =>    :integer},
    "OutLinksPages"                         =>    {:outbound_links_pages                            =>    :integer},
    "Title"                                 =>    {:title                                           =>    :string},
    "RedirectTo"                            =>    {:redirecting_to                                  =>    :string},
    "CitationFlow"                          =>    {:citation_flow                                   =>    :integer},
    "TrustFlow"                             =>    {:trust_flow                                      =>    :integer},
    "TrustMetric"                           =>    {:trust_metric                                    =>    :integer},
    "CrawledURLs"                           =>    {:crawled_urls                                    =>    :integer},
    "RootDomainIPAddress"                   =>    {:root_domain_ip_address                          =>    :string},
    "Language"                              =>    {:language_codes                                  =>    :string_array},
    "LanguageDesc"                          =>    {:language_descriptions                           =>    :string_array},
    "LanguageConfidence"                    =>    {:language_confidences                            =>    :integer_array},
    "LanguagePageRatios"                    =>    {:language_page_ratios                            =>    :float_array},
    "LanguageTotalPages"                    =>    {:language_total_pages                            =>    :integer},          
    "RefLanguage"                           =>    {:referring_language_codes                        =>    :string_array},
    "RefLanguageDesc"                       =>    {:referring_language_descriptions                 =>    :string_array},
    "RefLanguageConfidence"                 =>    {:referring_language_confidences                  =>    :integer_array},
    "RefLanguagePageRatios"                 =>    {:referring_language_page_ratios                  =>    :float_array},
    "RefLanguageTotalPages"                 =>    {:referring_language_total_pages                  =>    :integer},
    "TotalNonUniqueLinks"                   =>    {:total_non_unique_links                          =>    :integer},
  }
  
  self.non_unique_link_types            =   {}
  
  self.non_unique_link_types_mappings   =   {
    "NonUniqueLinkTypeHomepages"            =>    {:homepages                                       =>    :integer},
    "NonUniqueLinkTypeIndirect"             =>    {:indirect                                        =>    :integer},
    "NonUniqueLinkTypeDeleted"              =>    {:deleted                                         =>    :integer},
    "NonUniqueLinkTypeNoFollow"             =>    {:no_follow                                       =>    :integer},
    "NonUniqueLinkTypeProtocolHTTPS"        =>    {:https                                           =>    :integer},
    "NonUniqueLinkTypeFrame"                =>    {:frame                                           =>    :integer},
    "NonUniqueLinkTypeImageLink"            =>    {:image_link                                      =>    :integer},
    "NonUniqueLinkTypeRedirect"             =>    {:redirect                                        =>    :integer},
    "NonUniqueLinkTypeTextLink"             =>    {:text_link                                       =>    :integer},
  }
  
  self.referring_domain_types           =   {}
  
  self.referring_domain_types_mappings  =   {
    "RefDomainTypeLive"                     =>    {:live                                            =>    :integer},
    "RefDomainTypeFollow"                   =>    {:follow                                          =>    :integer},
    "RefDomainTypeHomepageLink"             =>    {:homepage_link                                   =>    :integer},
    "RefDomainTypeDirect"                   =>    {:direct                                          =>    :integer},
    "RefDomainTypeProtocolHTTPS"            =>    {:https                                           =>    :integer},
  }
  
  self.hash_mappings                    =   {
    /^NonUniqueLinkType/i                   =>  :non_unique_link_types,
    /^RefDomainType/i                       =>  :referring_domain_types
  }
  
  self.topical_trust_flows              =   {}
          
  parse_item_info
end

Public Instance Methods

convert_value(value, column, data_type) click to toggle source
# File lib/majestic/api/item_info.rb, line 166
def convert_value(value, column, data_type)
  return case data_type
    when :string
      value.to_s
    when :integer
      value.to_i
    when :float
      value.to_f
    when :date
      value.to_s
    when :boolean
      value.to_s.downcase.eql?("true")
    when :string_array
      value.to_s.include?(",") ? value.to_s.split(",").collect { |val| val.to_s } : [value.to_s]
    when :integer_array
      value.to_s.include?(",") ? value.to_s.split(",").collect { |val| val.to_i } : [value.to_s]
    when :float_array
      value.to_s.include?(",") ? value.to_s.split(",").collect { |val| val.to_f } : [value.to_s]
  end
end
parse_field(column_mapping, api_column, api_value) click to toggle source
# File lib/majestic/api/item_info.rb, line 152
def parse_field(column_mapping, api_column, api_value)
  column    =   nil
  value     =   nil
  
  mapping   =   column_mapping.fetch(api_column, nil)
  
  mapping.each do |col, data_type|
    column  =   col
    value   =   convert_value(api_value.to_s, col, data_type)
  end if mapping && !mapping.empty? && !api_value.to_s.empty?
  
  return column, value
end
parse_hashes() click to toggle source
# File lib/majestic/api/item_info.rb, line 128
def parse_hashes
  self.data.each do |api_column, api_value|
    self.hash_mappings.each do |regex, mappings_symbol|
      if api_column =~ regex
        column_mapping    =   self.send("#{mappings_symbol}_mappings".to_sym)
        column, value     =   parse_field(column_mapping, api_column, api_value)
        self.send(mappings_symbol)[column] = value if !column.nil? && !value.nil?
      end
    end
  end
end
parse_item_info() click to toggle source
# File lib/majestic/api/item_info.rb, line 116
def parse_item_info
  self.data.each do |api_column, api_value|
    column, value   =   parse_field(self.mappings, api_column, api_value)
    self.send("#{column}=", value) if !column.nil? && !value.nil?
  end
  
  parse_hashes
  parse_topical_trust_flows
  set_result_status
  set_item_type
end
parse_topical_trust_flows() click to toggle source
# File lib/majestic/api/item_info.rb, line 140
def parse_topical_trust_flows
  self.data.each do |api_column, api_value|
    if api_column =~ /^TopicalTrustFlow_Topic_\d*/i
      topic   =   api_value.to_s
      index   =   api_column.match(/TopicalTrustFlow_Topic_(?<index>\d*)/i)[:index].to_i
      value   =   self.data.fetch("TopicalTrustFlow_Value_#{index}", nil)
      
      self.topical_trust_flows[index] = {topic: topic, value: value.to_i} if !index.nil? && !topic.empty? && !value.nil?
    end
  end
end
set_item_type() click to toggle source
# File lib/majestic/api/item_info.rb, line 192
def set_item_type
  self.type = case self.type
    when 1 then :root_domain
    when 2 then :sub_domain
    when 3 then :url
  end
end
set_result_status() click to toggle source
# File lib/majestic/api/item_info.rb, line 187
def set_result_status
  self.success          =   (self.result_code && self.result_code.downcase.eql?("ok"))
  self.error_message    =   self.success ? "" : self.result_code
end