rugalytics 0.1.4 → 0.1.5

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/CHANGELOG CHANGED
@@ -1,3 +1,5 @@
1
+ v0.1.5. fixes for bad quotes in csv causing fastercsv to fail
2
+
1
3
  v0.1.4. now use fastercsv to parse table row data
2
4
 
3
5
  v0.1.3. fixed bug due to change in google's graph csv date labels
@@ -95,7 +95,24 @@ module Rugalytics
95
95
  morph(items_attribute, items)
96
96
 
97
97
  while (values_line = lines[index]) && values_line[/^# -/].nil? && values_line.strip.size > 0
98
- values = FasterCSV.parse_line(values_line)
98
+ begin
99
+ values = FasterCSV.parse_line(values_line)
100
+ rescue Exception => e
101
+ # fix broken csv
102
+ values_line.gsub!(/,""/,',"\"')
103
+ values_line.gsub!(/"",/,'\"",')
104
+ values_line.gsub!(/^""/,'"\"')
105
+ values_line.gsub!(/""$/,'\""')
106
+ values_line.gsub!(/([^\\])""/,'\1\"')
107
+ values_line.gsub!(/\\"/,'""')
108
+ begin
109
+ values = FasterCSV.parse_line(values_line)
110
+ rescue Exception => e
111
+ values_line.gsub!(/\\"/,'')
112
+ values_line.gsub!(/"/,'')
113
+ values = FasterCSV.parse_line(values_line)
114
+ end
115
+ end
99
116
  items << Item.new(attributes, values, base_url)
100
117
  index = index.next
101
118
  end
@@ -20,6 +20,7 @@ module Rugalytics
20
20
  end
21
21
 
22
22
  @profile = Rugalytics.default_profile
23
+ @reports = {}
23
24
 
24
25
  server = HTTPServer.new :Port => 8888
25
26
 
@@ -27,9 +28,11 @@ module Rugalytics
27
28
 
28
29
  server.mount_proc("/top_content_detail_keywords") {|request, response|
29
30
  url = request.query['url']
30
- report = @profile.top_content_detail_keywords_report(:url => url)
31
- response.body = [url, report.name, report.items.to_yaml].join("\n")
32
- response['Content-Type'] = "text/plain"
31
+ @reports[url] ||= @profile.top_content_detail_keywords_report(:url => url)
32
+ items = @reports[url].items
33
+ data = {:url =>url, :report_name=>@reports[url].name, :items=>items}
34
+ response.body = data.to_json
35
+ response['Content-Type'] = "application/json"
33
36
  }
34
37
 
35
38
  trap("INT"){ server.shutdown }
data/lib/rugalytics.rb CHANGED
@@ -12,7 +12,7 @@ require 'fastercsv'
12
12
 
13
13
  # See README for usage documentation.
14
14
  module Rugalytics
15
- VERSION = "0.1.4"
15
+ VERSION = "0.1.5"
16
16
 
17
17
  FORMAT_PDF = '0' unless defined? FORMAT_PDF
18
18
  FORMAT_XML = '1' unless defined? FORMAT_XML
data/rugalytics.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{rugalytics}
5
- s.version = "0.1.4"
5
+ s.version = "0.1.5"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Rob McKinnon"]
@@ -100,7 +100,7 @@ describe Report do
100
100
  @base_url = %Q|your_site.com|
101
101
  @attributes = %Q|URL,Page Views,Unique Page Views,Time on Page,Bounce Rate,% Exit,$ Index, Keyword|
102
102
  @values1 = %Q|/,189,157,54.94957983193277,0.4862385392189026,0.37037035822868347,0.0,"ABC, Project"|
103
- @values2 = %Q|/bills,60,38,54.17307692307692,0.0,0.13333334028720856,0.0,shoes|
103
+ @values2 = %Q|/bills,60,38,54.17307692307692,0.0,0.13333334028720856,0.0,""new zealand"" house ""begins with h""|
104
104
  @csv = ['# ----------------------------------------',
105
105
  @base_url,
106
106
  'Top Content,',
@@ -119,7 +119,7 @@ describe Report do
119
119
  item1 = mock('item1')
120
120
  item2 = mock('item2')
121
121
  array1 = ['/','189','157','54.94957983193277','0.4862385392189026','0.37037035822868347','0.0',"ABC, Project"]
122
- array2 = ['/bills','60','38','54.17307692307692','0.0','0.13333334028720856','0.0','shoes']
122
+ array2 = ['/bills','60','38','54.17307692307692','0.0','0.13333334028720856','0.0','"new zealand" house "begins with h"']
123
123
  Item.should_receive(:new).with(@attributes.split(','), array1, @base_url).and_return item1
124
124
  Item.should_receive(:new).with(@attributes.split(','), array2, @base_url).and_return item2
125
125
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rugalytics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob McKinnon