eotb 0.1.5 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.5
1
+ 0.2.0
data/eotb.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{eotb}
8
- s.version = "0.1.5"
8
+ s.version = "0.2.0"
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-07-04}
12
+ s.date = %q{2010-07-05}
13
13
  s.description = %q{Rails plugin which allow you easily track and observe your apps}
14
14
  s.email = %q{bartlomiej.kozal@ragnarson.com}
15
15
  s.extra_rdoc_files = [
@@ -26,10 +26,10 @@ Gem::Specification.new do |s|
26
26
  "Rakefile",
27
27
  "VERSION",
28
28
  "eotb.gemspec",
29
- "lib/actor.rb",
30
29
  "lib/eotb.rb",
30
+ "lib/eotb_actor.rb",
31
+ "lib/eotb_subject.rb",
31
32
  "lib/object.rb",
32
- "lib/subject.rb",
33
33
  "spec/eotb_spec.rb",
34
34
  "spec/spec_helper.rb"
35
35
  ]
data/lib/eotb.rb CHANGED
@@ -4,25 +4,27 @@ require 'uri'
4
4
  require 'json'
5
5
 
6
6
  require File.expand_path(File.dirname(__FILE__) + '/object')
7
- require File.expand_path(File.dirname(__FILE__) + '/actor')
8
- require File.expand_path(File.dirname(__FILE__) + '/subject')
7
+ require File.expand_path(File.dirname(__FILE__) + '/eotb_actor')
8
+ require File.expand_path(File.dirname(__FILE__) + '/eotb_subject')
9
9
 
10
10
  class Eotb
11
11
 
12
12
  def self.configure(api_key, host = '127.0.0.1', port = '3000')
13
13
  @@uri = URI.parse('http://' + host + ':' + port + '/apps/' + api_key + '/events')
14
- @@http = Net::HTTP::Post.new(@@uri.path)
14
+ @@post = Net::HTTP::Post.new(@@uri.path)
15
15
  @@api_key = api_key
16
16
  end
17
17
 
18
- def self.register_event(actor, action, subject)
18
+ def self.register_event(actor, action, subject = {})
19
19
  api_key = { "event[app_id]" => @@api_key }
20
20
  action = { "event[action]" => action }
21
- # TODO what if user don't send hash?
22
- to_post = api_key.merge(actor).merge(action).merge(subject)
23
- @@http.set_form_data(to_post)
21
+ actor = { "event[actor]" => actor }
24
22
 
25
- Net::HTTP.new(@@uri.host, @@uri.port).start { |http| http.request(@@http) }
23
+ subject.each { |key, value| subject["event[subject][#{key.to_s}]"] = value.to_s }
24
+
25
+ event = api_key.merge(actor).merge(action).merge(subject)
26
+ @@post.set_form_data(event)
27
+ Net::HTTP.new(@@uri.host, @@uri.port).start.request(@@post)
26
28
  end
27
29
 
28
30
  end
data/lib/eotb_actor.rb ADDED
@@ -0,0 +1,13 @@
1
+ class EotbActor
2
+
3
+ attr_reader :actor
4
+
5
+ def initialize(object)
6
+ @actor = object.inspect
7
+ end
8
+
9
+ def inspect
10
+ @actor.inspect
11
+ end
12
+
13
+ end
@@ -0,0 +1,22 @@
1
+ class EotbSubject
2
+
3
+ attr_reader :subject
4
+
5
+ def initialize(object)
6
+ @subject = {}
7
+ @subject.merge(object).each { |key, value| subject[key] = value.inspect }
8
+ end
9
+
10
+ def to_json
11
+ @subject = JSON.generate(@subject)
12
+ end
13
+
14
+ # def to_hash
15
+ # @subject = JSON.parse(@subject)
16
+ # end
17
+
18
+ def inspect
19
+ @subject.inspect
20
+ end
21
+
22
+ end
data/lib/object.rb CHANGED
@@ -1,11 +1,15 @@
1
1
  class Object
2
2
 
3
3
  def to_actor
4
- Actor.new(self).actor
4
+ EotbActor.new(self).actor
5
5
  end
6
6
 
7
+ end
8
+
9
+ class Hash
10
+
7
11
  def to_subject
8
- Subject.new(self).subject
12
+ EotbSubject.new(self).subject
9
13
  end
10
14
 
11
15
  end
data/spec/eotb_spec.rb CHANGED
@@ -2,6 +2,33 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
3
  describe Eotb do
4
4
 
5
+ before(:each) do
6
+ @response = "302"
7
+ Eotb.configure("4c30fc21b3dfae0b18000078")
8
+ end
5
9
 
10
+ it "should register only two arguments" do
11
+ Eotb.register_event("actor_string", "action_string").code.should == @response
12
+ end
13
+
14
+ it "should register default arguments (strings)" do
15
+ Eotb.register_event("actor_string", "action_string", {:username => "John"}).code.should == @response
16
+ end
17
+
18
+ it "should register default arguments (symbols)" do
19
+ Eotb.register_event(:actor_symbol, :action_symbol, {:username => "John"}).code.should == @response
20
+ end
21
+
22
+ it "should register objects with to_actor and to_subject" do
23
+ Eotb.register_event(Object.new.to_actor, :action_symbol, {:username => Object.new}.to_subject).code.should == @response
24
+ end
25
+
26
+ it "should generate JSON from subject" do
27
+ {:username => "John"}.to_subject.to_json.should == JSON.generate({:username => "String"})
28
+ end
29
+
30
+ # it "should parse JSON from subject" do
31
+ # {:username => "John"}.to_subject.to_json.to_hash.should == JSON.generate({:username => "String"})
32
+ # end
6
33
 
7
34
  end
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: 17
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 1
9
- - 5
10
- version: 0.1.5
8
+ - 2
9
+ - 0
10
+ version: 0.2.0
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-07-04 00:00:00 +02:00
18
+ date: 2010-07-05 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -69,10 +69,10 @@ files:
69
69
  - Rakefile
70
70
  - VERSION
71
71
  - eotb.gemspec
72
- - lib/actor.rb
73
72
  - lib/eotb.rb
73
+ - lib/eotb_actor.rb
74
+ - lib/eotb_subject.rb
74
75
  - lib/object.rb
75
- - lib/subject.rb
76
76
  - spec/eotb_spec.rb
77
77
  - spec/spec_helper.rb
78
78
  has_rdoc: true
data/lib/actor.rb DELETED
@@ -1,22 +0,0 @@
1
- class Actor
2
-
3
- attr_reader :actor
4
-
5
- def initialize(object)
6
- @actor = { "event[actor][type]" => object.to_s }
7
- end
8
-
9
- def to_json
10
- @actor = JSON.generate(@actor)
11
- end
12
-
13
- # TODO
14
- # def to_hash
15
- # @actor = JSON.parse(@actor)
16
- # end
17
-
18
- def inspect
19
- @actor.inspect
20
- end
21
-
22
- end
data/lib/subject.rb DELETED
@@ -1,27 +0,0 @@
1
- class Subject
2
-
3
- attr_reader :subject
4
-
5
- # FIXME subject is not a hash
6
-
7
- def initialize(object)
8
- @subject = {}
9
- object.each do |key, value|
10
- @subject["event[subject][#{key.to_s}]"] = value.to_s
11
- end
12
- @subject
13
- end
14
-
15
- def inspect
16
- @subject.inspect
17
- end
18
-
19
- # TODO def to_hash
20
- # @subject = JSON.parse(@subject)
21
- # end
22
-
23
- def to_json
24
- @subject = JSON.generate(@subject)
25
- end
26
-
27
- end