rugalytics 0.0.2 → 0.0.3

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.0.3. get some rails integration going on, with config/rugalytics.yml
2
+
1
3
  v0.0.2. only use graph points that fall within given report dates
2
4
 
3
5
  v0.0.1. initial release
data/Manifest CHANGED
@@ -1,6 +1,5 @@
1
1
  CHANGELOG
2
2
  lib/rugalytics/account.rb
3
- lib/rugalytics/analytics.rb
4
3
  lib/rugalytics/connection.rb
5
4
  lib/rugalytics/graph.rb
6
5
  lib/rugalytics/item.rb
@@ -11,6 +10,7 @@ LICENSE
11
10
  Manifest
12
11
  README
13
12
  README.rdoc
13
+ rugalytics.yml.example
14
14
  spec/fixtures/analytics_account_find_all.html
15
15
  spec/fixtures/analytics_profile_find_all.html
16
16
  spec/fixtures/dashboard_report_webgroup.xml
@@ -12,7 +12,10 @@ module Rugalytics
12
12
  morph(attribute, value)
13
13
  end
14
14
 
15
- self.url = "http://#{base_url}#{url}" if respond_to?(:url)
15
+ if respond_to?(:url)
16
+ self.path = url
17
+ self.url = "http://#{base_url}#{url}"
18
+ end
16
19
  end
17
20
  end
18
21
 
data/lib/rugalytics.rb CHANGED
@@ -7,10 +7,11 @@ require 'hpricot'
7
7
  require 'activesupport'
8
8
  require 'google/base'
9
9
  require 'morph'
10
+ require 'yaml'
10
11
 
11
12
  # See README for usage documentation.
12
13
  module Rugalytics
13
- VERSION = "0.0.2"
14
+ VERSION = "0.0.3"
14
15
 
15
16
  FORMAT_PDF = '0' unless defined? FORMAT_PDF
16
17
  FORMAT_XML = '1' unless defined? FORMAT_XML
@@ -29,16 +30,48 @@ module Rugalytics
29
30
  class InvalidCredentials < Exception
30
31
  end
31
32
 
32
- def self.login username, password
33
- Google::Base.establish_connection(username, password)
34
- end
33
+ class << self
34
+ def login username, password
35
+ Google::Base.establish_connection(username, password)
36
+ end
37
+
38
+ def find_profile account_id_or_name, profile_id_or_name=nil
39
+ begin
40
+ Profile.find account_id_or_name, profile_id_or_name
41
+ rescue NameError => e
42
+ raise 'No connection - call Rugalytics.login(<username>,<password>)'
43
+ end
44
+ end
45
+
46
+ def default_profile
47
+ config_setup '.' unless config
48
+ if config && config.account
49
+ begin
50
+ find_profile config.account, config.profile
51
+ rescue Exception => e
52
+ if e.to_s.include? 'No connection'
53
+ login config.username, config.password if config.username && config.password
54
+ find_profile config.account, config.profile
55
+ end
56
+ end
57
+ end
58
+ end
35
59
 
36
- def self.find_profile account_id_or_name, profile_id_or_name=nil
37
- begin
38
- Profile.find account_id_or_name, profile_id_or_name
39
- rescue NameError => e
40
- raise 'No connection - call Rugalytics.login(<username>,<password>)'
60
+ def config
61
+ @config
41
62
  end
63
+
64
+ def config_setup root
65
+ config_file = "#{root}/config/rugalytics.yml"
66
+ config_file = "#{root}/rugalytics.yml" unless File.exist? config_file
67
+ @config = load_config(config_file) if File.exist? config_file
68
+ end
69
+
70
+ def load_config filename
71
+ hash = YAML.load_file(filename)
72
+ OpenStruct.new(hash)
73
+ end
74
+
42
75
  end
43
76
  end
44
77
 
@@ -47,4 +80,6 @@ require File.dirname(__FILE__) + '/rugalytics/account'
47
80
  require File.dirname(__FILE__) + '/rugalytics/profile'
48
81
  require File.dirname(__FILE__) + '/rugalytics/report'
49
82
  require File.dirname(__FILE__) + '/rugalytics/item'
50
- require File.dirname(__FILE__) + '/rugalytics/graph'
83
+ require File.dirname(__FILE__) + '/rugalytics/graph'
84
+
85
+ # Rugalytics.config_setup(RAILS_ROOT) if defined?(RAILS_ROOT) && RAILS_ROOT
data/rugalytics.gemspec CHANGED
@@ -1,20 +1,20 @@
1
1
 
2
- # Gem::Specification for Rugalytics-0.0.2
2
+ # Gem::Specification for Rugalytics-0.0.3
3
3
  # Originally generated by Echoe
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = %q{rugalytics}
7
- s.version = "0.0.2"
7
+ s.version = "0.0.3"
8
8
 
9
9
  s.specification_version = 2 if s.respond_to? :specification_version=
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.authors = ["Rob McKinnon"]
13
- s.date = %q{2008-06-07}
13
+ s.date = %q{2008-06-16}
14
14
  s.description = %q{Rugalytics is a Ruby API for Google Analytics.}
15
15
  s.email = ["rob ~@nospam@~ rubyforge.org"]
16
16
  s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README"]
17
- s.files = ["CHANGELOG", "lib/rugalytics/account.rb", "lib/rugalytics/analytics.rb", "lib/rugalytics/connection.rb", "lib/rugalytics/graph.rb", "lib/rugalytics/item.rb", "lib/rugalytics/profile.rb", "lib/rugalytics/report.rb", "lib/rugalytics.rb", "LICENSE", "Manifest", "README", "README.rdoc", "spec/fixtures/analytics_account_find_all.html", "spec/fixtures/analytics_profile_find_all.html", "spec/fixtures/dashboard_report_webgroup.xml", "spec/lib/rugalytics/account_spec.rb", "spec/lib/rugalytics/graph_spec.rb", "spec/lib/rugalytics/item_spec.rb", "spec/lib/rugalytics/profile_spec.rb", "spec/lib/rugalytics/report_spec.rb", "spec/lib/rugalytics_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "rugalytics.gemspec"]
17
+ s.files = ["CHANGELOG", "lib/rugalytics/account.rb", "lib/rugalytics/connection.rb", "lib/rugalytics/graph.rb", "lib/rugalytics/item.rb", "lib/rugalytics/profile.rb", "lib/rugalytics/report.rb", "lib/rugalytics.rb", "LICENSE", "Manifest", "README", "README.rdoc", "rugalytics.yml.example", "spec/fixtures/analytics_account_find_all.html", "spec/fixtures/analytics_profile_find_all.html", "spec/fixtures/dashboard_report_webgroup.xml", "spec/lib/rugalytics/account_spec.rb", "spec/lib/rugalytics/graph_spec.rb", "spec/lib/rugalytics/item_spec.rb", "spec/lib/rugalytics/profile_spec.rb", "spec/lib/rugalytics/report_spec.rb", "spec/lib/rugalytics_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "rugalytics.gemspec"]
18
18
  s.has_rdoc = true
19
19
  s.homepage = %q{}
20
20
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Rugalytics", "--main", "README", "--inline-source"]
@@ -26,7 +26,7 @@ Gem::Specification.new do |s|
26
26
  s.add_dependency(%q<hpricot>, [">= 0.6"])
27
27
  s.add_dependency(%q<activesupport>, [">= 2.0.2"])
28
28
  s.add_dependency(%q<googlebase>, [">= 0.2.0"])
29
- s.add_dependency(%q<morph>, [">= 0.1.5"])
29
+ s.add_dependency(%q<morph>, [">= 0.2.0"])
30
30
  end
31
31
 
32
32
 
@@ -44,7 +44,7 @@ end
44
44
  # m.rubyforge_name = "rugalytics"
45
45
  # m.rdoc_options << '--inline-source'
46
46
  # m.rdoc_pattern = ["README", "CHANGELOG", "LICENSE"]
47
- # m.dependencies = ["hpricot >=0.6", "activesupport >=2.0.2", "googlebase >=0.2.0", "morph >=0.1.5"]
47
+ # m.dependencies = ["hpricot >=0.6", "activesupport >=2.0.2", "googlebase >=0.2.0", "morph >=0.2.0"]
48
48
  # end
49
49
  #
50
50
  # rescue LoadError
@@ -0,0 +1,5 @@
1
+ ---
2
+ account: <account_name>
3
+ profile: <profile_name>
4
+ username: <user_name>
5
+ password: <pass_w>
@@ -12,6 +12,7 @@ describe Rugalytics::Item, 'when creating' do
12
12
  item = Rugalytics::Item.new @attributes.split(','), @values.split(','), @url
13
13
 
14
14
  item.url.should == 'http://theyworkforyou.co.nz/'
15
+ item.path.should == '/'
15
16
  item.page_views.should == '189'
16
17
  item.unique_page_views.should == '157'
17
18
  item.time_on_page.should == '54.94957983193277'
@@ -2,32 +2,114 @@ require File.dirname(__FILE__) + '/../spec_helper.rb'
2
2
 
3
3
  describe Rugalytics do
4
4
 
5
- describe "finding a profile by its account name and profile name" do
6
- it 'should return the match' do
7
- account_name = 'your_site.com'
8
- profile_name = 'blog.your_site.com'
9
- profile = mock('profile')
10
- Rugalytics::Profile.should_receive(:find).with(account_name, profile_name).and_return profile
11
- Rugalytics::find_profile(account_name, profile_name).should == profile
5
+ describe "finding a profile" do
6
+
7
+ describe "by its account name and profile name" do
8
+ it 'should return the match' do
9
+ account_name = 'your_site.com'
10
+ profile_name = 'blog.your_site.com'
11
+ profile = mock('profile')
12
+ Rugalytics::Profile.should_receive(:find).with(account_name, profile_name).and_return profile
13
+ Rugalytics::find_profile(account_name, profile_name).should == profile
14
+ end
15
+ end
16
+
17
+ describe "by its account_id and profile_id" do
18
+ it 'should return the match' do
19
+ account_id = 1254221
20
+ profile_id = 12341234
21
+ profile = mock('profile')
22
+ Rugalytics::Profile.should_receive(:find).with(account_id, profile_id).and_return profile
23
+ Rugalytics::find_profile(account_id, profile_id).should == profile
24
+ end
25
+ end
26
+
27
+ describe "by passing single name when account and profile name are the same" do
28
+ it 'should return the match' do
29
+ name = 'your_site.com'
30
+ profile = mock('profile')
31
+ Rugalytics::Profile.should_receive(:find).with(name, nil).and_return profile
32
+ Rugalytics::find_profile(name).should == profile
33
+ end
12
34
  end
13
35
  end
14
36
 
15
- describe "finding a profile by its account_id and profile_id" do
16
- it 'should return the match' do
17
- account_id = 1254221
18
- profile_id = 12341234
19
- profile = mock('profile')
20
- Rugalytics::Profile.should_receive(:find).with(account_id, profile_id).and_return profile
21
- Rugalytics::find_profile(account_id, profile_id).should == profile
37
+ describe 'when RAILS_ROOT is nil' do
38
+
39
+ it 'should not call config_setup method' do
40
+ Rugalytics.should_not_receive(:config_setup)
41
+ load(File.dirname(__FILE__) + '/../../lib/rugalytics.rb')
42
+ end
43
+ end
44
+
45
+ describe 'when RAILS_ROOT is defined and not nil' do
46
+
47
+ before do
48
+ @rails_root = '.'
49
+ @config_file = "#{@rails_root}/config/rugalytics.yml"
50
+ @alt_config_file = "#{@rails_root}/rugalytics.yml"
51
+ end
52
+
53
+ it 'should look for rugalytics.yml file' do
54
+ File.should_receive(:exist?).with(@config_file).and_return false
55
+ File.should_receive(:exist?).with(@alt_config_file).and_return false
56
+ Rugalytics.config_setup(@rails_root)
57
+ end
58
+
59
+ describe 'and config/rugalytics.yml is present' do
60
+ before do
61
+ File.stub!(:exist?).with(@config_file).and_return true
62
+ end
63
+
64
+ it 'should load config' do
65
+ Rugalytics.should_receive(:load_config).with(@config_file).and_return mock('config')
66
+ Rugalytics.config_setup(@rails_root)
67
+ end
68
+
69
+ it 'should save username and password if in credentials' do
70
+ user = 'user'
71
+ password = 'password'
72
+ Rugalytics.stub!(:load_config).and_return OpenStruct.new({:username => user, :password => password})
73
+ Rugalytics.config_setup(@rails_root)
74
+ Rugalytics.config.username.should == user
75
+ Rugalytics.config.password.should == password
76
+ end
77
+
78
+ it 'should save profile if in credentials' do
79
+ profile = 'profile'
80
+ account = 'account'
81
+ Rugalytics.stub!(:load_config).and_return OpenStruct.new({:profile => profile, :account => account})
82
+ Rugalytics.config_setup(@rails_root)
83
+ Rugalytics.config.account.should == account
84
+ Rugalytics.config.profile.should == profile
85
+ end
86
+
87
+ it 'should load config file using Yaml' do
88
+ file = 'file'
89
+ hash = mock('hash')
90
+ YAML.should_receive(:load_file).with(file).and_return hash
91
+ OpenStruct.should_receive(:new).with(hash)
92
+ Rugalytics.load_config(file)
93
+ end
94
+
95
+ # it 'should call config_setup method' do
96
+ # RAILS_ROOT = '.'
97
+ # Rugalytics.should_receive(:config_setup).with(RAILS_ROOT)
98
+ # load(File.dirname(__FILE__) + '/../../lib/rugalytics.rb')
99
+ # RAILS_ROOT = nil
100
+ # end
101
+
22
102
  end
23
103
  end
24
104
 
25
- describe "finding a profile by passing single name when account and profile name are the same" do
26
- it 'should return the match' do
27
- name = 'your_site.com'
105
+ describe "finding default profile when config has been set" do
106
+ it 'should find profile using config' do
28
107
  profile = mock('profile')
29
- Rugalytics::Profile.should_receive(:find).with(name, nil).and_return profile
30
- Rugalytics::find_profile(name).should == profile
108
+ profile_name = 'profile'
109
+ account = 'account'
110
+ Rugalytics.stub!(:config).and_return mock('config', :account=>account, :profile=>profile_name)
111
+ Rugalytics.should_receive(:find_profile).with(account,profile_name).and_return profile
112
+ Rugalytics.default_profile.should == profile
31
113
  end
32
114
  end
33
115
 
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.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob McKinnon
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-06-07 00:00:00 +01:00
12
+ date: 2008-06-16 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -46,7 +46,7 @@ dependencies:
46
46
  requirements:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 0.1.5
49
+ version: 0.2.0
50
50
  version:
51
51
  description: Rugalytics is a Ruby API for Google Analytics.
52
52
  email:
@@ -62,7 +62,6 @@ extra_rdoc_files:
62
62
  files:
63
63
  - CHANGELOG
64
64
  - lib/rugalytics/account.rb
65
- - lib/rugalytics/analytics.rb
66
65
  - lib/rugalytics/connection.rb
67
66
  - lib/rugalytics/graph.rb
68
67
  - lib/rugalytics/item.rb
@@ -73,6 +72,7 @@ files:
73
72
  - Manifest
74
73
  - README
75
74
  - README.rdoc
75
+ - rugalytics.yml.example
76
76
  - spec/fixtures/analytics_account_find_all.html
77
77
  - spec/fixtures/analytics_profile_find_all.html
78
78
  - spec/fixtures/dashboard_report_webgroup.xml
File without changes