eotb 0.5.16 → 0.5.18

Sign up to get free protection for your applications and to get access to all the features.
@@ -91,6 +91,10 @@ Register hashes and nested hashes
91
91
  You can register any type of objects
92
92
 
93
93
  Eotb.register_event(Object.new, :fed, {:pet => Dog.new})
94
+
95
+ == Using Query API
96
+
97
+ eotb version >= 0.5.17 supports new feature which let's you incorporate reports in your application. For more info please vist: http://beta.beholder.ragnarson.com/doc/how_to_use_query_api
94
98
 
95
99
  == Copyright
96
100
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.16
1
+ 0.5.18
data/bin/eotb CHANGED
@@ -26,7 +26,7 @@ class EotbConfigurator
26
26
 
27
27
  def ensure_parameter_was_set
28
28
  if !@app[:apikey]
29
- puts "Must pass --api-key or create config/initializers/eotb.rb"
29
+ puts "Must pass --api-key or file config/initializers/eotb.rb already exists"
30
30
  exit
31
31
  end
32
32
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{eotb}
8
- s.version = "0.5.16"
8
+ s.version = "0.5.18"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ragnarson"]
12
- s.date = %q{2010-10-31}
12
+ s.date = %q{2010-11-23}
13
13
  s.default_executable = %q{eotb}
14
14
  s.description = %q{Rails plugin which allow you easily track and observe your apps}
15
15
  s.email = %q{bartlomiej.kozal@ragnarson.com}
@@ -33,10 +33,12 @@ Gem::Specification.new do |s|
33
33
  "generators/eotb/eotb_generator.rb",
34
34
  "generators/eotb/templates/initializer.rb",
35
35
  "lib/eotb.rb",
36
+ "lib/eotb/report.rb",
36
37
  "lib/generators/eotb/USAGE",
37
38
  "lib/generators/eotb/eotb_generator.rb",
38
39
  "lib/timer.rb",
39
40
  "spec/eotb_spec.rb",
41
+ "spec/report_spec.rb",
40
42
  "spec/spec_helper.rb"
41
43
  ]
42
44
  s.homepage = %q{http://github.com/Ragnarson/eotb_rails_plugin}
@@ -46,7 +48,8 @@ Gem::Specification.new do |s|
46
48
  s.summary = %q{Rails plugin which allow you easily track and observe your apps}
47
49
  s.test_files = [
48
50
  "spec/spec_helper.rb",
49
- "spec/eotb_spec.rb"
51
+ "spec/eotb_spec.rb",
52
+ "spec/report_spec.rb"
50
53
  ]
51
54
 
52
55
  if s.respond_to? :specification_version then
@@ -2,14 +2,12 @@ class EotbGenerator < Rails::Generator::Base
2
2
 
3
3
  def add_options!(opt)
4
4
  opt.on('-k', '--api-key=key', String, "Your Beholder API key") {|v| options[:api_key] = v}
5
- opt.on('-l', '--login=login', String, "Your Beholder app login") {|v| options[:email] = v}
6
- opt.on('-d', '--password=password', String, "Your Beholder app password") {|v| options[:password] = v}
7
5
  end
8
6
 
9
7
  def manifest
10
8
  record do |m|
11
9
  ensure_parameter_was_set
12
- m.template "initializer.rb", "config/initializers/eotb.rb", :assigns => {:api_key => api_key_exp, :login => login_exp, :password => password_exp}
10
+ m.template "initializer.rb", "config/initializers/eotb.rb", :assigns => {:api_key => api_key_exp }
13
11
  end
14
12
 
15
13
  end
@@ -17,24 +15,11 @@ class EotbGenerator < Rails::Generator::Base
17
15
  def api_key_exp
18
16
  "#{options[:api_key]}"
19
17
  end
20
- def login_exp
21
- "#{options[:login]}"
22
- end
23
- def password_exp
24
- "#{options[:password]}"
25
- end
26
-
18
+
27
19
  def ensure_parameter_was_set
28
20
  if !options[:api_key]
29
21
  puts "Must pass --api-key='your_api_key' or -k 'your_api_key'"
30
22
  exit
31
- elsif !options[:login]
32
- puts "Must pass --login='app_login' or -l 'app_login'"
33
- exit
34
- elsif !options[:password]
35
- puts "Must pass --password='app_password' or -d 'app_password'"
36
- exit
37
- end
38
23
  end
39
24
 
40
25
  end
@@ -1,3 +1,4 @@
1
1
  require 'eotb'
2
+ require 'eotb/report'
2
3
 
3
- Eotb.configure("<%= api_key_exp %>", "<%= login_exp %>", "<%= password_exp %>")
4
+ Eotb.configure("<%= api_key_exp %>")
@@ -10,28 +10,36 @@ class Eotb
10
10
  @@api_key = nil
11
11
  METHODS = [:to_actor, :to_subject, :to_json, :to_hash, :inspect]
12
12
 
13
- def self.configure(*params) #(api_key, email, password)
13
+ def self.configure(*params)
14
14
  @@host = "beta.beholder.ragnarson.com"
15
15
  @@port = '80'
16
16
  @@api_key = params[0] if params.size > 0
17
17
  @@reset = 100
18
- if params.size == 1 # DEPRECATED - remove on Eotb 0.5.17
19
- puts 'DEPRECATION WARNING'
20
- puts 'Eotb.configure(api_key) -- method will be removed in eotb 0.5.17'
18
+ if params.size == 1
19
+
21
20
  @@uri = URI.parse('http://' + @@host + ':' + @@port + '/events/' + @@api_key)
22
21
  @@post = Net::HTTP::Post.new(@@uri.path)
23
- elsif params.size == 4 # DEPRECATED - remove on Eotb 0.5.17
24
- puts 'DEPRECATION WARNING'
25
- puts 'Eotb.configure(api_key, events, host, port) -- method will be removed in eotb 0.5.17'
22
+
23
+ elsif params.size == 4 # DEPRECATED - remove on Eotb 0.5.19
24
+
26
25
  @@host = params[2]
27
26
  @@port = params[3]
28
27
  params[1].to_i >= 1 ? @@reset = params[1].to_i : @@reset = 1
29
28
  @@uri = URI.parse('http://' + @@host + ':' + @@port + '/events/' + @@api_key)
30
29
  @@post = Net::HTTP::Post.new(@@uri.path)
31
- elsif params.size == 3
30
+ puts 'DEPRECATION WARNING'
31
+ puts 'Eotb.configure(api_key, events, host, port) -- method will be removed in eotb 0.5.19'
32
+
33
+ elsif params.size == 3 # DEPRECATED - remove on Eotb 0.5.19
34
+
32
35
  @@uri = URI.parse('http://' + @@host + ':' + @@port + '/events/' + @@api_key)
33
36
  @@post = Net::HTTP::Post.new(@@uri.path)
37
+ @@login = params[1]
38
+ @@pass = params[2]
34
39
  @@post.basic_auth params[1], params[2]
40
+ puts 'DEPRECATION WARNING'
41
+ puts 'Eotb.configure(api_key) -- method will be removed in eotb 0.5.19'
42
+
35
43
  else
36
44
  raise ArgumentError, 'Wrong number of arguments. Check Eotb.configure parameters!'
37
45
  end
@@ -52,6 +60,12 @@ class Eotb
52
60
  def self.api_key
53
61
  @@api_key
54
62
  end
63
+ def self.host_port
64
+ [@@host, @@port]
65
+ end
66
+ def self.login_password
67
+ [@@login, @@pass]
68
+ end
55
69
  def self.events
56
70
  @@events
57
71
  end
@@ -0,0 +1,89 @@
1
+ require 'ostruct'
2
+ class Eotb::Report
3
+
4
+ def self.find(query)
5
+ configure 'find'
6
+ hash = {}
7
+ query.each_pair { |k, v|
8
+ hash.merge!(hash_format(v, k))
9
+ }
10
+ @@post.set_form_data(hash)
11
+ array = JSON.parse send
12
+ array.map { |a| OpenStruct.new(a) }.sort {|x ,y| y.created_on <=> x.created_on}
13
+ end
14
+
15
+ def self.latest
16
+ configure 'latest'
17
+ array = JSON.parse(send)
18
+ array.map { |a| OpenStruct.new(a) }
19
+ end
20
+
21
+ def self.latest_daily
22
+ configure 'latest_daily'
23
+ array = JSON.parse(send)
24
+ array.map { |a| OpenStruct.new(a) }
25
+ end
26
+
27
+ def self.latest_weekly
28
+ configure 'latest_weekly'
29
+ array = JSON.parse(send)
30
+ array.map { |a| OpenStruct.new(a) }
31
+ end
32
+
33
+ private
34
+
35
+ def self.configure(option)
36
+ @@uri = URI.parse('http://' + Eotb.host_port[0] + ':' + Eotb.host_port[1] + '/gem/' + Eotb.api_key + '/' + option )
37
+ @@post = Net::HTTP::Post.new(@@uri.path)
38
+ end
39
+
40
+ def self.send()
41
+ res = {}
42
+ begin
43
+ Timeout::timeout(2) {
44
+ res = Net::HTTP.new(@@uri.host, @@uri.port).start.request(@@post)
45
+ }
46
+ rescue => e
47
+ logger = Logger.new("log/#{ENV['RAILS_ENV']}.log")
48
+ logger.error "ERROR eotb gem: " + e.to_s
49
+ rescue Timeout::Error => e
50
+ logger = Logger.new("log/#{ENV['RAILS_ENV']}.log")
51
+ logger.error "ERROR eotb gem: " + e.to_s
52
+ end
53
+ res.body
54
+ end
55
+
56
+ METHODS = [:to_json, :to_hash, :inspect]
57
+ def self.value_format(value)
58
+ value.send METHODS.find { |m| m if value.respond_to? m }
59
+ end
60
+
61
+ def self.hash_flatten(hash)
62
+ hash.inject({}) do |h, (k, v)|
63
+ if v.is_a?(Hash)
64
+ hash_flatten(v).each do |sk, sv|
65
+ h[[k] + sk] = sv
66
+ end
67
+ else
68
+ k = k ? [k] : []
69
+ h[k] = v
70
+ end
71
+ h
72
+ end
73
+ end
74
+
75
+ def self.hash_format(hash, type)
76
+ if hash.is_a?(Hash)
77
+ h = hash_flatten(hash).map do |k, v|
78
+ key = k.map{ |e| "[#{e}]" }.join
79
+ "\"find[#{type}]#{key}\" => #{value_format(v)}"
80
+
81
+ end.join(', ')
82
+ else
83
+ h = "\"find[#{type}]\" => #{value_format(hash)}"
84
+ end
85
+ eval "{#{h.to_s}}"
86
+ end
87
+
88
+
89
+ end
@@ -7,8 +7,6 @@ class EotbGenerator < Rails::Generators::Base
7
7
  source_root File.expand_path('../../../../generators/eotb/templates', __FILE__)
8
8
 
9
9
  class_option :api_key, :aliases => "-k", :type => :string, :desc => "Your Beholder API key"
10
- class_option :login, :aliases => "-l", :type => :string, :desc => "Your Beholder app login"
11
- class_option :password, :aliases => "-d", :type => :string, :desc => "Your Beholder app password"
12
10
 
13
11
  def generator
14
12
  ensure_parameters_was_set
@@ -30,13 +28,7 @@ class EotbGenerator < Rails::Generators::Base
30
28
  def api_key_exp
31
29
  "#{options[:api_key]}"
32
30
  end
33
- def login_exp
34
- "#{options[:login]}"
35
- end
36
- def password_exp
37
- "#{options[:password]}"
38
- end
39
-
31
+
40
32
  def generate_initializer
41
33
  template 'initializer.rb', 'config/initializers/eotb.rb'
42
34
  end
@@ -45,14 +37,8 @@ class EotbGenerator < Rails::Generators::Base
45
37
  if !options[:api_key]
46
38
  puts "Must pass --api-key='your_api_key' or -k 'your_api_key'"
47
39
  exit
48
- elsif !options[:email]
49
- puts "Must pass --email='app_email' or -l 'app_email'"
50
- exit
51
- elsif !options[:password]
52
- puts "Must pass --password='app_password' or -d 'app_password'"
53
- exit
54
40
  end
55
- File.exists?('config/initializers/eotb.rb') && options[:api_key].empty? && options[:login].empty? && options[:password].empty?
41
+ File.exists?('config/initializers/eotb.rb') && options[:api_key].empty?
56
42
  end
57
43
 
58
44
  end
@@ -2,7 +2,18 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
3
  describe Eotb do
4
4
 
5
- describe "shoud format objects" do
5
+ # describe "version" do
6
+ # it "configure with 3 parameters should return deprecation warning" do
7
+ # text = <<-EOF
8
+ # DEPRECATION WARNING
9
+ # Eotb.configure(api_key, events, host, port) -- method will be removed in eotb 0.5.17
10
+ # EOF
11
+ # Eotb.configure("test_api_key", 'login', 'passwords').should == text
12
+ # end
13
+ #
14
+ # end
15
+
16
+ describe "should format objects" do
6
17
  before do
7
18
  @@counter = 0
8
19
  end
@@ -25,7 +36,7 @@ describe Eotb do
25
36
 
26
37
  before(:each) do
27
38
  @response = "200"
28
- Eotb.configure("test_api_key", 'email', 'passwords')
39
+ Eotb.configure("test_api_key")
29
40
  @@counter = 100
30
41
  Net::HTTP.stub(:new) { Net::HTTP }
31
42
  Net::HTTP.stub(:start) { Net::HTTP }
@@ -70,7 +81,7 @@ describe Eotb do
70
81
 
71
82
  before(:each) do
72
83
  @response = "200"
73
- Eotb.configure("0"*40, 'email', 'passwords')
84
+ Eotb.configure("0"*40)
74
85
  @@counter = 96
75
86
  Net::HTTP.stub(:new) { Net::HTTP }
76
87
  Net::HTTP.stub(:start) { Net::HTTP }
@@ -82,7 +93,6 @@ describe Eotb do
82
93
  Eotb.register_event("actor", "action", {:username => "John"}).should == @response
83
94
  end
84
95
 
85
-
86
96
  end
87
97
 
88
98
  end
@@ -0,0 +1,39 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe Eotb::Report do
4
+
5
+ describe "shoud format objects" do
6
+ before(:each) do
7
+ @response = "200"
8
+ Eotb.configure("test_api_key")
9
+ @@counter = 100
10
+ Net::HTTP.stub(:new) { Net::HTTP }
11
+ Net::HTTP.stub(:start) { Net::HTTP }
12
+ Net::HTTP.stub(:request) { "200" }
13
+ Eotb::Report.stub(:send) { [] }
14
+ JSON.stub(:parse) { [{:name => "Example"}] }
15
+ end
16
+
17
+ it "should format with correct type " do
18
+ Eotb::Report.hash_format('2010-10-05', :created_on).should == {"find[created_on]" => "2010-10-05"}
19
+ end
20
+
21
+ it "find should return OpenStruct objects in an array" do
22
+ Eotb::Report.find({:name => "Example name"}).should == [OpenStruct.new({:name => "Example"})]
23
+ end
24
+
25
+ it "latest should return OpenStruct objects in an array" do
26
+ Eotb::Report.latest.should == [OpenStruct.new({:name => "Example"})]
27
+ end
28
+
29
+ it "latest_daily should return OpenStruct objects in an array" do
30
+ Eotb::Report.latest_daily.should == [OpenStruct.new({:name => "Example"})]
31
+ end
32
+
33
+ it "latest_weekly should return OpenStruct objects in an array" do
34
+ Eotb::Report.latest_weekly.should == [OpenStruct.new({:name => "Example"})]
35
+ end
36
+
37
+ end
38
+
39
+ end
@@ -1,6 +1,9 @@
1
1
  $LOAD_PATH.unshift(File.dirname(__FILE__))
2
2
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
+ require 'rubygems'
4
+ require 'activeresource'
3
5
  require 'eotb'
6
+ require 'eotb/report'
4
7
  require 'spec'
5
8
  require 'spec/autorun'
6
9
  Spec::Runner.configure do |config|
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eotb
3
3
  version: !ruby/object:Gem::Version
4
- hash: 43
4
+ hash: 47
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 5
9
- - 16
10
- version: 0.5.16
9
+ - 18
10
+ version: 0.5.18
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ragnarson
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-31 00:00:00 +02:00
18
+ date: 2010-11-23 00:00:00 +01:00
19
19
  default_executable: eotb
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -90,10 +90,12 @@ files:
90
90
  - generators/eotb/eotb_generator.rb
91
91
  - generators/eotb/templates/initializer.rb
92
92
  - lib/eotb.rb
93
+ - lib/eotb/report.rb
93
94
  - lib/generators/eotb/USAGE
94
95
  - lib/generators/eotb/eotb_generator.rb
95
96
  - lib/timer.rb
96
97
  - spec/eotb_spec.rb
98
+ - spec/report_spec.rb
97
99
  - spec/spec_helper.rb
98
100
  has_rdoc: true
99
101
  homepage: http://github.com/Ragnarson/eotb_rails_plugin
@@ -132,3 +134,4 @@ summary: Rails plugin which allow you easily track and observe your apps
132
134
  test_files:
133
135
  - spec/spec_helper.rb
134
136
  - spec/eotb_spec.rb
137
+ - spec/report_spec.rb