majestic_seo_api 0.9.3

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.
@@ -0,0 +1,156 @@
1
+
2
+ =begin
3
+
4
+ Version 0.9.3
5
+
6
+ Copyright (c) 2011, Majestic-12 Ltd
7
+ All rights reserved.
8
+
9
+ Redistribution and use in source and binary forms, with or without
10
+ modification, are permitted provided that the following conditions are met:
11
+ 1. Redistributions of source code must retain the above copyright
12
+ notice, this list of conditions and the following disclaimer.
13
+ 2. Redistributions in binary form must reproduce the above copyright
14
+ notice, this list of conditions and the following disclaimer in the
15
+ documentation and/or other materials provided with the distribution.
16
+ 3. Neither the name of the Majestic-12 Ltd nor the
17
+ names of its contributors may be used to endorse or promote products
18
+ derived from this software without specific prior written permission.
19
+
20
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
21
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
22
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23
+ DISCLAIMED. IN NO EVENT SHALL Majestic-12 Ltd BE LIABLE FOR ANY
24
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
25
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
27
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+
31
+ =end
32
+
33
+ # NOTE: The code below is specifically for the GetIndexItemInfo API command
34
+ # For other API commands, the arguments required may differ.
35
+ # Please refer to the Majestic SEO Developer Wiki for more information
36
+ # regarding other API commands and their arguments.
37
+
38
+
39
+ # add the majesticseo-external-rpc library to the search path
40
+ $: << File.expand_path(File.dirname(__FILE__));
41
+
42
+ require 'majesticseo-external-rpc/api_service'
43
+
44
+ endpoint = "http://enterprise.majesticseo.com/api_command";
45
+
46
+ puts "\n***********************************************************" +
47
+ "*****************";
48
+
49
+ puts "\nEndpoint: #{endpoint}";
50
+
51
+ if("http://enterprise.majesticseo.com/api_command" == endpoint)
52
+ puts "\nThis program is hard-wired to the Enterprise API.";
53
+
54
+ puts "\nIf you do not have access to the Enterprise API, " +
55
+ "change the endpoint to: \nhttp://developer.majesticseo.com/api_command.";
56
+ else
57
+ puts "\nThis program is hard-wired to the Developer API " +
58
+ "and hence the subset of data \nreturned will be substantially " +
59
+ "smaller than that which will be returned from \neither the " +
60
+ "Enterprise API or the Majestic SEO website.";
61
+
62
+ puts "\nTo make this program use the Enterprise API, change " +
63
+ "the endpoint to: \nhttp://enterprise.majesticseo.com/api_command.";
64
+ end
65
+
66
+ puts "\n***********************************************************" +
67
+ "*****************";
68
+
69
+ puts "\n\nThis example program will return key information about \"index items\"." +
70
+ "\n\nThe following must be provided in order to run this program: " +
71
+ "\n1. OpenApp \"private key\"\n2. Access Token\n3. List of items to query" +
72
+ "\n\nPlease enter a valid OpenApp \"private key\":\n";
73
+
74
+ private_key = gets.chomp;
75
+
76
+ puts "\nEnter your user access token:\n";
77
+
78
+ access_token = gets.chomp;
79
+
80
+ puts "\nPlease enter the list of items you wish to query seperated by " +
81
+ "commas: \n(e.g. majesticseo.com, majestic12.co.uk)\n";
82
+
83
+ items_to_query = gets.chomp;
84
+ items = items_to_query.split(/, /);
85
+
86
+ # create a hash from the resulting array with the key being
87
+ # "item0 => first item to query, item1 => second item to query" etc
88
+ items_hash = Hash.new;
89
+ 0.upto(items.length-1) do |i|
90
+ items_hash["item" + i.to_s] = items[i];
91
+ end
92
+
93
+ # add the total number of items to the hash with the key being "items"
94
+ items_hash['items'] = items.length.to_s;
95
+ items_hash['datasource'] = 'fresh';
96
+
97
+ api_service = ApiService.new(private_key, endpoint);
98
+ response = api_service.execute_openapp_request('GetIndexItemInfo', items_hash, access_token);
99
+
100
+ # check the response code
101
+ if(response.is_ok)
102
+ # print the results table
103
+ results = response.table_for_name('Results');
104
+ results.rows.each do |row|
105
+ item = row['Item'];
106
+ puts "\n<#{item}>\n";
107
+
108
+ row.keys.sort.each do |key|
109
+ unless(key.eql?('Item'))
110
+ value = row[key];
111
+ puts " #{key} ... #{value}\n";
112
+ end
113
+ end
114
+ end
115
+
116
+ if("http://developer.majesticseo.com/api_command" == endpoint)
117
+ puts "\n\n***********************************************************" +
118
+ "*****************";
119
+
120
+ puts "\nEndpoint: #{endpoint}";
121
+
122
+ puts"\nThis program is hard-wired to the Developer API " +
123
+ "and hence the subset of data \nreturned will be substantially " +
124
+ "smaller than that which will be returned from \neither the " +
125
+ "Enterprise API or the Majestic SEO website.";
126
+
127
+ puts "\nTo make this program use the Enterprise API, change " +
128
+ "the endpoint to: \nhttp://enterprise.majesticseo.com/api_command.";
129
+
130
+ puts "\n***********************************************************" +
131
+ "*****************";
132
+ end
133
+ else
134
+ puts "\nERROR MESSAGE:";
135
+ puts response.error_message;
136
+
137
+ puts "\n\n***********************************************************" +
138
+ "*****************";
139
+
140
+ puts "\nDebugging Info:\n";
141
+ puts "Endpoint:\t#{endpoint}\n";
142
+ puts "OpenApp \"private key\":\t#{private_key}\n";
143
+ puts "Access token:\t#{access_token}\n";
144
+
145
+ if("http://enterprise.majesticseo.com/api_command" == endpoint)
146
+ puts "\n Is this API Key valid for this Endpoint?";
147
+
148
+ puts "\n This program is hard-wired to the Enterprise API.";
149
+
150
+ puts "\n If you do not have access to the Enterprise API, " +
151
+ "change the endpoint to: \n http://developer.majesticseo.com/api_command.";
152
+ end
153
+
154
+ puts "\n***********************************************************" +
155
+ "*****************";
156
+ end
@@ -0,0 +1,68 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe "Majestic Seo Api Client" do
4
+ describe "initialization settings" do
5
+
6
+ describe "with defaults" do
7
+ before(:each) do
8
+ config = {"environment" => "sandbox", "api_key" => "api_key"}
9
+ MajesticSeo::Api::Client.any_instance.expects(:config).at_least_once.returns(config)
10
+ @client = MajesticSeo::Api::Client.new
11
+ end
12
+
13
+ it "should contain a key" do
14
+ @client.api_key.should == "api_key"
15
+ end
16
+
17
+ it "should have the environment set to sandbox" do
18
+ @client.environment.should == :sandbox
19
+ end
20
+
21
+ end
22
+
23
+ describe "#get_index_item_info" do
24
+ it "should send a correct request" do
25
+ client = MajesticSeo::Api::Client.new
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)
39
+ end
40
+ end
41
+
42
+ describe "#get_top_back_links" do
43
+ it "should send a correct request" do
44
+ client = MajesticSeo::Api::Client.new
45
+
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)
63
+ end
64
+ end
65
+
66
+ end
67
+ end
68
+
@@ -0,0 +1,136 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require File.expand_path('../../spec_helper', __FILE__)
3
+
4
+ describe MajesticSeo::Api::ItemInfoResponse do
5
+
6
+ #Example XML:
7
+ #<?xml version="1.0" encoding="utf-8"?>
8
+ #<Result Code="OK" ErrorMessage="" FullError="">
9
+ # <GlobalVars FirstBackLinkDate="2006-06-06" IndexBuildDate="04/01/2012 09:14:02" IndexType="0" MostRecentBackLinkDate="2011-12-18" RecentBackLinksFromDate="2011-09-19" ServerBuild="2011-11-07 13:20:36" ServerName="PWRGURU" ServerVersion="1.0.4328.24018"/>
10
+ # <DataTables Count="1">
11
+ # <DataTable Name="Results" RowsCount="2" Headers="ItemNum|Item|ResultCode|Status|ExtBackLinks|RefDomains|AnalysisResUnitsCost|ACRank|ItemType|IndexedURLs|GetTopBackLinksAnalysisResUnitsCost|RefIPs|RefSubNets|RefDomainsEDU|ExtBackLinksEDU|RefDomainsGOV|ExtBackLinksGOV|RefDomainsEDU_Exact|ExtBackLinksEDU_Exact|RefDomainsGOV_Exact|ExtBackLinksGOV_Exact|CrawledFlag|LastCrawlDate|LastCrawlResult|RedirectFlag|FinalRedirectResult|OutDomainsExternal|OutLinksExternal|OutLinksInternal|LastSeen|Title|RedirectTo">
12
+ # <Row>0|google.com|OK|Found|33536625553|15560001|33536625553|-1|1|5087871285|5000|2135470|363423|31636|147893369|22859|39850401|5833|43625720|6237|6983793|False| | |False| |0|0|0| | |http://www.google.nl</Row>
13
+ # <Row>1|yahoo.com|OK|Found|16814018765|8374570|16814018765|-1|1|3845667299|5000|1345597|266044|17992|24506182|10441|12766565|4284|5810404|1217|1338346|False| | |False| |0|0|0| | |http://pl.yahoo.com/?p=us</Row>
14
+ # </DataTable>
15
+ # </DataTables>
16
+ #</Result>
17
+
18
+ describe "successful ASCII response from MajesticSeo" do
19
+ before(:each) do
20
+ #We need to keep the XML on one line - JRuby goes bonanza otherwise
21
+ @xml = '<?xml version="1.0" encoding="utf-8"?><Result Code="OK" ErrorMessage="" FullError=""><GlobalVars FirstBackLinkDate="2006-06-06" IndexBuildDate="04/01/2012 09:14:02" IndexType="0" MostRecentBackLinkDate="2011-12-18" RecentBackLinksFromDate="2011-09-19" ServerBuild="2011-11-07 13:20:36" ServerName="PWRGURU" ServerVersion="1.0.4328.24018"/><DataTables Count="1"><DataTable Name="Results" RowsCount="2" Headers="ItemNum|Item|ResultCode|Status|ExtBackLinks|RefDomains|AnalysisResUnitsCost|ACRank|ItemType|IndexedURLs|GetTopBackLinksAnalysisResUnitsCost|RefIPs|RefSubNets|RefDomainsEDU|ExtBackLinksEDU|RefDomainsGOV|ExtBackLinksGOV|RefDomainsEDU_Exact|ExtBackLinksEDU_Exact|RefDomainsGOV_Exact|ExtBackLinksGOV_Exact|CrawledFlag|LastCrawlDate|LastCrawlResult|RedirectFlag|FinalRedirectResult|OutDomainsExternal|OutLinksExternal|OutLinksInternal|LastSeen|Title|RedirectTo"><Row>0|google.com|OK|Found|33536625553|15560001|33536625553|-1|1|5087871285|5000|2135470|363423|31636|147893369|22859|39850401|5833|43625720|6237|6983793|False| | |False| |0|0|0| | |http://www.google.nl</Row><Row>1|yahoo.com|OK|Found|16814018765|8374570|16814018765|-1|1|3845667299|5000|1345597|266044|17992|24506182|10441|12766565|4284|5810404|1217|1338346|False| | |False| |0|0|0| | |http://pl.yahoo.com/?p=us</Row></DataTable></DataTables></Result>'
22
+ @parsed = ::Nokogiri::XML(@xml, nil, "utf-8")
23
+ @response = MajesticSeo::Api::ItemInfoResponse.new(@parsed)
24
+ @table = @response.tables["Results"]
25
+ end
26
+
27
+ it "should be a valid response" do
28
+ @response.success.should == true
29
+ end
30
+
31
+ it "should not have an error message" do
32
+ @response.error_message.should == ""
33
+ end
34
+
35
+ it "should have global variables set" do
36
+ @response.global_variables["most_recent_back_link_date"].should == "2011-12-18"
37
+ @response.global_variables["index_type"].should == "0"
38
+ end
39
+
40
+ it "should have one returned data table" do
41
+ @response.tables.size.should == 1
42
+ end
43
+
44
+ it "should have a data table with the name 'Results'" do
45
+ @table.should_not be_nil
46
+ end
47
+
48
+ it "should have a data table with the name 'Results' containing 2 rows" do
49
+ @table.row_count.should == 2
50
+ end
51
+
52
+ it "should have results for google.com" do
53
+ google_row = @response.items[0]
54
+
55
+ google_row.url.should == "google.com"
56
+ google_row.type.should == :root_domain
57
+ google_row.result_code.should == "OK"
58
+ google_row.success.should == true
59
+ google_row.status.should == "Found"
60
+ google_row.external_backlinks.should == 33536625553
61
+ end
62
+
63
+ it "should have results for yahoo.com" do
64
+ yahoo_row = @response.items[1]
65
+
66
+ yahoo_row.url.should == "yahoo.com"
67
+ yahoo_row.type.should == :root_domain
68
+ yahoo_row.result_code.should == "OK"
69
+ yahoo_row.success.should == true
70
+ yahoo_row.status.should == "Found"
71
+ yahoo_row.indexed_urls.should == 3845667299
72
+ end
73
+
74
+ end
75
+
76
+ #Example XML:
77
+ #<?xml version="1.0" encoding="utf-8"?>
78
+ #<Result Code="OK" ErrorMessage="" FullError="">
79
+ # <GlobalVars FirstBackLinkDate="2006-06-06" IndexBuildDate="04/01/2012 09:14:02" IndexType="0" MostRecentBackLinkDate="2011-12-18" RecentBackLinksFromDate="2011-09-19" ServerBuild="2011-11-07 13:20:36" ServerName="PWRGURU" ServerVersion="1.0.4328.24018"/>
80
+ # <DataTables Count="1">
81
+ # <DataTable Name="Results" RowsCount="1" Headers="ItemNum|Item|ResultCode|Status|ExtBackLinks|RefDomains|AnalysisResUnitsCost|ACRank|ItemType|IndexedURLs|GetTopBackLinksAnalysisResUnitsCost|RefIPs|RefSubNets|RefDomainsEDU|ExtBackLinksEDU|RefDomainsGOV|ExtBackLinksGOV|RefDomainsEDU_Exact|ExtBackLinksEDU_Exact|RefDomainsGOV_Exact|ExtBackLinksGOV_Exact|CrawledFlag|LastCrawlDate|LastCrawlResult|RedirectFlag|FinalRedirectResult|OutDomainsExternal|OutLinksExternal|OutLinksInternal|LastSeen|Title|RedirectTo">
82
+ # <Row>0|aftonbladet.se|OK|Found|54063780|128804|54063780|-1|1|5658886|5000|43589|23882|279|2396|35|179|120|496|4|13|False| | |False| |0|0|0| | Aftonbladet: Sveriges nyhetskälla och mötesplats |http://www.aftonbladet.se</Row>
83
+ # </DataTable>
84
+ # </DataTables>
85
+ #</Result>
86
+
87
+ describe "successful utf-8 response from MajesticSeo" do
88
+ before(:each) do
89
+ #We need to keep the XML on one line - JRuby goes bonanza otherwise
90
+ @xml = '<?xml version="1.0" encoding="utf-8"?><Result Code="OK" ErrorMessage="" FullError=""><GlobalVars FirstBackLinkDate="2006-06-06" IndexBuildDate="04/01/2012 09:14:02" IndexType="0" MostRecentBackLinkDate="2011-12-18" RecentBackLinksFromDate="2011-09-19" ServerBuild="2011-11-07 13:20:36" ServerName="PWRGURU" ServerVersion="1.0.4328.24018"/><DataTables Count="1"><DataTable Name="Results" RowsCount="1" Headers="ItemNum|Item|ResultCode|Status|ExtBackLinks|RefDomains|AnalysisResUnitsCost|ACRank|ItemType|IndexedURLs|GetTopBackLinksAnalysisResUnitsCost|RefIPs|RefSubNets|RefDomainsEDU|ExtBackLinksEDU|RefDomainsGOV|ExtBackLinksGOV|RefDomainsEDU_Exact|ExtBackLinksEDU_Exact|RefDomainsGOV_Exact|ExtBackLinksGOV_Exact|CrawledFlag|LastCrawlDate|LastCrawlResult|RedirectFlag|FinalRedirectResult|OutDomainsExternal|OutLinksExternal|OutLinksInternal|LastSeen|Title|RedirectTo"><Row>0|aftonbladet.se|OK|Found|54063780|128804|54063780|-1|1|5658886|5000|43589|23882|279|2396|35|179|120|496|4|13|False| | |False| |0|0|0| | Aftonbladet: Sveriges nyhetskälla och mötesplats |http://www.aftonbladet.se</Row></DataTable></DataTables></Result>'
91
+ @parsed = ::Nokogiri::XML(@xml, nil, "utf-8")
92
+ @response = MajesticSeo::Api::ItemInfoResponse.new(@parsed)
93
+ @table = @response.tables["Results"]
94
+ end
95
+
96
+ it "should be a valid response" do
97
+ @response.success.should == true
98
+ end
99
+
100
+ it "should not have an error message" do
101
+ @response.error_message.should == ""
102
+ end
103
+
104
+ it "should have global variables set" do
105
+ @response.global_variables["most_recent_back_link_date"].should == "2011-12-18"
106
+ @response.global_variables["index_type"].should == "0"
107
+ end
108
+
109
+ it "should have one returned data table" do
110
+ @response.tables.size.should == 1
111
+ end
112
+
113
+ it "should have a data table with the name 'Results'" do
114
+ @table.should_not be_nil
115
+ end
116
+
117
+ it "should have a data table with the name 'Results' containing 2 rows" do
118
+ @table.row_count.should == 1
119
+ end
120
+
121
+ it "should have results for aftonbladet.se" do
122
+ row = @response.items[0]
123
+
124
+ row.url.should == "aftonbladet.se"
125
+ row.title.should == "Aftonbladet: Sveriges nyhetskälla och mötesplats"
126
+ row.type.should == :root_domain
127
+ row.result_code.should == "OK"
128
+ row.success.should == true
129
+ row.status.should == "Found"
130
+ row.external_backlinks.should == 54063780
131
+ row.referring_domains.should == 128804
132
+ end
133
+
134
+ end
135
+ end
136
+
@@ -0,0 +1,31 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe MajesticSeo::Api::TopBackLinksResponse do
4
+
5
+ describe "invalid response from MajesticSeo" do
6
+ before(:each) do
7
+ @xml = '<?xml version="1.0" encoding="utf-8"?><Result Code="FailedRequestViaAPI" ErrorMessage="API Key does not appear to be correct: API_KEY - &#39;api_key&#39;" FullError="Majestic12.SearchIndexReportResponse+ResponseException: API Key does not appear to be correct: API_KEY - &#39;api_key&#39;&#13;&#10; at Majestic12.SearchIndexReportManager.Authenticate(SearchIndexReportRequest oReq) in W:\VersionFiles\WorldSource\MJ12searchLib\SearchIndexReportManager.cs:line 2411&#13;&#10; at Majestic12.SearchIndexReportManager.RunReport(SearchConfig oConfig, SearchIndex oSI, SearchIndexReportRequest oReq, Boolean bAvoidQueueing, SearchIndexReportResponse&#38; oRes) in W:\VersionFiles\WorldSource\MJ12searchLib\SearchIndexReportManager.cs:line 2071"><GlobalVars/></Result>'
8
+ @parsed = ::Nokogiri::XML(@xml, nil, "utf-8")
9
+ @response = MajesticSeo::Api::TopBackLinksResponse.new(@parsed)
10
+ @table = @response.tables["URL"]
11
+ end
12
+
13
+ it "should be an invalid response" do
14
+ @response.success.should == false
15
+ end
16
+
17
+ it "should have an error message" do
18
+ @response.error_message.should == "API Key does not appear to be correct: API_KEY - 'api_key'"
19
+ end
20
+
21
+ it "should have a stacktrace" do
22
+ @response.stacktrace.should_not == ""
23
+ end
24
+
25
+ it "should have no data tables" do
26
+ @response.tables.size.should == 0
27
+ end
28
+
29
+ end
30
+ end
31
+
@@ -0,0 +1,26 @@
1
+ $LOAD_PATH << "." unless $LOAD_PATH.include?(".")
2
+
3
+ begin
4
+ require "rubygems"
5
+ require "bundler"
6
+
7
+ if Gem::Version.new(Bundler::VERSION) <= Gem::Version.new("0.9.5")
8
+ raise RuntimeError, "Your bundler version is too old." +
9
+ "Run `gem install bundler` to upgrade."
10
+ end
11
+
12
+ # Set up load paths for all bundled gems
13
+ Bundler.setup
14
+ rescue Bundler::GemNotFound
15
+ raise RuntimeError, "Bundler couldn't find some gems." +
16
+ "Did you run \`bundlee install\`?"
17
+ end
18
+
19
+ #require "active_record"
20
+ Bundler.require
21
+
22
+ require File.expand_path('../../lib/majestic_seo_api', __FILE__)
23
+
24
+ RSpec.configure do |config|
25
+ config.mock_with :mocha
26
+ end
metadata ADDED
@@ -0,0 +1,160 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: majestic_seo_api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.3
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Majestic-12 Ltd
9
+ - Sebastian Johnsson
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2012-01-29 00:00:00.000000000Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: nokogiri
17
+ requirement: &70358841889560 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *70358841889560
26
+ - !ruby/object:Gem::Dependency
27
+ name: faraday
28
+ requirement: &70358841889080 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 0.7.6
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: *70358841889080
37
+ - !ruby/object:Gem::Dependency
38
+ name: agiley-faraday_middleware
39
+ requirement: &70358841888600 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ~>
43
+ - !ruby/object:Gem::Version
44
+ version: 0.8.3
45
+ type: :runtime
46
+ prerelease: false
47
+ version_requirements: *70358841888600
48
+ - !ruby/object:Gem::Dependency
49
+ name: jruby-openssl
50
+ requirement: &70358841888120 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ version: '0.7'
56
+ type: :runtime
57
+ prerelease: false
58
+ version_requirements: *70358841888120
59
+ - !ruby/object:Gem::Dependency
60
+ name: bundler
61
+ requirement: &70358841887640 !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: *70358841887640
70
+ - !ruby/object:Gem::Dependency
71
+ name: jeweler
72
+ requirement: &70358841887160 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: *70358841887160
81
+ - !ruby/object:Gem::Dependency
82
+ name: rspec
83
+ requirement: &70358841886680 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: *70358841886680
92
+ - !ruby/object:Gem::Dependency
93
+ name: mocha
94
+ requirement: &70358841886200 !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ! '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ type: :development
101
+ prerelease: false
102
+ version_requirements: *70358841886200
103
+ description: Interface for communicating with Majestic SEO's API
104
+ email: sebastian@agiley.se
105
+ executables: []
106
+ extensions: []
107
+ extra_rdoc_files:
108
+ - LICENSE.txt
109
+ - README.markdown
110
+ files:
111
+ - Gemfile
112
+ - LICENSE.txt
113
+ - README.markdown
114
+ - Rakefile
115
+ - VERSION
116
+ - lib/generators/majestic_seo/majestic_seo_generator.rb
117
+ - lib/generators/templates/majestic_seo.template.yml
118
+ - lib/majestic_seo/api/client.rb
119
+ - lib/majestic_seo/api/data_table.rb
120
+ - lib/majestic_seo/api/item_info.rb
121
+ - lib/majestic_seo/api/item_info_response.rb
122
+ - lib/majestic_seo/api/logger.rb
123
+ - lib/majestic_seo/api/response.rb
124
+ - lib/majestic_seo/api/top_back_links_response.rb
125
+ - lib/majestic_seo/extensions/string.rb
126
+ - lib/majestic_seo/railtie.rb
127
+ - lib/majestic_seo_api.rb
128
+ - majestic_seo_api.gemspec
129
+ - script/get_index_item_info.rb
130
+ - script/get_top_backlinks.rb
131
+ - script/open_app_get_index_item_info.rb
132
+ - spec/majestic_seo/client_spec.rb
133
+ - spec/majestic_seo/item_info_response_spec.rb
134
+ - spec/majestic_seo/top_back_links_response_spec.rb
135
+ - spec/spec_helper.rb
136
+ homepage: http://developer-support.majesticseo.com/connectors/
137
+ licenses: []
138
+ post_install_message:
139
+ rdoc_options: []
140
+ require_paths:
141
+ - lib
142
+ required_ruby_version: !ruby/object:Gem::Requirement
143
+ none: false
144
+ requirements:
145
+ - - ! '>='
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ required_rubygems_version: !ruby/object:Gem::Requirement
149
+ none: false
150
+ requirements:
151
+ - - ! '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ requirements: []
155
+ rubyforge_project:
156
+ rubygems_version: 1.8.15
157
+ signing_key:
158
+ specification_version: 3
159
+ summary: Interface for communicating with Majestic SEO's API
160
+ test_files: []