majestic_seo_api 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,113 @@
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
+ module MajesticSeo
34
+ module Api
35
+ class Response
36
+ attr_accessor :response, :tables, :table_key
37
+ attr_accessor :code, :error_message, :full_error
38
+ attr_accessor :global_variables, :success, :items
39
+
40
+ # This method returns a new instance of the Response class.
41
+ # If one of the parameters are not provided, it will default to nil.
42
+ def initialize(response = nil)
43
+ @response = response
44
+ @global_variables = {}
45
+ @tables = {}
46
+ @success = false
47
+
48
+ parse_response
49
+ end
50
+
51
+ def parse_response
52
+ if (@response.is_a?(Nokogiri::XML::Document))
53
+ @response = (@response && @response.root) ? @response.root : nil
54
+ elsif (@response.is_a?(Faraday::Response))
55
+ @response = (@response && @response.body && @response.body.root) ? @response.body.root : nil
56
+ end
57
+
58
+ if (@response)
59
+ @response.attributes.each do |key, attribute|
60
+ self.send("#{key.underscore}=", attribute.value)
61
+ end
62
+
63
+ @success = @code.downcase.eql?("ok")
64
+
65
+ if (success?)
66
+ parse_global_variables
67
+ parse_tables
68
+ end
69
+ end
70
+ end
71
+
72
+ def success?
73
+ @success
74
+ end
75
+
76
+ def parse_global_variables
77
+ vars = @response.at_xpath("//GlobalVars")
78
+
79
+ vars.attributes.each do |key, attribute|
80
+ @global_variables[key.underscore] = attribute.value
81
+ end if (vars && vars.attributes.any?)
82
+ end
83
+
84
+ def stacktrace
85
+ @full_error
86
+ end
87
+
88
+ def items
89
+ if (@items.nil? || @items.empty?)
90
+ @items = (self.tables && self.tables.has_key?(self.table_key)) ? self.tables[self.table_key].rows : nil
91
+ end
92
+
93
+ return @items
94
+ end
95
+
96
+ def parse_tables
97
+ tables = @response.xpath("//DataTables/DataTable")
98
+
99
+ tables.each do |table|
100
+ parse_table(table)
101
+ end if (tables && tables.any?)
102
+ end
103
+
104
+ def parse_table(table)
105
+ parsed_table = MajesticSeo::Api::DataTable.new(table)
106
+ @tables[parsed_table.name] = parsed_table
107
+ end
108
+
109
+ end
110
+
111
+ end
112
+ end
113
+
@@ -0,0 +1,44 @@
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
+ module MajesticSeo
34
+ module Api
35
+
36
+ class TopBackLinksResponse < Response
37
+ def initialize(response, table_key = "URL")
38
+ @table_key = table_key
39
+ super(response)
40
+ end
41
+ end
42
+
43
+ end
44
+ end
@@ -0,0 +1,10 @@
1
+ class String
2
+ def underscore
3
+ self.gsub(/::/, '/').
4
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
5
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
6
+ tr("-", "_").
7
+ downcase
8
+ end
9
+ end
10
+
@@ -0,0 +1,12 @@
1
+ require 'majestic_seo_api'
2
+ require 'rails'
3
+
4
+ module MajesticSeo
5
+ class Railtie < Rails::Railtie
6
+
7
+ #rake_tasks do
8
+ # Dir[File.join(File.dirname(__FILE__), '../tasks/*.rake')].each { |ext| load ext }
9
+ #end
10
+
11
+ end
12
+ end
@@ -0,0 +1,17 @@
1
+ module MajesticSeoApi
2
+ require File.join(File.dirname(__FILE__), 'majestic_seo/railtie') if defined?(Rails)
3
+
4
+ if (!String.instance_methods(false).include?(:underscore))
5
+ require File.join(File.dirname(__FILE__), 'majestic_seo/extensions/string')
6
+ end
7
+
8
+ require File.join(File.dirname(__FILE__), 'majestic_seo/api/logger')
9
+
10
+ require File.join(File.dirname(__FILE__), 'majestic_seo/api/response')
11
+ require File.join(File.dirname(__FILE__), 'majestic_seo/api/item_info_response')
12
+ require File.join(File.dirname(__FILE__), 'majestic_seo/api/top_back_links_response')
13
+ require File.join(File.dirname(__FILE__), 'majestic_seo/api/data_table')
14
+ require File.join(File.dirname(__FILE__), 'majestic_seo/api/item_info')
15
+ require File.join(File.dirname(__FILE__), 'majestic_seo/api/client')
16
+ end
17
+
@@ -0,0 +1,84 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "majestic_seo_api"
8
+ s.version = "0.9.3"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Majestic-12 Ltd", "Sebastian Johnsson"]
12
+ s.date = "2012-01-29"
13
+ s.description = "Interface for communicating with Majestic SEO's API"
14
+ s.email = "sebastian@agiley.se"
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.markdown"
18
+ ]
19
+ s.files = [
20
+ "Gemfile",
21
+ "LICENSE.txt",
22
+ "README.markdown",
23
+ "Rakefile",
24
+ "VERSION",
25
+ "lib/generators/majestic_seo/majestic_seo_generator.rb",
26
+ "lib/generators/templates/majestic_seo.template.yml",
27
+ "lib/majestic_seo/api/client.rb",
28
+ "lib/majestic_seo/api/data_table.rb",
29
+ "lib/majestic_seo/api/item_info.rb",
30
+ "lib/majestic_seo/api/item_info_response.rb",
31
+ "lib/majestic_seo/api/logger.rb",
32
+ "lib/majestic_seo/api/response.rb",
33
+ "lib/majestic_seo/api/top_back_links_response.rb",
34
+ "lib/majestic_seo/extensions/string.rb",
35
+ "lib/majestic_seo/railtie.rb",
36
+ "lib/majestic_seo_api.rb",
37
+ "majestic_seo_api.gemspec",
38
+ "script/get_index_item_info.rb",
39
+ "script/get_top_backlinks.rb",
40
+ "script/open_app_get_index_item_info.rb",
41
+ "spec/majestic_seo/client_spec.rb",
42
+ "spec/majestic_seo/item_info_response_spec.rb",
43
+ "spec/majestic_seo/top_back_links_response_spec.rb",
44
+ "spec/spec_helper.rb"
45
+ ]
46
+ s.homepage = "http://developer-support.majesticseo.com/connectors/"
47
+ s.require_paths = ["lib"]
48
+ s.rubygems_version = "1.8.15"
49
+ s.summary = "Interface for communicating with Majestic SEO's API"
50
+
51
+ if s.respond_to? :specification_version then
52
+ s.specification_version = 3
53
+
54
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
55
+ s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
56
+ s.add_runtime_dependency(%q<faraday>, ["~> 0.7.6"])
57
+ s.add_runtime_dependency(%q<agiley-faraday_middleware>, ["~> 0.8.3"])
58
+ s.add_runtime_dependency(%q<jruby-openssl>, ["~> 0.7"])
59
+ s.add_development_dependency(%q<bundler>, [">= 0"])
60
+ s.add_development_dependency(%q<jeweler>, [">= 0"])
61
+ s.add_development_dependency(%q<rspec>, [">= 0"])
62
+ s.add_development_dependency(%q<mocha>, [">= 0"])
63
+ else
64
+ s.add_dependency(%q<nokogiri>, [">= 0"])
65
+ s.add_dependency(%q<faraday>, ["~> 0.7.6"])
66
+ s.add_dependency(%q<agiley-faraday_middleware>, ["~> 0.8.3"])
67
+ s.add_dependency(%q<jruby-openssl>, ["~> 0.7"])
68
+ s.add_dependency(%q<bundler>, [">= 0"])
69
+ s.add_dependency(%q<jeweler>, [">= 0"])
70
+ s.add_dependency(%q<rspec>, [">= 0"])
71
+ s.add_dependency(%q<mocha>, [">= 0"])
72
+ end
73
+ else
74
+ s.add_dependency(%q<nokogiri>, [">= 0"])
75
+ s.add_dependency(%q<faraday>, ["~> 0.7.6"])
76
+ s.add_dependency(%q<agiley-faraday_middleware>, ["~> 0.8.3"])
77
+ s.add_dependency(%q<jruby-openssl>, ["~> 0.7"])
78
+ s.add_dependency(%q<bundler>, [">= 0"])
79
+ s.add_dependency(%q<jeweler>, [">= 0"])
80
+ s.add_dependency(%q<rspec>, [">= 0"])
81
+ s.add_dependency(%q<mocha>, [">= 0"])
82
+ end
83
+ end
84
+
@@ -0,0 +1,137 @@
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 majestic seo api library to the search path
40
+ Bundler.require if defined?(Bundler)
41
+ require File.expand_path('../../lib/majestic_seo_api', __FILE__)
42
+
43
+ environment = :production
44
+
45
+ puts "\n****************************************************************************"
46
+
47
+ puts "\nEnvironment: #{environment}"
48
+
49
+ if (environment.eql?(:production))
50
+ puts "\nThis program is hard-wired to the Enterprise API."
51
+
52
+ puts "\nIf you do not have access to the Enterprise API, " +
53
+ "change the environment to: \n:sandbox."
54
+ elsif (environment.eql?(:sandbox))
55
+ puts "\nThis program is hard-wired to the Developer API " +
56
+ "and hence the subset of data \nreturned will be substantially " +
57
+ "smaller than that which will be returned from \neither the " +
58
+ "Enterprise API or the Majestic SEO website."
59
+
60
+ puts "\nTo make this program use the Enterprise API, change " +
61
+ "the environment to: \n:production."
62
+ end
63
+
64
+ puts "\n***********************************************************" +
65
+ "*****************";
66
+
67
+ puts "\n\nThis example program will return key information about \"index items\"." +
68
+ "\n\nThe following must be provided in order to run this program: " +
69
+ "\n1. API key \n2. List of items to query" +
70
+ "\n\nPlease enter your API key:\n"
71
+
72
+ api_key = gets.chomp
73
+
74
+ puts "\nPlease enter the list of items you wish to query seperated by " +
75
+ "commas: \n(e.g. majesticseo.com, majestic12.co.uk)\n"
76
+
77
+ items_to_query = gets.chomp
78
+ items = items_to_query.split(/,\s?/)
79
+
80
+ client = MajesticSeo::Api::Client.new(api_key, environment)
81
+ response = client.get_index_item_info(items, {:data_source => :fresh, :timeout => 5})
82
+
83
+ if (response && response.success)
84
+ response.items.each_with_index do |item, index|
85
+ puts "\n Result: #{index+1}: \n"
86
+
87
+ instance_variables = item.instance_variables
88
+ instance_variables.delete(:@response)
89
+ instance_variables.delete(:@mappings)
90
+
91
+ instance_variables.each do |var|
92
+ puts " #{var.to_s.gsub("@", "")} ... #{item.instance_variable_get(var)}"
93
+ end
94
+
95
+ puts "\n"
96
+ end if (response.items && response.items.any?)
97
+
98
+ if (environment.eql?(:sandbox))
99
+ puts "\n\n***********************************************************" +
100
+ "*****************"
101
+
102
+ puts "\nEnvironment: #{environment}"
103
+
104
+ puts"\nThis program is hard-wired to the Developer API " +
105
+ "and hence the subset of data \nreturned will be substantially " +
106
+ "smaller than that which will be returned from \neither the " +
107
+ "Enterprise API or the Majestic SEO website."
108
+
109
+ puts "\nTo make this program use the Enterprise API, change " +
110
+ "the environment to: \n:production."
111
+
112
+ puts "\n***********************************************************" +
113
+ "*****************"
114
+ end
115
+
116
+ else
117
+ puts "\nERROR MESSAGE:"
118
+ puts response.error_message
119
+
120
+ puts "\n\n***********************************************************" +
121
+ "*****************"
122
+
123
+ puts "\nDebugging Info:"
124
+ puts "\n Environment: \t#{environment}"
125
+ puts " API Key: \t#{api_key}"
126
+
127
+ if(environment.eql?(:production))
128
+ puts "\n Is this API Key valid for this Endpoint?"
129
+
130
+ puts "\n This program is hard-wired to the Enterprise API."
131
+
132
+ puts "\n If you do not have access to the Enterprise API, " +
133
+ "change the environment to: \n :sandbox."
134
+ end
135
+
136
+ puts "\n****************************************************************************"
137
+ end
@@ -0,0 +1,140 @@
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 GetTopBackLinks 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 the top backlinks for any URL, domain " +
70
+ "\nor subdomain." +
71
+ "\n\nThe following must be provided in order to run this program: " +
72
+ "\n1. API key, \n2. A URL, domain or subdomain to query" +
73
+ "\n\nPlease enter your API key:\n";
74
+
75
+ api_key = gets.chomp;
76
+
77
+ puts "\nPlease enter a URL, domain or subdomain to query:\n";
78
+
79
+ item_to_query = gets.chomp;
80
+
81
+ # set up parameters
82
+ parameters = Hash.new;
83
+ parameters["MaxSourceURLs"] = "10";
84
+ parameters["URL"] = item_to_query;
85
+ parameters["GetUrlData"] = "1";
86
+ parameters["MaxSourceURLsPerRefDomain"] = "1";
87
+ parameters["datasource"] = "fresh";
88
+
89
+ api_service = ApiService.new(api_key, endpoint);
90
+ response = api_service.execute_command('GetTopBackLinks', parameters);
91
+
92
+ # check the response code
93
+ if(response.is_ok)
94
+ # print the URL table
95
+ results = response.table_for_name('URL');
96
+ results.rows.each do |row|
97
+ puts "\nURL: " + row['SourceURL']
98
+ puts "ACRank: " + row['ACRank']
99
+ end
100
+
101
+ if("http://developer.majesticseo.com/api_command" == endpoint)
102
+ puts "\n\n***********************************************************" +
103
+ "*****************";
104
+
105
+ puts "\nEndpoint: #{endpoint}";
106
+
107
+ puts"\nThis program is hard-wired to the Developer API " +
108
+ "and hence the subset of data \nreturned will be substantially " +
109
+ "smaller than that which will be returned from \neither the " +
110
+ "Enterprise API or the Majestic SEO website.";
111
+
112
+ puts "\nTo make this program use the Enterprise API, change " +
113
+ "the endpoint to: \nhttp://enterprise.majesticseo.com/api_command.";
114
+
115
+ puts "\n***********************************************************" +
116
+ "*****************";
117
+ end
118
+ else
119
+ puts "\nERROR MESSAGE:";
120
+ puts response.error_message;
121
+
122
+ puts "\n\n***********************************************************" +
123
+ "*****************";
124
+
125
+ puts "\nDebugging Info:";
126
+ puts "\n Endpoint: \t#{endpoint}";
127
+ puts " API Key: \t#{api_key}";
128
+
129
+ if("http://enterprise.majesticseo.com/api_command" == endpoint)
130
+ puts "\n Is this API Key valid for this Endpoint?";
131
+
132
+ puts "\n This program is hard-wired to the Enterprise API.";
133
+
134
+ puts "\n If you do not have access to the Enterprise API, " +
135
+ "change the endpoint to: \n http://developer.majesticseo.com/api_command.";
136
+ end
137
+
138
+ puts "\n***********************************************************" +
139
+ "*****************";
140
+ end