ocular 0.1.14 → 0.1.15

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b75a01c08fb7b6a2ff960807a32756141e464168
4
- data.tar.gz: 37aaefaa23b2948b71e08ab2d9b1b3a869ddb68a
3
+ metadata.gz: 89e4559ff9d5af112b1d8112311d72658732f4a0
4
+ data.tar.gz: ad7aefaf93159266fdbe1977bed667c24cd82529
5
5
  SHA512:
6
- metadata.gz: e88d5e11511d01257c91a8437435ef910c530b2fa18e8d4e2d60e26a5d444b4e567ccf1d59ba04b82ae490e39e5c95526ca17a1dff194b3dd6842854c5a38eff
7
- data.tar.gz: cc915062ae0f0eac29ff93a3d9ea96b7ca1e9f25cfea0b757cc303fea89b126fae9703c9d5f718634ef596af7c4d2deae7f9fb2220b48e5272e2082626baf345
6
+ metadata.gz: 2c89e2f89937f1e1aac4036872e8262db351ef4cfbfb08035e511591756fed79b00ca985ca2886e7cc646ee903850a7624c560c6f1909837af23e0af5113c1e5
7
+ data.tar.gz: 8fa4c75d13e95ffd823778f7454d2ab4fc390a2e8048360b4c72b3323d6d325252bbd4a3d16bfcbb7f21da1f1e042a9ad1ef3d02836100229404f9f06231feb5
data/bin/ocular CHANGED
@@ -95,12 +95,20 @@ ssh:
95
95
  - /home/user/.ssh/id_dsa
96
96
  user: ubuntu
97
97
 
98
- inputs:
99
- http:
100
- port: 8083
98
+ datasources:
101
99
  etcd:
102
100
  host: etc
103
101
  port: 4001
102
+ mysql:
103
+ host: localhost
104
+ password: xyz
105
+ username: ocular
106
+ database: ocular
107
+
108
+ inputs:
109
+ http:
110
+ port: 8083
111
+
104
112
 
105
113
  "
106
114
  exit -1
@@ -3,6 +3,7 @@ require 'ocular/event/eventbase.rb'
3
3
  require 'ocular/inputs/http_input.rb'
4
4
  require 'ocular/inputs/cron_input.rb'
5
5
  require 'ocular/inputs/trigger_input.rb'
6
+ require 'ocular/inputs/rabbitmq_input.rb'
6
7
 
7
8
  class Ocular
8
9
  module Event
@@ -30,6 +31,7 @@ class Ocular
30
31
  include Ocular::Inputs::HTTP::ErrorDSL
31
32
  include Ocular::Inputs::Cron::DSL
32
33
  include Ocular::Inputs::Trigger::DSL
34
+ include Ocular::Inputs::RabbitMQ::DSL
33
35
 
34
36
  def fork(value)
35
37
  @do_fork = value
@@ -32,6 +32,12 @@ class Ocular
32
32
  handler = handlers.get(::Ocular::Inputs::HTTP::Input)
33
33
  handler.add_delete(script_name, path, opts, self, &block)
34
34
  end
35
+
36
+ def onOPTIONS(path, opts = {}, &block)
37
+ handler = handlers.get(::Ocular::Inputs::HTTP::Input)
38
+ handler.add_options(script_name, path, opts, self, &block)
39
+ end
40
+
35
41
  end
36
42
 
37
43
  module ErrorDSL
@@ -282,7 +288,12 @@ class Ocular
282
288
  def add_delete(script_name, path, options, proxy, &block)
283
289
  name = generate_uri_from_names(script_name, path)
284
290
  route('DELETE', name, options, proxy, &block)
285
- end
291
+ end
292
+
293
+ def add_options(script_name, path, options, proxy, &block)
294
+ name = generate_uri_from_names(script_name, path)
295
+ route('OPTIONS', name, options, proxy, &block)
296
+ end
286
297
 
287
298
  def build_signature(pattern, keys, &block)
288
299
  return [pattern, keys, block]
@@ -0,0 +1,87 @@
1
+
2
+ require 'ocular/inputs/base.rb'
3
+ require 'ocular/dsl/dsl.rb'
4
+ require 'ocular/dsl/runcontext.rb'
5
+ require 'rufus/scheduler'
6
+
7
+ class Ocular
8
+ module Inputs
9
+
10
+ module RabbitMQ
11
+
12
+ module DSL
13
+
14
+ #add_event_help "cron.in(rule)", "Schedule event to be executed in 'rule'. eg: '1m'"
15
+ def rabbitmq()
16
+ handler = handlers.get(::Ocular::Inputs::RabbitMQ::Input)
17
+ return Input::DSLProxy.new(self, handler, logger)
18
+ end
19
+
20
+ end
21
+
22
+ class Input < ::Ocular::Inputs::Base
23
+
24
+ attr_reader :routes
25
+ attr_reader :conn
26
+
27
+ def initialize(settings_factory)
28
+ settings = settings_factory[:rabbitmq]
29
+
30
+ ::Ocular.logger.debug "Starting RabbitMQ input"
31
+
32
+ @conn = Bunny.new
33
+ conn.start
34
+
35
+ ch = conn.create_channel
36
+ q = ch.queue("bunny.examples.hello_world", :auto_delete => true)
37
+ x = ch.default_exchange
38
+
39
+ end
40
+
41
+ def start()
42
+
43
+ end
44
+
45
+ def stop()
46
+ @scheduler.shutdown
47
+ end
48
+
49
+ class RabbitMQRunContext < ::Ocular::DSL::RunContext
50
+ attr_accessor :delivery_info, :metadata, :payload
51
+
52
+ def initialize()
53
+ super(Ocular::Logging::ConsoleLogger.new)
54
+ end
55
+ end
56
+
57
+
58
+ class DSLProxy
59
+ def initialize(proxy, handler, logger)
60
+ @proxy = proxy
61
+ @handler = handler
62
+ @logger = logger
63
+ end
64
+
65
+ def subscribe(topic, &block)
66
+ eventbase = Ocular::DSL::EventBase.new(@proxy, &block)
67
+ ::Ocular.logger.debug "rabbitmq.subscribe to# #{topic} for block #{block}"
68
+
69
+ q.subscribe(topic) do |delivery_info, metadata, payload|
70
+ context = RabbitMQRunContext.new(@logger)
71
+ context.log_cause("rabbitmq.subscribe(#{topic})")
72
+ context.delivery_info = delivery_info
73
+ context.metadata = metadata
74
+ context.payload = payload
75
+ eventbase.exec(context)
76
+ end
77
+
78
+ @proxy.events[id] = eventbase
79
+
80
+ return id
81
+ end
82
+ end
83
+
84
+ end
85
+ end
86
+ end
87
+ end
data/lib/ocular/ocular.rb CHANGED
@@ -24,6 +24,7 @@ require 'ocular/dsl/runcontext'
24
24
  require 'ocular/inputs/handlers'
25
25
  require 'ocular/inputs/base'
26
26
  require 'ocular/inputs/http_input'
27
+ require 'ocular/inputs/rabbitmq_input'
27
28
  require 'ocular/daemon'
28
29
 
29
30
 
@@ -1,3 +1,3 @@
1
1
  class Ocular
2
- Version = "0.1.14"
2
+ Version = "0.1.15"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ocular
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.14
4
+ version: 0.1.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juho Mäkinen
@@ -150,6 +150,20 @@ dependencies:
150
150
  - - '='
151
151
  - !ruby/object:Gem::Version
152
152
  version: 0.4.3
153
+ - !ruby/object:Gem::Dependency
154
+ name: bunny
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - '='
158
+ - !ruby/object:Gem::Version
159
+ version: 2.3.1
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - '='
165
+ - !ruby/object:Gem::Version
166
+ version: 2.3.1
153
167
  - !ruby/object:Gem::Dependency
154
168
  name: rspec
155
169
  requirement: !ruby/object:Gem::Requirement
@@ -198,6 +212,7 @@ files:
198
212
  - lib/ocular/inputs/cron_input.rb
199
213
  - lib/ocular/inputs/handlers.rb
200
214
  - lib/ocular/inputs/http_input.rb
215
+ - lib/ocular/inputs/rabbitmq_input.rb
201
216
  - lib/ocular/inputs/trigger_input.rb
202
217
  - lib/ocular/logging/console_logger.rb
203
218
  - lib/ocular/logging/kafka_logger.rb