majestic_seo_api 1.1.3.1 → 1.2
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.
- data/Gemfile +4 -4
- data/lib/majestic_seo/api/client.rb +42 -34
- data/lib/majestic_seo/api/item_info.rb +39 -34
- data/lib/majestic_seo/api/logger.rb +7 -4
- data/lib/majestic_seo_api.rb +1 -1
- data/majestic_seo_api.gemspec +4 -4
- data/spec/majestic_seo/client_spec.rb +35 -29
- metadata +70 -41
data/Gemfile
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
|
3
|
-
gem
|
4
|
-
gem "
|
5
|
-
gem
|
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
|
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(
|
45
|
+
def initialize(options = {})
|
46
46
|
set_config
|
47
47
|
|
48
|
-
@api_key = api_key
|
49
|
-
@environment = environment
|
50
|
-
@
|
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
|
-
|
58
|
-
|
59
|
-
|
60
|
-
self.config ||= YAML.load_file(File.join(File.dirname(__FILE__), "../../generators/templates/majestic_seo.
|
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
|
76
|
-
|
77
|
-
builder.
|
78
|
-
builder.
|
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
|
-
|
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
|
-
|
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,
|
122
|
-
|
123
|
-
self.execute_request(
|
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,
|
132
|
-
|
133
|
-
self.execute_request(
|
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
|
-
# '
|
138
|
-
def execute_request(parameters,
|
139
|
-
response =
|
140
|
-
|
141
|
-
|
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
|
50
|
+
self.response = response
|
50
51
|
|
51
|
-
self.mappings
|
52
|
-
"ItemNum" => {:index
|
53
|
-
"ItemType" => {:type
|
54
|
-
"Item" => {:url
|
55
|
-
"ResultCode" => {:result_code
|
56
|
-
"Status" => {:status
|
57
|
-
"ExtBackLinks" => {:external_backlinks
|
58
|
-
"RefDomains" => {:referring_domains
|
59
|
-
"IndexedURLs" => {:indexed_urls
|
60
|
-
"AnalysisResUnitsCost" => {:analysis_results_unit_cost
|
61
|
-
"ACRank" => {:ac_rank
|
62
|
-
"GetTopBackLinksAnalysisResUnitsCost" => {:get_top_backlinks_analysis_results_unit_cost
|
63
|
-
"
|
64
|
-
"
|
65
|
-
"
|
66
|
-
"
|
67
|
-
"
|
68
|
-
"
|
69
|
-
"
|
70
|
-
"
|
71
|
-
"
|
72
|
-
"
|
73
|
-
"
|
74
|
-
"
|
75
|
-
"
|
76
|
-
"
|
77
|
-
"
|
78
|
-
"
|
79
|
-
"
|
80
|
-
"
|
81
|
-
"
|
82
|
-
"
|
83
|
-
"
|
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
|
-
(
|
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
|
+
|
data/lib/majestic_seo_api.rb
CHANGED
data/majestic_seo_api.gemspec
CHANGED
@@ -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.
|
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
|
15
|
-
s.add_dependency
|
16
|
-
s.add_dependency
|
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
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
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
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
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
|
-
|
5
|
-
|
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-
|
13
|
+
date: 2012-11-22 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
17
|
-
|
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:
|
22
|
-
none: false
|
23
|
-
requirement: *2058
|
24
|
-
prerelease: false
|
22
|
+
version: 0.8.4
|
25
23
|
type: :runtime
|
26
|
-
|
27
|
-
|
28
|
-
|
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:
|
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
|
-
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
40
35
|
requirements:
|
41
36
|
- - ! '>='
|
42
37
|
- !ruby/object:Gem::Version
|
43
|
-
version:
|
44
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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.
|
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
|
-
...
|