qswarm 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -56,11 +56,11 @@ module Qswarm
56
56
  end
57
57
 
58
58
  def speak(name, args = nil, &block)
59
- if !args.nil?
59
+ if !args[:type].nil?
60
60
  require "qswarm/speakers/#{args[:type].downcase}"
61
- @speakers << eval("Qswarm::Speakers::#{args[:type].capitalize}").new(self, name, &block)
61
+ @speakers << eval("Qswarm::Speakers::#{args[:type].capitalize}").new(self, name, args, &block)
62
62
  else
63
- @speakers << Qswarm::Speaker.new(self, name, &block)
63
+ @speakers << Qswarm::Speaker.new(self, name, args, &block)
64
64
  end
65
65
  logger.info "Registering speaker: #{name} < #{@name}"
66
66
  end
@@ -1,4 +1,5 @@
1
1
  require 'json'
2
+ require 'ostruct'
2
3
 
3
4
  require 'qswarm/dsl'
4
5
 
@@ -10,12 +11,12 @@ module Qswarm
10
11
  dsl_accessor :broker
11
12
  attr_reader :agent, :metadata, :heard, :name
12
13
 
13
- def initialize(listener, name, &block)
14
+ def initialize(listener, name, args, &block)
14
15
  @listener = listener
15
16
  @agent = @listener.agent
16
17
  @name = name.to_s unless name.nil?
17
18
  @block = block
18
-
19
+ @args = OpenStruct.new args
19
20
  end
20
21
 
21
22
  def parse(metadata, payload)
@@ -50,6 +51,10 @@ module Qswarm
50
51
 
51
52
  def run
52
53
  end
54
+
55
+ def arg(name)
56
+ @args[name]
57
+ end
53
58
 
54
59
  private
55
60
 
@@ -6,7 +6,7 @@ module Qswarm
6
6
  class Http < Qswarm::Speaker
7
7
  @@connections = {}
8
8
 
9
- def initialize(listener, name, &block)
9
+ def initialize(listener, name, args, &block)
10
10
  @uri = URI.parse(name)
11
11
  @uri.host = 'localhost' if @uri.host.nil?
12
12
  super
@@ -17,29 +17,39 @@ module Qswarm
17
17
  end
18
18
 
19
19
  def run
20
- connect
21
20
  end
22
21
 
23
22
  private
24
-
25
- def connect
23
+
24
+ def auth?
25
+
26
26
  end
27
27
 
28
28
  def publish(format, msg)
29
29
  logger.debug "Sending '#{msg}' to #{@name}"
30
+ head = @args.user.nil? ? {} : { 'authorization' => [@args.user, @args.password] }
30
31
 
31
32
  case format
32
33
  when :get
33
34
  if msg.is_a? Hash
34
- http = EventMachine::HttpRequest.new(@uri).get :query => msg
35
+ http = EventMachine::HttpRequest.new(@uri).get :head => head, :query => msg
35
36
  else
36
- http = EventMachine::HttpRequest.new(URI.join(@uri.to_s, msg)).get
37
+ http = EventMachine::HttpRequest.new(URI.join(@uri.to_s, msg)).get :head => head
38
+ end
39
+ http.errback do |err|
40
+ logger.error "Error sending #{msg} to #{@name}: #{err}"
41
+ end
42
+ http.callback do
43
+ logger.debug "#{@name} #{http.response_header.status} #{http.response}"
37
44
  end
45
+
46
+ when :post
47
+ http = EventMachine::HttpRequest.new(@uri).post :head => head, :body => msg
38
48
  http.errback do |err|
39
49
  logger.error "Error sending #{msg} to #{@name}: #{err}"
40
50
  end
41
51
  http.callback do
42
- logger.debug "#{http.response_header.status} #{http.response}"
52
+ logger.debug "#{@name} #{http.response_header.status} #{http.response}"
43
53
  end
44
54
  end
45
55
  end
@@ -1,3 +1,3 @@
1
1
  module Qswarm
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qswarm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-13 00:00:00.000000000Z
12
+ date: 2012-04-16 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: eventmachine
16
- requirement: &70155150039980 !ruby/object:Gem::Requirement
16
+ requirement: &70161152695980 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70155150039980
24
+ version_requirements: *70161152695980
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: amqp
27
- requirement: &70155150039560 !ruby/object:Gem::Requirement
27
+ requirement: &70161152695560 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70155150039560
35
+ version_requirements: *70161152695560
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: uuid
38
- requirement: &70155150039140 !ruby/object:Gem::Requirement
38
+ requirement: &70161152695120 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70155150039140
46
+ version_requirements: *70161152695120
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: json
49
- requirement: &70155150038720 !ruby/object:Gem::Requirement
49
+ requirement: &70161152694640 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70155150038720
57
+ version_requirements: *70161152694640
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: andand
60
- requirement: &70155153872900 !ruby/object:Gem::Requirement
60
+ requirement: &70161152694220 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70155153872900
68
+ version_requirements: *70161152694220
69
69
  description: Framework for writing distributed agents hanging off an AMQP message
70
70
  bus
71
71
  email: