Module: Trailblazer::Endpoint::Builder::DSL

Defined in:
lib/trailblazer/endpoint/builder.rb

Class Method Summary collapse

Class Method Details

.build_options_for(builder:, **options) ⇒ Object

Returns endpoint_options.

Returns:

  • endpoint_options



29
30
31
32
33
# File 'lib/trailblazer/endpoint/builder.rb', line 29

def build_options_for(builder:, **options)
  signal, (ctx, _) = builder.([options])

  ctx[:build_options] # ["web:submitted?", {protocol_block: ..., options_for_build: ...}]
end

.endpoint_for(id:, builder:, default_options:, **config) ⇒ Object



35
36
37
38
39
# File 'lib/trailblazer/endpoint/builder.rb', line 35

def endpoint_for(id:, builder:, default_options:, **config)
  options = build_options_for(builder: builder, **config)

  return id, Trailblazer::Endpoint.build(default_options.merge(options[:options_for_build]).merge(protocol_block: options[:protocol_block]))
end

.endpoints_for(dsl_options, **options) ⇒ Object

dsl_options being something like

"api:Start.default" => {policies: []},
"api:status?"       => {policies: [:user_owns_diagram]},
"api:download?"     => {policies: [:user_owns_diagram]},
"api:delete?"       => {policies: [:user_owns_diagram]},


47
48
49
50
51
# File 'lib/trailblazer/endpoint/builder.rb', line 47

def endpoints_for(dsl_options, **options)
  endpoints = dsl_options.collect do |id, config|
    endpoint_for(id: id, **options, **config) # config is per endpoint, options are "global"
  end.to_h
end