rugalytics 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
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