Class: Capsium::Package::Route

Inherits:
Lutaml::Model::Serializable
  • Object
show all
Defined in:
lib/capsium/package/routes_config.rb,
sig/capsium/package/routes_config.rbs

Overview

A single route entry (ARCHITECTURE.md section 4). Kinds are discriminated by key, MECE: static file, dataset route, or dynamic handler (accepted-and-ignored; reactors respond 501). Route inheritance attributes per 05x-routing.

Constant Summary collapse

DATASET_PATH_PREFIX =

Returns:

  • (String)
"/api/v1/data/"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeObject



37
# File 'sig/capsium/package/routes_config.rbs', line 37

def initialize: (?path: String? path, ?resource: String? resource,

Instance Attribute Details

#access_controlHash[String, untyped]?

Returns the value of attribute access_control.

Returns:

  • (Hash[String, untyped], nil)


29
30
31
# File 'sig/capsium/package/routes_config.rbs', line 29

def access_control
  @access_control
end

#datasetString?

Returns the value of attribute dataset.

Returns:

  • (String, nil)


28
29
30
# File 'sig/capsium/package/routes_config.rbs', line 28

def dataset
  @dataset
end

#handlerString?

Returns the value of attribute handler.

Returns:

  • (String, nil)


31
32
33
# File 'sig/capsium/package/routes_config.rbs', line 31

def handler
  @handler
end

#headersHash[String, String]?

Returns the value of attribute headers.

Returns:

  • (Hash[String, String], nil)


25
26
27
# File 'sig/capsium/package/routes_config.rbs', line 25

def headers
  @headers
end

#headers_fileString?

Returns the value of attribute headers_file.

Returns:

  • (String, nil)


26
27
28
# File 'sig/capsium/package/routes_config.rbs', line 26

def headers_file
  @headers_file
end

#http_methodString?

Returns the value of attribute http_method.

Returns:

  • (String, nil)


30
31
32
# File 'sig/capsium/package/routes_config.rbs', line 30

def http_method
  @http_method
end

#pathString?

Returns the value of attribute path.

Returns:

  • (String, nil)


23
24
25
# File 'sig/capsium/package/routes_config.rbs', line 23

def path
  @path
end

#remapString?

Returns the value of attribute remap.

Returns:

  • (String, nil)


32
33
34
# File 'sig/capsium/package/routes_config.rbs', line 32

def remap
  @remap
end

#request_headersHash[String, String]?

Returns the value of attribute request_headers.

Returns:

  • (Hash[String, String], nil)


35
36
37
# File 'sig/capsium/package/routes_config.rbs', line 35

def request_headers
  @request_headers
end

#resourceString?

Returns the value of attribute resource.

Returns:

  • (String, nil)


24
25
26
# File 'sig/capsium/package/routes_config.rbs', line 24

def resource
  @resource
end

#response_headersHash[String, String]?

Returns the value of attribute response_headers.

Returns:

  • (Hash[String, String], nil)


34
35
36
# File 'sig/capsium/package/routes_config.rbs', line 34

def response_headers
  @response_headers
end

#response_rewriteResponseRewrite?

Returns the value of attribute response_rewrite.

Returns:



33
34
35
# File 'sig/capsium/package/routes_config.rbs', line 33

def response_rewrite
  @response_rewrite
end

#visibilityString

Returns the value of attribute visibility.

Returns:

  • (String)


27
28
29
# File 'sig/capsium/package/routes_config.rbs', line 27

def visibility
  @visibility
end

Class Method Details

.from_jsoninstance

Parameters:

  • json (String)

Returns:

  • (instance)


48
# File 'sig/capsium/package/routes_config.rbs', line 48

def self.from_json: (String json) -> instance

Instance Method Details

#dataset_route?Boolean

Returns:

  • (Boolean)


75
76
77
# File 'lib/capsium/package/routes_config.rb', line 75

def dataset_route?
  kind == :dataset
end

#dependency_reference?Boolean

Whether the resource addresses content of a dependency package ("/" — a URI rather than a package-relative path).

Returns:

  • (Boolean)


92
93
94
# File 'lib/capsium/package/routes_config.rb', line 92

def dependency_reference?
  resource.is_a?(String) && resource.include?("://")
end

#fs_path(package_path) ⇒ String?

Parameters:

  • package_path (String)

Returns:

  • (String, nil)


102
103
104
105
106
# File 'lib/capsium/package/routes_config.rb', line 102

def fs_path(package_path)
  return unless resource

  File.join(package_path, resource)
end

#handler_route?Boolean

Returns:

  • (Boolean)


79
80
81
# File 'lib/capsium/package/routes_config.rb', line 79

def handler_route?
  kind == :handler
end

#inherited?Boolean

Whether the route carries route-inheritance attributes.

Returns:

  • (Boolean)


97
98
99
100
# File 'lib/capsium/package/routes_config.rb', line 97

def inherited?
  dependency_reference? || !remap.nil? || !response_rewrite.nil? ||
    !response_headers.nil? || !request_headers.nil?
end

#kind:resource, ...

Returns:

  • (:resource, :dataset, :handler)


68
69
70
71
72
73
# File 'lib/capsium/package/routes_config.rb', line 68

def kind
  return :resource if resource
  return :dataset if dataset

  :handler
end

#mime(manifest) ⇒ String?

Parameters:

Returns:

  • (String, nil)


108
109
110
# File 'lib/capsium/package/routes_config.rb', line 108

def mime(manifest)
  manifest.type_for(resource)
end

#serving_pathString?

The URL path this route answers at: the remapped path when the route remaps an inherited route, its own path otherwise.

Returns:

  • (String, nil)


85
86
87
# File 'lib/capsium/package/routes_config.rb', line 85

def serving_path
  remap || path
end

#to_hashHash[String, untyped]

Returns:

  • (Hash[String, untyped])


75
# File 'sig/capsium/package/routes_config.rbs', line 75

def to_hash: () -> Hash[String, untyped]

#to_jsonString

Parameters:

  • args (Object)

Returns:

  • (String)


74
# File 'sig/capsium/package/routes_config.rbs', line 74

def to_json: (*untyped args) -> String

#validate_target(package_path, storage, merged_view: nil) ⇒ void

This method returns an undefined value.

Parameters:



112
113
114
115
116
117
118
119
120
121
122
# File 'lib/capsium/package/routes_config.rb', line 112

def validate_target(package_path, storage, merged_view: nil)
  return if handler_route?
  return if dependency_reference?

  if dataset_route?
    return if storage.dataset(dataset)

    raise Error, "Route dataset does not exist: #{dataset}"
  end
  validate_resource_target(package_path, merged_view)
end