ocular 0.1.13 → 0.1.14

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 902d76652adad957cc5559fe95d7876e81fa4359
4
- data.tar.gz: c895d66f55f1564956ff5dbe6ad158d1af75dd77
3
+ metadata.gz: b75a01c08fb7b6a2ff960807a32756141e464168
4
+ data.tar.gz: 37aaefaa23b2948b71e08ab2d9b1b3a869ddb68a
5
5
  SHA512:
6
- metadata.gz: 85917e966df5b3b644d89585d22432a99352b6080133aae5bce6d5f236798c8a25465155182f64f2d25e02040ce06eea4ed62b5fd4089f9c4c8066c4a2c2d7c2
7
- data.tar.gz: 75a436317585523e6bed22576fe0e86de251f5d3f849bbbfca0e8609add6b88eb4fea703205bcbf763d9ed39ec9bd0f521c18fc9e297bc882b806bd2a1dc0491
6
+ metadata.gz: e88d5e11511d01257c91a8437435ef910c530b2fa18e8d4e2d60e26a5d444b4e567ccf1d59ba04b82ae490e39e5c95526ca17a1dff194b3dd6842854c5a38eff
7
+ data.tar.gz: cc915062ae0f0eac29ff93a3d9ea96b7ca1e9f25cfea0b757cc303fea89b126fae9703c9d5f718634ef596af7c4d2deae7f9fb2220b48e5272e2082626baf345
data/bin/ocular CHANGED
@@ -24,7 +24,7 @@ class OptparseExample
24
24
  options.settings = nil
25
25
  options.root = nil
26
26
  options.check = nil
27
- options.level = "DEBUG"
27
+ options.level = "INFO"
28
28
 
29
29
  opt_parser = OptionParser.new do |opts|
30
30
  opts.banner = "Usage in shell mode: \"ocular [options] <script file>\" or server mode: \"ocular --server [options]\""
@@ -78,9 +78,10 @@ class OptparseExample
78
78
  end # class OptparseExample
79
79
 
80
80
  options = OptparseExample.parse(ARGV)
81
-
81
+ settings_file = nil
82
82
  begin
83
- Ocular::Settings.load_from_file(Ocular::Settings.find_settings_file_from_system(options.settings))
83
+ settings_file = Ocular::Settings.find_settings_file_from_system(options.settings)
84
+ Ocular::Settings.load_from_file(settings_file)
84
85
  rescue Errno::ENOENT
85
86
  puts "Could not find #{options.settings} in any search path."
86
87
  puts "Please create a yaml settings file in either ~/.ocular.yaml or /etc/ocular.yaml"
@@ -127,6 +128,8 @@ end
127
128
 
128
129
  Ocular.set_global_logger(logger)
129
130
 
131
+ logger.debug("- Loaded ocular settings from #{settings_file}")
132
+
130
133
  if options.server or options.syntax
131
134
  if !options.root && !Ocular::Settings.get(:script_root)
132
135
  puts "Please specify --root or set script_root in the settings.yaml"
data/lib/ocular/daemon.rb CHANGED
@@ -37,6 +37,7 @@ class Ocular
37
37
  end
38
38
 
39
39
  def start_input_handlers()
40
+ puts "derp"
40
41
  @eventfactory.start_input_handlers()
41
42
  end
42
43
 
@@ -17,4 +17,5 @@ require 'ocular/dsl/fog.rb'
17
17
  require 'ocular/dsl/logging.rb'
18
18
  require 'ocular/dsl/ssh.rb'
19
19
  require 'ocular/dsl/orbit.rb'
20
+ require 'ocular/dsl/mysql.rb'
20
21
 
@@ -13,12 +13,17 @@ class Ocular
13
13
  return @@__etcd_instance
14
14
  end
15
15
 
16
- settings = ::Ocular::Settings::get(:inputs)[:etcd] || {}
16
+
17
+ datasources = ::Ocular::Settings::get(:datasources)
18
+ if !datasources
19
+ raise "No etcd client settings"
20
+ end
21
+ settings = datasources[:etcd] || {}
17
22
  @@__etcd_instance = ::Etcd.client(
18
23
  host: (settings[:host] || "localhost"),
19
24
  port: (settings[:port] || 2379),
20
- usern_name: (settings[:port] || nil),
21
- password: (settings[:port] || nil),
25
+ user_name: (settings[:user_name] || nil),
26
+ password: (settings[:password] || nil),
22
27
  )
23
28
 
24
29
  return @@__etcd_instance
@@ -0,0 +1,28 @@
1
+ require 'logger'
2
+ require 'mysql2'
3
+
4
+ class Ocular
5
+ module DSL
6
+ module MySQL
7
+
8
+ add_help "mysql", "Returns a mysql client instance"
9
+
10
+ def mysql()
11
+ datasources = ::Ocular::Settings::get(:datasources)
12
+ if !datasources or !datasources[:mysql]
13
+ raise "No mysql client settings"
14
+ end
15
+ settings = datasources[:mysql] || {}
16
+ return Mysql2::Client.new(
17
+ host: (settings[:host] || "localhost"),
18
+ port: (settings[:port] || 3306),
19
+ username: (settings[:username] || nil),
20
+ password: (settings[:password] || nil),
21
+ database: (settings[:database] || "ocular")
22
+ )
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+ end
@@ -15,6 +15,7 @@ class Ocular
15
15
  include Ocular::DSL::Fog
16
16
  include Ocular::DSL::Etcd
17
17
  include Ocular::DSL::Orbit
18
+ include Ocular::DSL::MySQL
18
19
 
19
20
  include Ocular::Inputs::Cron::DSL
20
21
 
@@ -46,8 +46,7 @@ class Ocular
46
46
  r.error = error
47
47
  end
48
48
 
49
- response_data = Marshal.dump(r)
50
- writer.puts(response_data)
49
+ Marshal.dump(r, writer)
51
50
  writer.close
52
51
 
53
52
  end
@@ -24,8 +24,10 @@ class Ocular
24
24
  include Ocular::DSL::SSH
25
25
  include Ocular::DSL::Fog
26
26
  include Ocular::DSL::Etcd
27
+ include Ocular::DSL::MySQL
27
28
 
28
29
  include Ocular::Inputs::HTTP::DSL
30
+ include Ocular::Inputs::HTTP::ErrorDSL
29
31
  include Ocular::Inputs::Cron::DSL
30
32
  include Ocular::Inputs::Trigger::DSL
31
33
 
@@ -84,7 +84,6 @@ class Ocular
84
84
  ::Ocular.logger.debug "Scheduling cron.every(#{rule}) for block #{block}"
85
85
 
86
86
  id = @handler.scheduler.every(rule, :overlap => false) do
87
- puts "derp!"
88
87
  context = ::Ocular::DSL::RunContext.new(@logger)
89
88
  context.log_cause("cron.every", {:rule => rule})
90
89
  eventbase.exec(context)
@@ -18,7 +18,9 @@ class Ocular
18
18
  end
19
19
 
20
20
  def start()
21
+ puts "Starting handlers..."
21
22
  @handlers.each do |name, handler|
23
+ puts "Staring handler #{name} with #{handler}"
22
24
  handler.start()
23
25
  end
24
26
  end
@@ -18,7 +18,6 @@ class Ocular
18
18
 
19
19
  module DSL
20
20
 
21
-
22
21
  def onGET(path, opts = {}, &block)
23
22
  handler = handlers.get(::Ocular::Inputs::HTTP::Input)
24
23
  handler.add_get(script_name, path, opts, self, &block)
@@ -35,13 +34,35 @@ class Ocular
35
34
  end
36
35
  end
37
36
 
37
+ module ErrorDSL
38
+ class ClientError < ::Exception
39
+ def initialize(status, message)
40
+ @status = status
41
+ @message = message
42
+ end
43
+
44
+ def http_status
45
+ puts "http_status called: #{@status}"
46
+ return @status
47
+ end
48
+
49
+ def to_s
50
+ puts "to_s called: #{@message}"
51
+ return @message
52
+ end
53
+ end
54
+ end
55
+
38
56
  class Input < ::Ocular::Inputs::Base
39
57
 
40
58
  attr_reader :routes
41
59
 
60
+
42
61
  class WebRunContext < ::Ocular::DSL::RunContext
43
62
  attr_accessor :request, :response, :params, :env
44
63
 
64
+ include ::Ocular::Inputs::HTTP::ErrorDSL
65
+
45
66
  def initialize()
46
67
  super(Ocular::Logging::ConsoleLogger.new)
47
68
  @headers = {}
@@ -268,6 +289,8 @@ class Ocular
268
289
  end
269
290
 
270
291
  def route(verb, path, options, proxy, &block)
292
+ ::Ocular.logger.debug("Binding #{verb} #{path} to block #{block}")
293
+
271
294
  eventbase = Ocular::DSL::EventBase.new(proxy, &block)
272
295
  (proxy.events[verb] ||= {})[path] = eventbase
273
296
 
@@ -369,6 +392,17 @@ class Ocular
369
392
  end
370
393
  end
371
394
 
395
+ def encoded(char)
396
+ enc = URI_INSTANCE.escape(char)
397
+ enc = "(?:#{escaped(char, enc).join('|')})" if enc == char
398
+ enc = "(?:#{enc}|#{encoded('+')})" if char == " "
399
+ enc
400
+ end
401
+
402
+ def escaped(char, enc = URI_INSTANCE.escape(char))
403
+ [Regexp.escape(enc), URI_INSTANCE.escape(char, /./)]
404
+ end
405
+
372
406
  def call(env)
373
407
  dup.call!(env)
374
408
  end
@@ -413,6 +447,7 @@ class Ocular
413
447
  invoke(context) do |context|
414
448
  route!(context)
415
449
  end
450
+
416
451
  rescue ::Exception => error
417
452
  invoke(context) do |context|
418
453
  handle_exception!(context, error)
@@ -440,6 +475,10 @@ class Ocular
440
475
 
441
476
  if error.respond_to? :http_status
442
477
  context.response.status = error.http_status
478
+
479
+ if error.respond_to? :to_s
480
+ puts error.to_s
481
+ end
443
482
  else
444
483
  context.response.status = 500
445
484
  puts "Internal Server Error: #{error}"
@@ -1,3 +1,3 @@
1
1
  class Ocular
2
- Version = "0.1.13"
2
+ Version = "0.1.14"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ocular
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.13
4
+ version: 0.1.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juho Mäkinen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-30 00:00:00.000000000 Z
11
+ date: 2016-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rye
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - '='
137
137
  - !ruby/object:Gem::Version
138
138
  version: 0.3.2
139
+ - !ruby/object:Gem::Dependency
140
+ name: mysql2
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '='
144
+ - !ruby/object:Gem::Version
145
+ version: 0.4.3
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '='
151
+ - !ruby/object:Gem::Version
152
+ version: 0.4.3
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: rspec
141
155
  requirement: !ruby/object:Gem::Requirement
@@ -174,6 +188,7 @@ files:
174
188
  - lib/ocular/dsl/etcd.rb
175
189
  - lib/ocular/dsl/fog.rb
176
190
  - lib/ocular/dsl/logging.rb
191
+ - lib/ocular/dsl/mysql.rb
177
192
  - lib/ocular/dsl/orbit.rb
178
193
  - lib/ocular/dsl/runcontext.rb
179
194
  - lib/ocular/dsl/ssh.rb