struct Endpoint

Included Modules

Defined in:

models/endpoint.cr

Constant Summary

MOBILE_PROTOCOLS = Set {"mobile-scheme", "android-intent", "universal-link", "android-provider"}

Non-HTTP mobile deep-link protocols. These endpoints are app URLs you open (myapp://, intent://, verified https app links) or ContentResolver surfaces you address (content://authority), not HTTP requests you send — so they are excluded from HTTP-shaped output (curl/httpie/powershell, OpenAPI) and from active probing / proxy delivery.

Constructors

Instance Method Summary

Constructor Detail

def self.new(url : String, method : String, details : Details) #

[View source]
def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) #

[View source]
def self.new(url : String, method : String, params : Array(Param) = [] of Param, details : Details = Details.new, internal : Bool = false) #

[View source]
def self.new(pull : JSON::PullParser) #

[View source]

Instance Method Detail

def ==(other : Endpoint) : Bool #

[View source]
def add_tag(tag : Tag) #

Dedup by (name, tagger) like push_callee/push_param do for their collections, so re-tagging the same target (e.g. a match in two code_paths) can't surface a duplicate "auth auth" in the text output.


[View source]
def ai_context : AIContext | Nil #

[View source]
def ai_context=(ai_context : AIContext | Nil) #

[View source]
def callees : Array(Callee) #

[View source]
def callees=(callees : Array(Callee)) #

[View source]
def details : Details #

[View source]
def details=(details : Details) #

[View source]
def details=(details : Details) #

[View source]
def internal : Bool #

[View source]
def internal=(internal : Bool) #

[View source]
def internal=(internal : Bool) #

[View source]
def kind : String #

[View source]
def kind=(kind : String) #

[View source]
def metadata : Hash(String, String) | Nil #

Free-form metadata for non-HTTP entry points (mobile deep-link schemes, Android intents, universal links: action/category/host/ package/...). nil for ordinary endpoints and suppressed from serialization so the JSON/YAML schema is unchanged for them.


[View source]
def metadata=(metadata : Hash(String, String) | Nil) #

Free-form metadata for non-HTTP entry points (mobile deep-link schemes, Android intents, universal links: action/category/host/ package/...). nil for ordinary endpoints and suppressed from serialization so the JSON/YAML schema is unchanged for them.


[View source]
def method : String #

[View source]
def method=(method : String) #

[View source]
def mobile? : Bool #

[View source]
def params : Array(Param) #

[View source]
def params=(params : Array(Param)) #

[View source]
def params_to_hash #

[View source]
def protocol : String #

[View source]
def protocol=(protocol : String) #

[View source]
def protocol=(protocol : String) #

[View source]
def push_callee(callee : Callee) #

Add a callee, deduping by (name, path) and enforcing the Callee::MAX_PER_ENDPOINT cap. Both checks are kept here so individual analyzers can't forget them and let the list balloon.


[View source]
def push_param(param : Param) #

Dedup by (name, param_type) like push_callee/add_tag do for their collections. A handler that reads the same input twice (params[:id] on two lines, a path param re-read in the body) used to surface the identical Param multiple times in the raw #params list and the text output. #params_to_hash/#== already collapse on name+type, so deduping here only trims redundant entries.


[View source]
def tags : Array(Tag) #

[View source]
def tags=(tags : Array(Tag)) #

[View source]
def url : String #

[View source]
def url=(url : String) #

[View source]