class KtorAuthTagger

Included Modules

Defined in:

tagger/framework_taggers/kotlin/ktor_auth.cr

Constant Summary

AUTHENTICATE_BLOCK_PATTERNS = [{/authenticate\s*\(/, "Ktor authenticate block"}, {/authenticate\s*\(\s*"([^"]+)"/, "Ktor named authenticate"}]

Ktor authenticate block patterns

ROUTE_AUTH_PATTERNS = [{/principal</, "Ktor principal extraction"}, {/call\.principal/, "Ktor call.principal"}, {/call\.authentication/, "Ktor call.authentication"}, {/sessions\.get</, "Ktor session check"}]

Ktor session/JWT/basic auth in route context

ROUTE_BLOCK = /route\s*\(\s*"([^"]+)"/

route("/api") { — a nested URL-prefix block.

ROUTE_HANDLER = /^(?:get|post|put|patch|delete|head|options)\s*[({]/

The start of a route handler (get("/x") {, post {). Used as a boundary so a handler-body scan stops before the next route.

Constructors

Class Method Summary

Instance Method Summary

Instance methods inherited from module PrefixScope

prefix_covers?(prefix : String, url : String) : Bool prefix_covers?

Instance methods inherited from class FrameworkTagger

base_relative_path(path : String) : String base_relative_path, class_level_annotation(path : String, lines : Array(String), annotation_name : String) : String | Nil class_level_annotation, collect_files_by_extension(extension : String) : Array(String) collect_files_by_extension, perform(endpoints : Array(Endpoint)) : Array(Endpoint) perform, read_file(path : String) : String | Nil read_file, read_file_lines(path : String) : Array(String) | Nil read_file_lines, read_source_context(endpoint : Endpoint) : Array(SourceContext) read_source_context, static_asset_route?(url : String) : Bool static_asset_route?

Constructor methods inherited from class FrameworkTagger

new(options : Hash(String, YAML::Any)) new

Class methods inherited from class FrameworkTagger

target_techs : Array(String) target_techs

Instance methods inherited from module FileHelper

all_files : Array(String) all_files, get_files_by_basename(basename : String) : Array(String) get_files_by_basename, get_files_by_extension(extension : String) : Array(String) get_files_by_extension, get_files_by_extensions(extensions : Array(String)) : Array(String) get_files_by_extensions, get_files_by_prefix(prefix : String) : Array(String) get_files_by_prefix, get_files_by_prefix_and_extension(prefix : String, extension : String) : Array(String) get_files_by_prefix_and_extension, get_files_by_relative_path(relative_path : String, root : String = "") : Array(String) get_files_by_relative_path, get_public_dir_files(base_path : String, folder : String) : Array(String) get_public_dir_files, get_public_files(base_path : String, anchors : Array(String) = ["shard.yml", "Gemfile"]) : Array(String) get_public_files, walked_path(expanded : String) : String walked_path

Instance methods inherited from class Tagger

name : String name, perform(endpoints : Array(Endpoint)) : Array(Endpoint) perform

Constructor methods inherited from class Tagger

new(options : Hash(String, YAML::Any)) new

Class methods inherited from class Tagger

tagger_key : String tagger_key

Constructor Detail

def self.new(options : Hash(String, YAML::Any)) #

[View source]

Class Method Detail

def self.target_techs : Array(String) #

[View source]

Instance Method Detail

def perform(endpoints : Array(Endpoint)) : Array(Endpoint) #
Description copied from class FrameworkTagger

The per-endpoint shape: look at each endpoint, tag in place, hand the array back. Fifteen framework taggers carried a byte-identical copy of this; they now declare only check_endpoint.

Not every framework tagger fits it — eleven still override #perform because they need a pre-scan over the project (config files, middleware registration) before the per-endpoint pass, or they group endpoints first. Those keep their own.


[View source]