culpa-coliseum 2.0.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.
- checksums.yaml +7 -0
- data/lib/culpa-coliseum.rb +18 -0
- data/lib/culpa-coliseum/coliseum.rb +19 -0
- data/lib/culpa-coliseum/coliseum_dsl.rb +71 -0
- metadata +60 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f13eb21cdd7d7eabeca4aa7bd91ebf203654dc62
|
4
|
+
data.tar.gz: 306cbe6a3491380b628dd7a50f52d9c0c9250934
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: dfa82862cf1ed2472974d4622b8d158f9a772e7e3a2cdee1bfab67144644c0ed3b783aa02b834d342f164990544ff7b8b3a9ca1cd00034783643cafafc5d5a34
|
7
|
+
data.tar.gz: 7f3d68c1b942005e89738bbfe1832904902f815834fdcdb32b7486e514900b74758eeb47e25179dd102920e7f61e835db6b94a895363209949939ae79715e95a
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require_relative 'culpa-coliseum/coliseum_dsl'
|
2
|
+
|
3
|
+
if Culpa
|
4
|
+
# Registering the Coliseum DSL inside the possible renderers
|
5
|
+
Action.add_renderer(File.join(File.dirname(__FILE__), 'culpa-coliseum/coliseum.rb'))
|
6
|
+
|
7
|
+
# Injecting new keyword inside brickchain executor
|
8
|
+
Culpa::BrickchainExecutor.inject_keyword! :render_coliseum do |args|
|
9
|
+
file = args[0]
|
10
|
+
coliseum = ColiseumDSL.new("./coliseums/#{file}.rb", envelope)
|
11
|
+
raise Action::RenderNow, format: :json,
|
12
|
+
status: RendererDescriber::RETURN_CODES[coliseum.culpa_status] || 200,
|
13
|
+
headers: { 'Content-Type' => 'application/json' }.merge(coliseum.culpa_headers),
|
14
|
+
object: coliseum.dsl_attributes
|
15
|
+
end
|
16
|
+
else
|
17
|
+
raise StandardError.new('Culpa is not loaded, can\'t register Coliseum in nothing...')
|
18
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
##
|
2
|
+
# This renderer loads the ColiseumDSL to eval the
|
3
|
+
# passed file, and renders it as a JSON.
|
4
|
+
##
|
5
|
+
|
6
|
+
require_relative 'coliseum_dsl'
|
7
|
+
|
8
|
+
describe_renderer :coliseum do |options, envelope|
|
9
|
+
coliseum = ColiseumDSL.new("./coliseums/#{options[:coliseum]}.rb", envelope)
|
10
|
+
|
11
|
+
sent_headers = { 'Content-Type' => 'application/json' }.merge(options[:headers]).merge(coliseum.culpa_headers)
|
12
|
+
|
13
|
+
{
|
14
|
+
format: :json,
|
15
|
+
status: RETURN_CODES[options[:status]] || RETURN_CODES[coliseum.culpa_status] || 200,
|
16
|
+
headers: sent_headers,
|
17
|
+
object: coliseum.dsl_attributes
|
18
|
+
}
|
19
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
class ColiseumDSL
|
2
|
+
attr_reader :dsl_attributes, :culpa_status, :culpa_headers
|
3
|
+
|
4
|
+
def initialize(to_eval, envelope, eval_args = nil)
|
5
|
+
@dsl_attributes = {}
|
6
|
+
@culpa_headers = {}
|
7
|
+
@culpa_envelope = envelope
|
8
|
+
if to_eval.is_a? String
|
9
|
+
instance_eval File.read(to_eval), to_eval
|
10
|
+
else
|
11
|
+
instance_exec eval_args, &to_eval
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def e
|
16
|
+
@culpa_envelope
|
17
|
+
end
|
18
|
+
|
19
|
+
def set_status_code!(code)
|
20
|
+
@culpa_status = code
|
21
|
+
end
|
22
|
+
|
23
|
+
def add_http_headers!(hdrs = {})
|
24
|
+
@culpa_headers.merge!(hdrs)
|
25
|
+
end
|
26
|
+
|
27
|
+
def array!(opts, &blk)
|
28
|
+
if opts.is_a? Hash
|
29
|
+
sym, items = opts.first
|
30
|
+
@dsl_attributes[sym] = []
|
31
|
+
items.each do |item|
|
32
|
+
@dsl_attributes[sym] << ColiseumDSL.new(blk, @culpa_envelope, item).dsl_attributes
|
33
|
+
end
|
34
|
+
else
|
35
|
+
@dsl_attributes = []
|
36
|
+
opts.each do |item|
|
37
|
+
@dsl_attributes << ColiseumDSL.new(blk, @culpa_envelope, item).dsl_attributes
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def extract!(target, *attrs)
|
43
|
+
attrs.each do |att|
|
44
|
+
@dsl_attributes[att] = if target.is_a? Hash
|
45
|
+
target[att] if target.key? att
|
46
|
+
else
|
47
|
+
begin
|
48
|
+
target.send(att)
|
49
|
+
rescue
|
50
|
+
# :nocov:
|
51
|
+
nil
|
52
|
+
# :nocov:
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def method_missing(sym, *args, &blk)
|
59
|
+
@dsl_attributes[sym] = if ::Kernel.block_given?
|
60
|
+
ColiseumDSL.new(blk, @culpa_envelope).dsl_attributes
|
61
|
+
else
|
62
|
+
if args.count.zero?
|
63
|
+
nil
|
64
|
+
elsif args.count == 1
|
65
|
+
args[0]
|
66
|
+
else
|
67
|
+
args
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
metadata
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: culpa-coliseum
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jérémy SEBAN
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-12-26 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: culpa
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.0'
|
27
|
+
description: Culpa is a framework following MEA principles. Learn more on http://culpaframework.org/.
|
28
|
+
email: jeremy@seban.eu
|
29
|
+
executables: []
|
30
|
+
extensions: []
|
31
|
+
extra_rdoc_files: []
|
32
|
+
files:
|
33
|
+
- lib/culpa-coliseum.rb
|
34
|
+
- lib/culpa-coliseum/coliseum.rb
|
35
|
+
- lib/culpa-coliseum/coliseum_dsl.rb
|
36
|
+
homepage: http://culpaframework.org/
|
37
|
+
licenses:
|
38
|
+
- MIT
|
39
|
+
metadata: {}
|
40
|
+
post_install_message:
|
41
|
+
rdoc_options: []
|
42
|
+
require_paths:
|
43
|
+
- lib
|
44
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '2.0'
|
49
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
requirements: []
|
55
|
+
rubyforge_project:
|
56
|
+
rubygems_version: 2.5.2
|
57
|
+
signing_key:
|
58
|
+
specification_version: 4
|
59
|
+
summary: 'Coliseum : the Culpa JSON DSL'
|
60
|
+
test_files: []
|