apphunk 0.4.1 → 0.5.0

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/Rakefile CHANGED
@@ -6,13 +6,14 @@ begin
6
6
  Jeweler::Tasks.new do |gem|
7
7
  gem.name = "apphunk"
8
8
  gem.summary = %Q{A library that send's messages to Apphunk.com}
9
- gem.description = %Q{Apphunk is a library that allows your applications (currently only Ruby AND Rails) to send messages to Apphunk.com}
9
+ gem.description = %Q{Apphunk is a library that allows your applications to send messages to Apphunk.com}
10
10
  gem.email = "andreas@apphunk.com"
11
11
  gem.homepage = "http://apphunk.com"
12
12
  gem.authors = ["Andreas Wolff"]
13
13
  gem.add_development_dependency "rspec", ">= 1.2.9"
14
14
  gem.add_development_dependency "yard", ">= 0"
15
15
  gem.add_dependency "json"
16
+ gem.add_dependency "postbox", ">= 0.2.0"
16
17
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
17
18
  end
18
19
  Jeweler::GemcutterTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.1
1
+ 0.5.0
data/apphunk.gemspec CHANGED
@@ -5,12 +5,12 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{apphunk}
8
- s.version = "0.4.1"
8
+ s.version = "0.5.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Andreas Wolff"]
12
- s.date = %q{2010-04-06}
13
- s.description = %q{Apphunk is a library that allows your applications (currently only Ruby AND Rails) to send messages to Apphunk.com}
12
+ s.date = %q{2010-06-30}
13
+ s.description = %q{Apphunk is a library that allows your applications to send messages to Apphunk.com}
14
14
  s.email = %q{andreas@apphunk.com}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
@@ -31,8 +31,6 @@ Gem::Specification.new do |s|
31
31
  "lib/apphunk/config.rb",
32
32
  "lib/apphunk/logger.rb",
33
33
  "lib/apphunk/proxy.rb",
34
- "lib/apphunk/remote.rb",
35
- "lib/apphunk/remote/result.rb",
36
34
  "rails/init.rb",
37
35
  "spec/apphunk/proxy_spec.rb",
38
36
  "spec/apphunk_spec.rb",
@@ -42,7 +40,7 @@ Gem::Specification.new do |s|
42
40
  s.homepage = %q{http://apphunk.com}
43
41
  s.rdoc_options = ["--charset=UTF-8"]
44
42
  s.require_paths = ["lib"]
45
- s.rubygems_version = %q{1.3.5}
43
+ s.rubygems_version = %q{1.3.7}
46
44
  s.summary = %q{A library that send's messages to Apphunk.com}
47
45
  s.test_files = [
48
46
  "spec/apphunk/proxy_spec.rb",
@@ -54,19 +52,22 @@ Gem::Specification.new do |s|
54
52
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
55
53
  s.specification_version = 3
56
54
 
57
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
55
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
58
56
  s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
59
57
  s.add_development_dependency(%q<yard>, [">= 0"])
60
58
  s.add_runtime_dependency(%q<json>, [">= 0"])
59
+ s.add_runtime_dependency(%q<postbox>, [">= 0.2.0"])
61
60
  else
62
61
  s.add_dependency(%q<rspec>, [">= 1.2.9"])
63
62
  s.add_dependency(%q<yard>, [">= 0"])
64
63
  s.add_dependency(%q<json>, [">= 0"])
64
+ s.add_dependency(%q<postbox>, [">= 0.2.0"])
65
65
  end
66
66
  else
67
67
  s.add_dependency(%q<rspec>, [">= 1.2.9"])
68
68
  s.add_dependency(%q<yard>, [">= 0"])
69
69
  s.add_dependency(%q<json>, [">= 0"])
70
+ s.add_dependency(%q<postbox>, [">= 0.2.0"])
70
71
  end
71
72
  end
72
73
 
data/lib/apphunk.rb CHANGED
@@ -1,11 +1,11 @@
1
1
  require 'rubygems'
2
+ require 'postbox'
2
3
 
3
4
  module Apphunk
4
5
 
5
6
  autoload :Config, 'apphunk/config'
6
7
  autoload :Logger, 'apphunk/logger'
7
8
  autoload :Proxy, 'apphunk/proxy'
8
- autoload :Remote, 'apphunk/remote'
9
9
 
10
10
  class << self
11
11
 
@@ -108,4 +108,4 @@ module Apphunk
108
108
 
109
109
  end
110
110
 
111
- Apphunk.init_defaults
111
+ Apphunk.init_defaults
data/lib/apphunk/proxy.rb CHANGED
@@ -1,20 +1,19 @@
1
1
  require 'json'
2
- require 'ostruct'
3
2
 
4
3
  module Apphunk
5
4
  module Proxy
6
5
  class << self
7
6
 
8
- PROXY_API_URL = "http://127.0.0.1:8212/api/messages"
9
-
10
7
  def send_message_to_apphunkd(message, options)
11
8
  if options[:environments] && options[:environment] && !options[:environments].include?(options[:environment])
12
9
  return false
13
10
  end
14
11
 
15
12
  payload = prepare_payload(message, options)
16
- result = Apphunk::Remote.post(PROXY_API_URL, payload, 3)
17
- return process_response(result)
13
+ url = generate_api_messages_url(payload[:token])
14
+ return Postbox.post(url, payload) do |result|
15
+ process_response(result)
16
+ end
18
17
  end
19
18
 
20
19
  def prepare_payload(message, options)
@@ -28,19 +27,22 @@ module Apphunk
28
27
  end
29
28
 
30
29
  def process_response(result)
31
- if result.status == :ok
32
- if result.response.code == '201'
33
- return true
34
- else
35
- Apphunk::Logger.error "The Apphunkd-Proxy couldn't store the message: #{result.response.code} / #{result.response.body}"
36
- return false
37
- end
30
+ if result.success == true
31
+ return true
38
32
  else
39
- Apphunk::Logger.error "Connection Error: Could not get a response from local Apphunkd-Proxy in time"
33
+ Apphunk::Logger.error "Could not store message: #{result.response}"
40
34
  return false
41
35
  end
42
36
  end
43
37
 
38
+
39
+ protected
40
+
41
+ def generate_api_messages_url(token)
42
+ path = "v1/#{token}/messages"
43
+ "http://api.apphunk.com/#{path}"
44
+ end
45
+
44
46
  end
45
47
  end
46
- end
48
+ end
@@ -4,12 +4,13 @@ describe Apphunk::Proxy do
4
4
  describe 'send_message_to_apphunkd_proxy' do
5
5
  before(:each) do
6
6
  @opts = { :tags => 'test', :token => 'secret' }
7
- Apphunk::Remote.stub!(:post)
7
+ @payload = { :token => 'secret' }
8
8
  Apphunk::Proxy.stub!(:process_response).and_return(true)
9
+ Postbox.stub!(:post)
9
10
  end
10
11
 
11
12
  it 'should prepare the payload' do
12
- Apphunk::Proxy.should_receive(:prepare_payload).with("My Message", @opts)
13
+ Apphunk::Proxy.should_receive(:prepare_payload).with("My Message", @opts).and_return(@payload)
13
14
  Apphunk::Proxy.send_message_to_apphunkd("My Message", @opts)
14
15
  end
15
16
 
@@ -21,17 +22,12 @@ describe Apphunk::Proxy do
21
22
 
22
23
  context 'posting' do
23
24
  before(:each) do
24
- @payload = { "prepared" => "payload" }
25
+ @payload = { :prepared => "payload", :token => "secret" }
25
26
  Apphunk::Proxy.stub!(:prepare_payload).and_return(@payload)
26
27
  end
27
28
 
28
- it 'should post the payload to the local Apphunkd api' do
29
- Apphunk::Remote.should_receive(:post).with('http://127.0.0.1:8212/api/messages', @payload, anything)
30
- Apphunk::Proxy.send_message_to_apphunkd("My Message", @opts)
31
- end
32
-
33
- it 'should allow the post to only take 3 seconds to finish' do
34
- Apphunk::Remote.should_receive(:post).with(anything, anything, 3)
29
+ it 'should post the payload' do
30
+ Postbox.should_receive(:post).with('http://api.apphunk.com/v1/secret/messages', @payload)
35
31
  Apphunk::Proxy.send_message_to_apphunkd("My Message", @opts)
36
32
  end
37
33
  end
@@ -39,28 +35,17 @@ describe Apphunk::Proxy do
39
35
 
40
36
  describe 'process_response' do
41
37
  before(:each) do
42
- @result = Apphunk::Remote::Result.new
43
- @result.response = mock('Response')
44
- Apphunk::Remote.stub!(:post).and_return(@result)
38
+ @result = OpenStruct.new
45
39
  end
46
40
 
47
41
  it 'should return true if the Proxy return 201, created' do
48
- @result.status = :ok
49
- @result.response.stub!(:code).and_return("201")
50
- Apphunk::Proxy.process_response(@result)
42
+ @result.success = true
43
+ Apphunk::Proxy.process_response(@result).should be_true
51
44
  end
52
45
 
53
46
  it 'should output the failure and return false if the Proxy doesn not return 201' do
54
- @result.status = :ok
55
- @result.response.stub!(:code).and_return("404")
56
- @result.response.stub!(:body).and_return("Not found.")
57
- Apphunk::Logger.should_receive(:error).with(/Not found/)
58
- Apphunk::Proxy.process_response(@result)
59
- end
60
-
61
- it 'should output the failure and return false if the connection to the proxy failed' do
62
- @result.status = :connection_error
63
- Apphunk::Logger.should_receive(:error).with(/Connection Error/)
47
+ @result.success = false
48
+ Apphunk::Logger.should_receive(:error).with(/not store/)
64
49
  Apphunk::Proxy.process_response(@result)
65
50
  end
66
51
  end
@@ -70,7 +55,7 @@ describe Apphunk::Proxy do
70
55
  @opts = { :token => 'secret', :environment => 'development', :tags => 'test', :trails => { :user => '5' } }
71
56
  end
72
57
 
73
- it 'should create an OpenStruct, containing the message and extracted options' do
58
+ it 'should create a Hash, containing the message and extracted options' do
74
59
  payload = Apphunk::Proxy.prepare_payload("My Message", @opts)
75
60
  payload[:message].should == "My Message"
76
61
  payload[:token].should == "secret"
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apphunk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ hash: 11
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 5
9
+ - 0
10
+ version: 0.5.0
5
11
  platform: ruby
6
12
  authors:
7
13
  - Andreas Wolff
@@ -9,40 +15,70 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2010-04-06 00:00:00 +02:00
18
+ date: 2010-06-30 00:00:00 +02:00
13
19
  default_executable:
14
20
  dependencies:
15
21
  - !ruby/object:Gem::Dependency
16
22
  name: rspec
17
- type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
20
26
  requirements:
21
27
  - - ">="
22
28
  - !ruby/object:Gem::Version
29
+ hash: 13
30
+ segments:
31
+ - 1
32
+ - 2
33
+ - 9
23
34
  version: 1.2.9
24
- version:
35
+ type: :development
36
+ version_requirements: *id001
25
37
  - !ruby/object:Gem::Dependency
26
38
  name: yard
27
- type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
30
42
  requirements:
31
43
  - - ">="
32
44
  - !ruby/object:Gem::Version
45
+ hash: 3
46
+ segments:
47
+ - 0
33
48
  version: "0"
34
- version:
49
+ type: :development
50
+ version_requirements: *id002
35
51
  - !ruby/object:Gem::Dependency
36
52
  name: json
37
- type: :runtime
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
53
+ prerelease: false
54
+ requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
40
56
  requirements:
41
57
  - - ">="
42
58
  - !ruby/object:Gem::Version
59
+ hash: 3
60
+ segments:
61
+ - 0
43
62
  version: "0"
44
- version:
45
- description: Apphunk is a library that allows your applications (currently only Ruby AND Rails) to send messages to Apphunk.com
63
+ type: :runtime
64
+ version_requirements: *id003
65
+ - !ruby/object:Gem::Dependency
66
+ name: postbox
67
+ prerelease: false
68
+ requirement: &id004 !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ hash: 23
74
+ segments:
75
+ - 0
76
+ - 2
77
+ - 0
78
+ version: 0.2.0
79
+ type: :runtime
80
+ version_requirements: *id004
81
+ description: Apphunk is a library that allows your applications to send messages to Apphunk.com
46
82
  email: andreas@apphunk.com
47
83
  executables: []
48
84
 
@@ -66,8 +102,6 @@ files:
66
102
  - lib/apphunk/config.rb
67
103
  - lib/apphunk/logger.rb
68
104
  - lib/apphunk/proxy.rb
69
- - lib/apphunk/remote.rb
70
- - lib/apphunk/remote/result.rb
71
105
  - rails/init.rb
72
106
  - spec/apphunk/proxy_spec.rb
73
107
  - spec/apphunk_spec.rb
@@ -83,21 +117,27 @@ rdoc_options:
83
117
  require_paths:
84
118
  - lib
85
119
  required_ruby_version: !ruby/object:Gem::Requirement
120
+ none: false
86
121
  requirements:
87
122
  - - ">="
88
123
  - !ruby/object:Gem::Version
124
+ hash: 3
125
+ segments:
126
+ - 0
89
127
  version: "0"
90
- version:
91
128
  required_rubygems_version: !ruby/object:Gem::Requirement
129
+ none: false
92
130
  requirements:
93
131
  - - ">="
94
132
  - !ruby/object:Gem::Version
133
+ hash: 3
134
+ segments:
135
+ - 0
95
136
  version: "0"
96
- version:
97
137
  requirements: []
98
138
 
99
139
  rubyforge_project:
100
- rubygems_version: 1.3.5
140
+ rubygems_version: 1.3.7
101
141
  signing_key:
102
142
  specification_version: 3
103
143
  summary: A library that send's messages to Apphunk.com
@@ -1,29 +0,0 @@
1
- require 'net/http'
2
- require 'timeout'
3
- require 'uri'
4
-
5
- module Apphunk
6
- module Remote
7
-
8
- autoload :Result, 'apphunk/remote/result'
9
-
10
- class << self
11
-
12
- def post(url, payload = {}, post_timeout = 30)
13
- begin
14
- Timeout.timeout(post_timeout) do
15
- uri = URI.parse(url)
16
- result = Remote::Result.new(:response => Net::HTTP.post_form(uri, payload))
17
- result.status = :ok
18
- return result
19
- end
20
- rescue SocketError, Errno::ECONNREFUSED
21
- Remote::Result.new(:status => :connection_error)
22
- rescue Timeout::Error
23
- Remote::Result.new(:status => :timeout)
24
- end
25
- end
26
-
27
- end
28
- end
29
- end
@@ -1,15 +0,0 @@
1
- module Apphunk
2
- module Remote
3
- class Result
4
-
5
- attr_accessor :status
6
- attr_accessor :response
7
-
8
- def initialize(opts = {})
9
- self.status = opts.delete(:status)
10
- self.response = opts.delete(:response)
11
- end
12
-
13
- end
14
- end
15
- end