class

Analyzer::Specification::Apigee

Inherits Analyzer::Specification::SpecificationEngine < Analyzer < FileHelper < Reference < Object

Apigee proxy endpoints: HTTPProxyConnection/BasePath is the public prefix and each conditional Flows/Flow names a resource under it through proxy.pathsuffix and request.verb conditions. A proxy with no such flow forwards everything under its base path, so the base path alone is emitted.

Constants

BASE_PATH_LINE = /<BasePath>\s*([^<\s]*)/
FLOW_LINE = /<Flow\s+name\s*=\s*["']([^"']*)["']/

libxml positions are not exposed; a flow's line is found by its name.

NEGATION_RE = /(?:!|\bnot)\z/i
OR_RE = /\s*(?:\|\||\bor\b)\s*/i
PATHSUFFIX_RE = /proxy\.pathsuffix\s*(MatchesPath|LikePath|Matches|Like|JavaRegex|StartsWith|EqualsCaseInsensitive|Equals|Is|~~|~\/|=\||==|:=|=|~)\s*"([^"]*)"/i

Longer operators first, so =| (StartsWith) is not read as =.

REGEX_OPS = Set {"javaregex", "~~"}
VERB_RE = /request\.verb\s*(?:==|:=|=|EqualsCaseInsensitive|Equals|Is)\s*"([A-Za-z]+)"/i

Class methods

tech_name
Source

Instance methods

analyze
Source
tech

Instance-side view of the same declaration. The per-file rescues live on this base class, which has no way to name the analyzer that is running inside them, so a skipped file could not be attributed to a tech. Deriving it from analyzer_for keeps the name written exactly once.

Source