majestic_seo_api 1.1.3.1 → 1.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,8 +1,8 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- gem 'nokogiri'
4
- gem "faraday", "~> 0.7.6"
5
- gem "agiley-faraday_middleware", "~> 0.8.3"
3
+ gem "faraday", ">= 0.8.4"
4
+ gem "agiley-faraday_middleware", ">= 0.9.0"
5
+ gem 'nokogiri', ">= 1.5.5"
6
6
 
7
7
  group :development, :test do
8
8
  gem 'rspec'
@@ -10,7 +10,7 @@ group :development, :test do
10
10
  end
11
11
 
12
12
  platforms :jruby do
13
- gem 'jruby-openssl', '~> 0.7'
13
+ gem "jruby-openssl", ">= 0.7.7"
14
14
  end
15
15
 
16
16
  gemspec
@@ -39,28 +39,29 @@ module MajesticSeo
39
39
  module Api
40
40
 
41
41
  class Client
42
- attr_accessor :connection, :api_url, :config, :api_key, :environment
42
+ attr_accessor :connection, :api_url, :config, :api_key, :environment, :verbose
43
43
  include MajesticSeo::Api::Logger
44
44
 
45
- def initialize(api_key = nil, environment = nil)
45
+ def initialize(options = {})
46
46
  set_config
47
47
 
48
- @api_key = api_key || self.config.fetch("api_key", nil)
49
- @environment = environment || self.config.fetch("environment", :sandbox)
50
- @environment = @environment.to_sym
51
-
48
+ @api_key = options.fetch(:api_key, self.config.fetch("api_key", nil))
49
+ @environment = options.fetch(:environment, self.config.fetch("environment", :sandbox)).to_sym
50
+ @verbose = options.fetch(:verbose, false)
51
+
52
52
  set_api_url
53
53
  set_connection
54
54
  end
55
55
 
56
56
  def set_config
57
- rails_env = defined?(Rails) ? Rails.env : "development"
58
- self.config = YAML.load_file(File.join(Rails.root, "config/majestic_seo.yml"))[rails_env] rescue nil
59
- self.config ||= YAML.load_file(File.join(File.dirname(__FILE__), "../../generators/templates/majestic_seo.yml"))[rails_env] rescue nil
60
- self.config ||= YAML.load_file(File.join(File.dirname(__FILE__), "../../generators/templates/majestic_seo.template.yml"))[rails_env] rescue nil
57
+ env = (defined?(Rails) && Rails.respond_to?(:env)) ? Rails.env : (ENV["RACK_ENV"] || 'development')
58
+
59
+ self.config = YAML.load_file(File.join(Rails.root, "config/majestic_seo.yml"))[env] rescue nil
60
+ self.config ||= YAML.load_file(File.join(File.dirname(__FILE__), "../../generators/templates/majestic_seo.yml"))[env] rescue nil
61
+ self.config ||= YAML.load_file(File.join(File.dirname(__FILE__), "../../generators/templates/majestic_seo.template.yml"))[env] rescue nil
61
62
  self.config ||= {}
62
63
  end
63
-
64
+
64
65
  def set_api_url
65
66
  @api_url = case @environment.to_sym
66
67
  when :sandbox then "http://developer.majesticseo.com/api_command"
@@ -69,17 +70,18 @@ module MajesticSeo
69
70
  "http://developer.majesticseo.com/api_command"
70
71
  end
71
72
  end
72
-
73
+
73
74
  def set_connection
74
- @connection = Faraday.new(:url => @api_url) do |builder|
75
- builder.request :url_encoded
76
- #builder.response :logger
77
- builder.use FaradayMiddleware::ParseNokogiriXml
78
- builder.adapter :net_http
75
+ @connection = Faraday.new(:url => @api_url, :ssl => {:verify => false}) do |builder|
76
+ builder.request :url_encoded
77
+ builder.request :retry
78
+ builder.response :logger if (@verbose)
79
+ builder.use FaradayMiddleware::ParseNokogiriXml
80
+ builder.adapter :net_http
79
81
  end
80
82
  end
81
83
 
82
- def get_index_item_info(urls, parameters = {})
84
+ def get_index_item_info(urls, parameters = {}, options = {})
83
85
  request_parameters = {}
84
86
  request_parameters['datasource'] = parameters.fetch(:data_source, "historic")
85
87
  request_parameters["items"] = urls.size
@@ -88,14 +90,13 @@ module MajesticSeo
88
90
  request_parameters["item#{index}"] = url
89
91
  end
90
92
 
91
- timeout = parameters.fetch(:timeout, 5)
92
- response = self.execute_command("GetIndexItemInfo", request_parameters, timeout)
93
+ response = self.execute_command("GetIndexItemInfo", request_parameters, options)
93
94
  response = MajesticSeo::Api::ItemInfoResponse.new(response)
94
95
 
95
96
  return response
96
97
  end
97
98
 
98
- def get_top_back_links(url, parameters = {})
99
+ def get_top_back_links(url, parameters = {}, options = {})
99
100
  request_parameters = {}
100
101
  request_parameters['datasource'] = parameters.fetch(:data_source, "historic")
101
102
  request_parameters['URL'] = url
@@ -107,8 +108,7 @@ module MajesticSeo
107
108
  request_parameters["MaxSourceURLsPerRefDomain"] = parameters.fetch(:max_source_urls_per_ref_domain, -1)
108
109
  request_parameters["DebugForceQueue"] = parameters.fetch(:debug_force_queue, 0)
109
110
 
110
- timeout = parameters.fetch(:timeout, 5)
111
- response = self.execute_command("GetTopBackLinks", request_parameters, timeout)
111
+ response = self.execute_command("GetTopBackLinks", request_parameters, options)
112
112
  response = MajesticSeo::Api::TopBackLinksResponse.new(response)
113
113
 
114
114
  return response
@@ -118,9 +118,9 @@ module MajesticSeo
118
118
  # 'name' is the name of the command you wish to execute, e.g. GetIndexItemInfo
119
119
  # 'parameters' a hash containing the command parameters.
120
120
  # 'timeout' specifies the amount of time to wait before aborting the transaction. This defaults to 5 seconds.
121
- def execute_command(name, parameters, timeout = 5)
122
- query_parameters = parameters.merge({"app_api_key" => @api_key, "cmd" => name})
123
- self.execute_request(query_parameters, timeout)
121
+ def execute_command(name, parameters = {}, options = {})
122
+ request_parameters = parameters.merge({"app_api_key" => @api_key, "cmd" => name})
123
+ self.execute_request(request_parameters, options)
124
124
  end
125
125
 
126
126
  # This will execute the specified command as an OpenApp request.
@@ -128,17 +128,25 @@ module MajesticSeo
128
128
  # 'parameters' a hash containing the command parameters.
129
129
  # 'access_token' the token provided by the user to access their resources.
130
130
  # 'timeout' specifies the amount of time to wait before aborting the transaction. This defaults to 5 seconds.
131
- def execute_open_app_request(command_name, parameters, access_token, timeout = 5)
132
- query_parameters = parameters.merge({"accesstoken" => access_token, "cmd" => command_name, "privatekey" => @api_key})
133
- self.execute_request(query_parameters, timeout)
131
+ def execute_open_app_request(command_name, access_token, parameters = {}, options = {})
132
+ request_parameters = parameters.merge({"accesstoken" => access_token, "cmd" => command_name, "privatekey" => @api_key})
133
+ self.execute_request(request_parameters, options)
134
134
  end
135
135
 
136
136
  # 'parameters' a hash containing the command parameters.
137
- # 'timeout' specifies the amount of time to wait before aborting the transaction. This defaults to 5 seconds.
138
- def execute_request(parameters, timeout = 5)
139
- response = @connection.get do |request|
140
- request.params = parameters
141
- request.options = {:timeout => timeout}
137
+ # 'options' a hash containing command/call options (timeout, proxy settings etc)
138
+ def execute_request(parameters = {}, options = {})
139
+ response = nil
140
+
141
+ begin
142
+ log(:info, "[MajesticSeo::Api::Client] - Sending API Request to Namecheap. Parameters: #{parameters.inspect}. Options: #{options.inspect}")
143
+ response = @connection.get do |request|
144
+ request.params = parameters if (!parameters.empty?)
145
+ request.options = options if (!options.empty?)
146
+ end
147
+ rescue StandardError => e
148
+ log(:error, "[MajesticSeo::Api::Client] - Error occurred while trying to perform API-call with parameters: #{parameters.inspect}. Error Class: #{e.class.name}. Error Message: #{e.message}. Stacktrace: #{e.backtrace.join("\n")}")
149
+ response = nil
142
150
  end
143
151
 
144
152
  return response
@@ -42,45 +42,50 @@ module MajesticSeo
42
42
  attr_accessor :crawled, :last_crawl_date, :last_crawl_result, :redirecting, :final_redirect_result, :last_seen
43
43
  attr_accessor :outbound_domain_links, :outbound_external_backliks, :outbound_internal_backlinks
44
44
  attr_accessor :title, :redirecting_to
45
+ attr_accessor :citation_flow, :trust_flow, :trust_metric
45
46
 
46
47
  # This method returns a new instance of the Response class.
47
48
  # If one of the parameters are not provided, it will default to nil.
48
49
  def initialize(response = nil)
49
- self.response = response
50
+ self.response = response
50
51
 
51
- self.mappings = {
52
- "ItemNum" => {:index => :integer},
53
- "ItemType" => {:type => :integer},
54
- "Item" => {:url => :string},
55
- "ResultCode" => {:result_code => :string},
56
- "Status" => {:status => :string},
57
- "ExtBackLinks" => {:external_backlinks => :integer},
58
- "RefDomains" => {:referring_domains => :integer},
59
- "IndexedURLs" => {:indexed_urls => :integer},
60
- "AnalysisResUnitsCost" => {:analysis_results_unit_cost => :integer},
61
- "ACRank" => {:ac_rank => :integer},
62
- "GetTopBackLinksAnalysisResUnitsCost" => {:get_top_backlinks_analysis_results_unit_cost => :integer},
63
- "RefIPs" => {:referring_ip_addresses => :integer},
64
- "RefSubNets" => {:referring_subnets => :integer},
65
- "RefDomainsEDU" => {:referring_edu_domains => :integer},
66
- "ExtBackLinksEDU" => {:external_edu_backlinks => :integer},
67
- "RefDomainsGOV" => {:referring_gov_domains => :integer},
68
- "ExtBackLinksGOV" => {:external_gov_backlinks => :integer},
69
- "RefDomainsEDU_Exact" => {:exact_referring_edu_domains => :integer},
70
- "ExtBackLinksEDU_Exact" => {:exact_external_edu_backlinks => :integer},
71
- "RefDomainsGOV_Exact" => {:exact_referring_gov_domains => :integer},
72
- "ExtBackLinksGOV_Exact" => {:exact_external_gov_backlinks => :integer},
73
- "CrawledFlag" => {:crawled => :boolean},
74
- "LastCrawlDate" => {:last_crawl_date => :date},
75
- "LastCrawlResult" => {:last_crawl_result => :string},
76
- "RedirectFlag" => {:redirecting => :boolean},
77
- "FinalRedirectResult" => {:final_redirect_result => :string},
78
- "LastSeen" => {:last_seen => :string},
79
- "OutDomainsExternal" => {:outbound_domain_links => :integer},
80
- "OutLinksExternal" => {:outbound_external_backliks => :integer},
81
- "OutLinksInternal" => {:outbound_internal_backlinks => :integer},
82
- "Title" => {:title => :string},
83
- "RedirectTo" => {:redirecting_to => :string},
52
+ self.mappings = {
53
+ "ItemNum" => {:index => :integer},
54
+ "ItemType" => {:type => :integer},
55
+ "Item" => {:url => :string},
56
+ "ResultCode" => {:result_code => :string},
57
+ "Status" => {:status => :string},
58
+ "ExtBackLinks" => {:external_backlinks => :integer},
59
+ "RefDomains" => {:referring_domains => :integer},
60
+ "IndexedURLs" => {:indexed_urls => :integer},
61
+ "AnalysisResUnitsCost" => {:analysis_results_unit_cost => :integer},
62
+ "ACRank" => {:ac_rank => :integer},
63
+ "GetTopBackLinksAnalysisResUnitsCost" => {:get_top_backlinks_analysis_results_unit_cost => :integer},
64
+ "DownloadBacklinksAnalysisResUnitsCost" => {:download_backlinks_analysis_results_unit_cost => :integer},
65
+ "RefIPs" => {:referring_ip_addresses => :integer},
66
+ "RefSubNets" => {:referring_subnets => :integer},
67
+ "RefDomainsEDU" => {:referring_edu_domains => :integer},
68
+ "ExtBackLinksEDU" => {:external_edu_backlinks => :integer},
69
+ "RefDomainsGOV" => {:referring_gov_domains => :integer},
70
+ "ExtBackLinksGOV" => {:external_gov_backlinks => :integer},
71
+ "RefDomainsEDU_Exact" => {:exact_referring_edu_domains => :integer},
72
+ "ExtBackLinksEDU_Exact" => {:exact_external_edu_backlinks => :integer},
73
+ "RefDomainsGOV_Exact" => {:exact_referring_gov_domains => :integer},
74
+ "ExtBackLinksGOV_Exact" => {:exact_external_gov_backlinks => :integer},
75
+ "CrawledFlag" => {:crawled => :boolean},
76
+ "LastCrawlDate" => {:last_crawl_date => :date},
77
+ "LastCrawlResult" => {:last_crawl_result => :string},
78
+ "RedirectFlag" => {:redirecting => :boolean},
79
+ "FinalRedirectResult" => {:final_redirect_result => :string},
80
+ "LastSeen" => {:last_seen => :string},
81
+ "OutDomainsExternal" => {:outbound_domain_links => :integer},
82
+ "OutLinksExternal" => {:outbound_external_backliks => :integer},
83
+ "OutLinksInternal" => {:outbound_internal_backlinks => :integer},
84
+ "Title" => {:title => :string},
85
+ "RedirectTo" => {:redirecting_to => :string},
86
+ "CitationFlow" => {:citation_flow => :integer},
87
+ "TrustFlow" => {:trust_flow => :integer},
88
+ "TrustMetric" => {:trust_metric => :integer}
84
89
  }
85
90
 
86
91
  parse_item_info
@@ -1,11 +1,14 @@
1
1
  module MajesticSeo
2
2
  module Api
3
3
  module Logger
4
-
4
+
5
5
  def log(level, message)
6
- (defined?(Rails) && Rails.logger) ? Rails.logger.send(level, message) : puts(message)
6
+ if ((self.respond_to?(:verbose) && self.verbose) || !self.respond_to?(:verbose))
7
+ (defined?(Rails) && Rails.logger) ? Rails.logger.send(level, message) : puts(message)
8
+ end
7
9
  end
8
-
10
+
9
11
  end
10
12
  end
11
- end
13
+ end
14
+
@@ -1,5 +1,5 @@
1
1
  module MajesticSeoApi
2
- VERSION = "1.1.3.1"
2
+ VERSION = "1.2"
3
3
 
4
4
  require File.join(File.dirname(__FILE__), 'majestic_seo/railtie') if defined?(Rails)
5
5
 
@@ -3,7 +3,7 @@ Gem::Specification.new do |s|
3
3
  s.required_rubygems_version = Gem::Requirement.new(">= 1.3.5") if s.respond_to? :required_rubygems_version=
4
4
 
5
5
  s.name = 'majestic_seo_api'
6
- s.version = '1.1.3.1'
6
+ s.version = '1.2'
7
7
 
8
8
  s.homepage = "http://developer-support.majesticseo.com/connectors/"
9
9
  s.email = "sebastian@agiley.se"
@@ -11,9 +11,9 @@ Gem::Specification.new do |s|
11
11
  s.description = "Interface for communicating with Majestic SEO's API"
12
12
  s.summary = "Interface for communicating with Majestic SEO's API"
13
13
 
14
- s.add_dependency 'nokogiri'
15
- s.add_dependency 'faraday'
16
- s.add_dependency 'agiley-faraday_middleware'
14
+ s.add_dependency "faraday", ">= 0.8.4"
15
+ s.add_dependency "agiley-faraday_middleware", ">= 0.9.0"
16
+ s.add_dependency "nokogiri", ">= 1.5.5"
17
17
 
18
18
  s.add_development_dependency 'rake'
19
19
  s.add_development_dependency 'rspec'
@@ -24,18 +24,23 @@ describe "Majestic Seo Api Client" do
24
24
  it "should send a correct request" do
25
25
  client = MajesticSeo::Api::Client.new
26
26
 
27
- urls = ["google.com", "yahoo.com"]
28
- options = {:timeout => 5}
29
-
30
- expecting = {"datasource" => "historic",
31
- "items" => 2,
32
- "item0" => "google.com",
33
- "item1" => "yahoo.com",
34
- "app_api_key" => client.api_key,
35
- "cmd" => "GetIndexItemInfo"}
36
-
37
- client.expects(:execute_request).with(expecting, options[:timeout])
38
- response = client.get_index_item_info(urls, options)
27
+ urls = ["google.com", "yahoo.com"]
28
+ parameters = {:data_source => :historic}
29
+ options = {:timeout => 5}
30
+
31
+ expecting = {"datasource" => :historic,
32
+ "items" => 2,
33
+ "item0" => "google.com",
34
+ "item1" => "yahoo.com",
35
+ "app_api_key" => client.api_key,
36
+ "cmd" => "GetIndexItemInfo"
37
+ }
38
+
39
+ client.expects(:execute_request).with(expecting, options)
40
+ response = client.get_index_item_info(urls, parameters, options)
41
+
42
+ #To test behind a proxy:
43
+ #response = client.get_index_item_info(urls, parameters, options.merge(:proxy => {:uri => URI('http://proxy.com:1234')}))
39
44
  end
40
45
  end
41
46
 
@@ -43,23 +48,24 @@ describe "Majestic Seo Api Client" do
43
48
  it "should send a correct request" do
44
49
  client = MajesticSeo::Api::Client.new
45
50
 
46
- url = "google.com"
47
- options = {:timeout => 5}
48
-
49
- expecting = {"datasource" => "historic",
50
- "URL" => "google.com",
51
- "MaxSourceURLs" => 100,
52
- "ShowDomainInfo" => 0,
53
- "GetUrlData" => 1,
54
- "GetSubDomainData" => 0,
55
- "GetRootDomainData" => 0,
56
- "MaxSourceURLsPerRefDomain" => -1,
57
- "DebugForceQueue" => 0,
58
- "app_api_key" => client.api_key,
59
- "cmd" => "GetTopBackLinks"}
60
-
61
- client.expects(:execute_request).with(expecting, options[:timeout])
62
- response = client.get_top_back_links(url, options)
51
+ url = "google.com"
52
+ parameters = {:data_source => :historic}
53
+ options = {:timeout => 5}
54
+
55
+ expecting = {"datasource" => :historic,
56
+ "URL" => "google.com",
57
+ "MaxSourceURLs" => 100,
58
+ "ShowDomainInfo" => 0,
59
+ "GetUrlData" => 1,
60
+ "GetSubDomainData" => 0,
61
+ "GetRootDomainData" => 0,
62
+ "MaxSourceURLsPerRefDomain" => -1,
63
+ "DebugForceQueue" => 0,
64
+ "app_api_key" => client.api_key,
65
+ "cmd" => "GetTopBackLinks"}
66
+
67
+ client.expects(:execute_request).with(expecting, options)
68
+ response = client.get_top_back_links(url, parameters, options)
63
69
  end
64
70
  end
65
71
 
metadata CHANGED
@@ -1,83 +1,113 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: majestic_seo_api
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 1.1.3.1
4
+ version: '1.2'
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Majestic-12 Ltd
9
9
  - Sebastian Johnsson
10
- autorequire:
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-02-05 00:00:00.000000000Z
13
+ date: 2012-11-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: nokogiri
17
- version_requirements: &2058 !ruby/object:Gem::Requirement
16
+ name: faraday
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
18
19
  requirements:
19
20
  - - ! '>='
20
21
  - !ruby/object:Gem::Version
21
- version: '0'
22
- none: false
23
- requirement: *2058
24
- prerelease: false
22
+ version: 0.8.4
25
23
  type: :runtime
26
- - !ruby/object:Gem::Dependency
27
- name: faraday
28
- version_requirements: &2076 !ruby/object:Gem::Requirement
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
29
27
  requirements:
30
28
  - - ! '>='
31
29
  - !ruby/object:Gem::Version
32
- version: '0'
33
- none: false
34
- requirement: *2076
35
- prerelease: false
36
- type: :runtime
30
+ version: 0.8.4
37
31
  - !ruby/object:Gem::Dependency
38
32
  name: agiley-faraday_middleware
39
- version_requirements: &2092 !ruby/object:Gem::Requirement
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
40
35
  requirements:
41
36
  - - ! '>='
42
37
  - !ruby/object:Gem::Version
43
- version: '0'
44
- none: false
45
- requirement: *2092
38
+ version: 0.9.0
39
+ type: :runtime
46
40
  prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: 0.9.0
47
+ - !ruby/object:Gem::Dependency
48
+ name: nokogiri
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: 1.5.5
47
55
  type: :runtime
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: 1.5.5
48
63
  - !ruby/object:Gem::Dependency
49
64
  name: rake
50
- version_requirements: &2108 !ruby/object:Gem::Requirement
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
51
67
  requirements:
52
68
  - - ! '>='
53
69
  - !ruby/object:Gem::Version
54
70
  version: '0'
55
- none: false
56
- requirement: *2108
57
- prerelease: false
58
71
  type: :development
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
59
79
  - !ruby/object:Gem::Dependency
60
80
  name: rspec
61
- version_requirements: &2126 !ruby/object:Gem::Requirement
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
62
83
  requirements:
63
84
  - - ! '>='
64
85
  - !ruby/object:Gem::Version
65
86
  version: '0'
66
- none: false
67
- requirement: *2126
68
- prerelease: false
69
87
  type: :development
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
70
95
  - !ruby/object:Gem::Dependency
71
96
  name: mocha
72
- version_requirements: &2142 !ruby/object:Gem::Requirement
97
+ requirement: !ruby/object:Gem::Requirement
98
+ none: false
73
99
  requirements:
74
100
  - - ! '>='
75
101
  - !ruby/object:Gem::Version
76
102
  version: '0'
77
- none: false
78
- requirement: *2142
79
- prerelease: false
80
103
  type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
81
111
  description: Interface for communicating with Majestic SEO's API
82
112
  email: sebastian@agiley.se
83
113
  executables: []
@@ -110,26 +140,26 @@ files:
110
140
  - spec/spec_helper.rb
111
141
  homepage: http://developer-support.majesticseo.com/connectors/
112
142
  licenses: []
113
- post_install_message:
143
+ post_install_message:
114
144
  rdoc_options: []
115
145
  require_paths:
116
146
  - lib
117
147
  required_ruby_version: !ruby/object:Gem::Requirement
148
+ none: false
118
149
  requirements:
119
150
  - - ! '>='
120
151
  - !ruby/object:Gem::Version
121
152
  version: '0'
122
- none: false
123
153
  required_rubygems_version: !ruby/object:Gem::Requirement
154
+ none: false
124
155
  requirements:
125
156
  - - ! '>='
126
157
  - !ruby/object:Gem::Version
127
158
  version: 1.3.5
128
- none: false
129
159
  requirements: []
130
- rubyforge_project:
131
- rubygems_version: 1.8.15
132
- signing_key:
160
+ rubyforge_project:
161
+ rubygems_version: 1.8.24
162
+ signing_key:
133
163
  specification_version: 2
134
164
  summary: Interface for communicating with Majestic SEO's API
135
165
  test_files:
@@ -137,4 +167,3 @@ test_files:
137
167
  - spec/majestic_seo/item_info_response_spec.rb
138
168
  - spec/majestic_seo/top_back_links_response_spec.rb
139
169
  - spec/spec_helper.rb
140
- ...