semrush 3.0.7 → 3.0.8
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +5 -7
- data/lib/semrush.rb +6 -0
- data/lib/semrush/report.rb +2 -4
- data/lib/semrush/version.rb +1 -1
- metadata +1 -1
data/README.rdoc
CHANGED
@@ -21,6 +21,11 @@ Create an initializer, for instance semrush.rb with the following:
|
|
21
21
|
|
22
22
|
Replace '7899esf6874' with your SEMRush api key.
|
23
23
|
|
24
|
+
You may also use the following parameters in config:
|
25
|
+
|
26
|
+
config.before = lambda{|params| puts params} # (Proc or lambda) will be called before the call to SemRush (even if this return false it still runs the request)
|
27
|
+
config.after = lambda{|params, results| puts results} # (Proc or lambda) will be called after the call to SemRush (if the call returns an exception, this will not be executed)
|
28
|
+
|
24
29
|
== Getting started
|
25
30
|
|
26
31
|
First, create a report for a domain, a URL or a phrase with:
|
@@ -51,8 +56,6 @@ You may use the following parameters:
|
|
51
56
|
:limit # (Integer) select only the first 'limit' entries (This parameter is required in order to avoid uncontrolled heavy usage)
|
52
57
|
:offset # (Integer) skip the first 'offset' entries
|
53
58
|
:export_columns # (String) select the columns you want to fetch, for instance: :export_columns => "Dn,Rk"
|
54
|
-
:before # (Proc or lambda) will be called before the call to SemRush (even if this return false it still runs the request)
|
55
|
-
:after # (Proc or lambda) will be called after the call to SemRush (if the call returns an exception, this will not be executed)
|
56
59
|
|
57
60
|
Some examples:
|
58
61
|
|
@@ -64,11 +67,6 @@ or
|
|
64
67
|
report = Semrush::Report.domain("seobook.com")
|
65
68
|
data = report.basics(:db => 'us', :limit => 100)
|
66
69
|
|
67
|
-
or
|
68
|
-
|
69
|
-
data = Semrush::Report.domain("seobook.com").basics(:db => 'us', :limit => 100, :before => lambda{|params| puts params})
|
70
|
-
data = Semrush::Report.domain("seobook.com").basics(:db => 'us', :limit => 100, :after => lambda{|params, results| puts results})
|
71
|
-
|
72
70
|
You will find more information about these parameters at http://www.semrush.com/api.html
|
73
71
|
|
74
72
|
== Reports
|
data/lib/semrush.rb
CHANGED
@@ -14,6 +14,10 @@ module Semrush
|
|
14
14
|
@@api_key = ""
|
15
15
|
mattr_accessor :debug
|
16
16
|
@@debug = false
|
17
|
+
mattr_accessor :before
|
18
|
+
@@before = Proc.new{}
|
19
|
+
mattr_accessor :after
|
20
|
+
@@after = Proc.new{}
|
17
21
|
|
18
22
|
|
19
23
|
# Email Options (TODO: remove if unnecessary)
|
@@ -33,6 +37,8 @@ module Semrush
|
|
33
37
|
yield self
|
34
38
|
Pony.options = @@email_options
|
35
39
|
raise Exception::BadApiKey.new if @@api_key.nil? || @@api_key.empty?
|
40
|
+
raise Exception::BadArgument.new(self, "before is not a proc: proc type is required.") unless @@before.is_a?(Proc)
|
41
|
+
raise Exception::BadArgument.new(self, "after is not a proc: proc type is required.") unless @@after.is_a?(Proc)
|
36
42
|
end
|
37
43
|
|
38
44
|
end
|
data/lib/semrush/report.rb
CHANGED
@@ -233,13 +233,13 @@ module Semrush
|
|
233
233
|
}
|
234
234
|
puts "[Semrush query] URL: #{temp_url}" if Semrush.debug
|
235
235
|
url = URI.parse(temp_url)
|
236
|
-
|
236
|
+
Semrush.before.call(params)
|
237
237
|
response = Net::HTTP.start(url.host, url.port) {|http|
|
238
238
|
http.get(url.path+"?"+url.query)
|
239
239
|
}.body rescue "ERROR :: RESPONSE ERROR (-1)" # Make this error up
|
240
240
|
response.force_encoding("utf-8")
|
241
241
|
output = response.starts_with?("ERROR") ? error(response) : parse(response)
|
242
|
-
|
242
|
+
Semrush.after.call(params, output)
|
243
243
|
output
|
244
244
|
end
|
245
245
|
|
@@ -261,8 +261,6 @@ module Semrush
|
|
261
261
|
params.delete(:request_type) unless REQUEST_TYPES.include?(params[:request_type].try(:to_sym))
|
262
262
|
@parameters = {:db => "us", :api_key => Semrush.api_key, :limit => "", :offset => "", :export_columns => ""}.merge(@parameters).merge(params)
|
263
263
|
raise Semrush::Exception::Nolimit.new(self, "The limit parameter is missing: a limit is required.") unless @parameters[:limit].present?
|
264
|
-
raise Semrush::Exception::BadArgument.new(self, "Request parameter before is not a proc: proc type is required.") unless @parameters[:before].blank? || @parameters[:before].is_a?(Proc)
|
265
|
-
raise Semrush::Exception::BadArgument.new(self, "Request parameter after is not a proc: proc type is required.") unless @parameters[:after].blank? || @parameters[:after].is_a?(Proc)
|
266
264
|
raise Semrush::Exception::BadArgument.new(self, "Request parameter is missing: Domain name, URL, or keywords are required.") unless @parameters[:request].present?
|
267
265
|
raise Semrush::Exception::BadArgument.new(self, "Bad db: #{@parameters[:db]}") unless DBS.include?(@parameters[:db].try(:to_sym))
|
268
266
|
raise Semrush::Exception::BadArgument.new(self, "Bad report type: #{@parameters[:report_type]}") unless REPORT_TYPES.include?(@parameters[:report_type].try(:to_sym))
|
data/lib/semrush/version.rb
CHANGED