ocular 0.1.13 → 0.1.14

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: 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