majestic_seo_api 1.2.1 → 1.2.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.
@@ -34,9 +34,9 @@ module MajesticSeo
34
34
  module Api
35
35
  class DataTable
36
36
  attr_accessor :node, :name, :row_count, :headers, :rows
37
-
37
+
38
38
  def initialize(node)
39
- @node = node
39
+ @node = node
40
40
 
41
41
  if (@node)
42
42
  @name = @node["Name"] || nil
@@ -64,11 +64,18 @@ module MajesticSeo
64
64
  if (row && row.content)
65
65
  row = row.content
66
66
  row_hash = {}
67
- splitted_row = split(row)
68
-
67
+ splitted_row = split(row, true)
68
+
69
69
  @headers.each_with_index do |header, index|
70
70
  value = splitted_row[index].strip
71
71
  value = (value && value != "") ? value : nil
72
+
73
+ #If the title element contains a |-sign (the separator) the title will be splitted into two rows, thus breaking the parsing of the remaining rows
74
+ if (header.eql?("Title") && splitted_row.size > @headers.size)
75
+ remaining_title = splitted_row.delete_at(index+1).strip
76
+ value += remaining_title if value
77
+ end
78
+
72
79
  row_hash[header] = value
73
80
  end
74
81
 
@@ -76,8 +83,9 @@ module MajesticSeo
76
83
  end
77
84
  end
78
85
 
79
- def split(text)
80
- splitted = text.split(/\|(?!\|)/)
86
+ def split(text, remove_excess_separators = false)
87
+ text = text.gsub(/\|{2,}/i, "|") if remove_excess_separators
88
+ splitted = text.split(/\|(?!\|)/)
81
89
  end
82
90
 
83
91
  def row_count
@@ -1,5 +1,5 @@
1
1
  module MajesticSeoApi
2
- VERSION = "1.2.1"
2
+ VERSION = "1.2.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.2.1'
6
+ s.version = '1.2.2'
7
7
 
8
8
  s.homepage = "http://developer-support.majesticseo.com/connectors/"
9
9
  s.email = "sebastian@agiley.se"
@@ -185,7 +185,7 @@ describe MajesticSeo::Api::ItemInfoResponse do
185
185
  @table.should_not be_nil
186
186
  end
187
187
 
188
- it "should have a data table with the name 'Results' containing 2 rows" do
188
+ it "should have a data table with the name 'Results' containing 1 row" do
189
189
  @table.row_count.should == 1
190
190
  end
191
191
 
@@ -203,4 +203,62 @@ describe MajesticSeo::Api::ItemInfoResponse do
203
203
  end
204
204
  end
205
205
 
206
+ #Example XML:
207
+ #<Result Code="OK" ErrorMessage="" FullError="">
208
+ # <GlobalVars FirstBackLinkDate="2007-03-14" IndexBuildDate="2012-11-05 04:42:33" IndexType="0" MostRecentBackLinkDate="2012-10-14" ServerBuild="2012-11-07 12:42:57" ServerName="PWRGURU" ServerVersion="1.0.4694.22888" UniqueIndexID="20121105044233-HISTORICAL"/>
209
+ # <DataTables Count="1">
210
+ # <DataTable Name="Results" RowsCount="1" Headers="ItemNum|Item|ResultCode|Status|ExtBackLinks|RefDomains|AnalysisResUnitsCost|ACRank|ItemType|IndexedURLs|GetTopBackLinksAnalysisResUnitsCost|DownloadBacklinksAnalysisResUnitsCost|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|CitationFlow|TrustFlow|TrustMetric">
211
+ # <Row>0|theconnection.se|OK|Found|117646|8599|117646|-1|1|8592|5000|126238|7119|4659|60|1072|6|38|3|57|0|0|False| | |False| |0|0|0| |&#13;
212
+ # Nätverk och större möjligheter till frihet. || The Connection. | |16|4|4</Row>
213
+ # </DataTable>
214
+ # </DataTables>
215
+ #</Result>
216
+ describe "response with the title column containing the separator (|) inside" do
217
+ before(:each) do
218
+ #We need to keep the XML on one line - JRuby goes bonanza otherwise
219
+ @xml = '<Result Code="OK" ErrorMessage="" FullError=""><GlobalVars FirstBackLinkDate="2007-03-14" IndexBuildDate="2012-11-05 04:42:33" IndexType="0" MostRecentBackLinkDate="2012-10-14" ServerBuild="2012-11-07 12:42:57" ServerName="PWRGURU" ServerVersion="1.0.4694.22888" UniqueIndexID="20121105044233-HISTORICAL"/><DataTables Count="1"><DataTable Name="Results" RowsCount="1" Headers="ItemNum|Item|ResultCode|Status|ExtBackLinks|RefDomains|AnalysisResUnitsCost|ACRank|ItemType|IndexedURLs|GetTopBackLinksAnalysisResUnitsCost|DownloadBacklinksAnalysisResUnitsCost|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|CitationFlow|TrustFlow|TrustMetric"><Row>0|theconnection.se|OK|Found|117646|8599|117646|-1|1|8592|5000|126238|7119|4659|60|1072|6|38|3|57|0|0|False| | |False| |0|0|0| |&#13;Nätverk och större möjligheter till frihet. || The Connection. | |16|4|4</Row></DataTable></DataTables></Result>'
220
+ @parsed = ::Nokogiri::XML(@xml, nil, "utf-8")
221
+ @response = MajesticSeo::Api::ItemInfoResponse.new(@parsed)
222
+ @table = @response.tables["Results"]
223
+ end
224
+
225
+ it "should be a valid response" do
226
+ @response.success.should == true
227
+ end
228
+
229
+ it "should not have an error message" do
230
+ @response.error_message.should == ""
231
+ end
232
+
233
+ it "should have global variables set" do
234
+ @response.global_variables["most_recent_back_link_date"].should == "2012-10-14"
235
+ @response.global_variables["index_type"].should == "0"
236
+ end
237
+
238
+ it "should have one returned data table" do
239
+ @response.tables.size.should == 1
240
+ end
241
+
242
+ it "should have a data table with the name 'Results'" do
243
+ @table.should_not be_nil
244
+ end
245
+
246
+ it "should have a data table with the name 'Results' containing 1 row" do
247
+ @table.row_count.should == 1
248
+ end
249
+
250
+ it "should have results for theconnection.se" do
251
+ row = @response.items[0]
252
+
253
+ row.url.should == "theconnection.se"
254
+ row.type.should == :root_domain
255
+ row.result_code.should == "OK"
256
+ row.success.should == true
257
+ row.status.should == "Found"
258
+ row.citation_flow.should == 16
259
+ row.trust_flow.should == 4
260
+ row.trust_metric.should == 4
261
+ end
262
+ end
263
+
206
264
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: majestic_seo_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-11-22 00:00:00.000000000 Z
13
+ date: 2012-11-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: faraday