Skip to content

Instantly share code, notes, and snippets.

@erdomke
Created June 6, 2017 02:21
Show Gist options
  • Save erdomke/9d79aa6c026c34151c6d7d2f5b997581 to your computer and use it in GitHub Desktop.
Save erdomke/9d79aa6c026c34151c6d7d2f5b997581 to your computer and use it in GitHub Desktop.
NancyRequestLifeCycle
Display the source blob
Display the rendered blob
Raw
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="889.07" height="1111.2" viewBox="0 0 235.23308 294.00415">
<defs>
<linearGradient id="a" gradientUnits="userSpaceOnUse" y2="1400.33" x2="932.56" y1="1292.67" x1="971.74">
<stop offset="0" stop-color="#d16d2a"/>
<stop offset=".48" stop-color="#d16d2a"/>
<stop offset=".82" stop-color="#ed7d31"/>
<stop offset="1" stop-color="#ed7d31"/>
</linearGradient>
<linearGradient id="b" gradientUnits="userSpaceOnUse" y2="1400.33" x2="932.56" y1="1292.67" x1="971.74">
<stop offset="0" stop-color="#d16d2a"/>
<stop offset=".48" stop-color="#d16d2a"/>
<stop offset=".82" stop-color="#ed7d31"/>
<stop offset="1" stop-color="#ed7d31"/>
</linearGradient>
<linearGradient xlink:href="#a" id="c" gradientUnits="userSpaceOnUse" x1="971.74" y1="1292.67" x2="932.56" y2="1400.33" gradientTransform="translate(.422 34.135)"/>
<linearGradient xlink:href="#a" id="d" gradientUnits="userSpaceOnUse" gradientTransform="translate(0 9.525)" x1="971.74" y1="1292.67" x2="932.56" y2="1400.33"/>
<linearGradient xlink:href="#b" id="e" gradientUnits="userSpaceOnUse" x1="971.74" y1="1292.67" x2="932.56" y2="1400.33" gradientTransform="translate(.422 78.47)"/>
<linearGradient xlink:href="#b" id="f" gradientUnits="userSpaceOnUse" x1="971.74" y1="1292.67" x2="932.56" y2="1400.33" gradientTransform="translate(15.41 103.417)"/>
<linearGradient xlink:href="#a" id="g" gradientUnits="userSpaceOnUse" gradientTransform="translate(0 9.525)" x1="971.74" y1="1292.67" x2="932.56" y2="1400.33"/>
<linearGradient xlink:href="#b" id="h" gradientUnits="userSpaceOnUse" gradientTransform="translate(15.537 103.417)" x1="971.74" y1="1292.67" x2="932.56" y2="1400.33"/>
</defs>
<path d="M-16-128.78h84.16v-13.47H-16z" fill="url(#c)" fill-rule="evenodd" transform="translate(97.61 286.26)"/>
<path d="M62.54 19.68l-11.1 12.7v-6.35H3.8v-12.7h47.63V6.98z" fill="none" stroke="#000" stroke-width=".26" stroke-linecap="square" stroke-miterlimit="2"/>
<text style="line-height:3.70416665px;-inkscape-font-specification:Verdana" x="-86.32" y="-265.15" font-size="5.64" font-family="Verdana" letter-spacing="0" word-spacing="0" stroke-width=".26" transform="translate(97.61 286.26)">
<tspan x="-86.32" y="-265.15" rotate="0 0 0 0 0 0 0 0 0 0 0 0 0">HTTP Request</tspan>
</text>
<path d="M65.4 287.57l-8.2-4.24h4.12L62.9 16.1l8.25.02-1.6 267.23h4.13z" fill="#a6b7cd" fill-rule="evenodd"/>
<text style="line-height:6px;-inkscape-font-specification:Verdana;text-align:start" x="-40.06" y="-282.13" font-size="5.64" font-family="Verdana" letter-spacing="0" word-spacing="0" stroke-width=".26" transform="translate(97.61 286.26)">
<tspan x="-40.06" y="-282.13" style="text-align:start">INancyEngine</tspan><tspan x="-40.06" y="-276.13" style="text-align:start">Processing Pipeline</tspan>
</text>
<path d="M77.36 35.4h92.66V23.1H77.36z" fill="#a6b7cd" fill-rule="evenodd"/>
<text style="line-height:4.30000019px;-inkscape-font-specification:Verdana;text-align:center" x="25.96" y="-257.97" font-size="4.23" font-family="Verdana" letter-spacing="0" word-spacing="0" text-anchor="middle" stroke-width=".26" transform="translate(97.61 286.26)">
<tspan x="26.71" y="-257.97" style="text-align:center" fill="#fff">Create NancyContext with </tspan><tspan x="25.96" y="-253.67" style="text-align:center" fill="#fff">INancyContextFactory</tspan>
</text>
<path d="M77.36 56.2h92.66V40.07H77.36z" fill="#a6b7cd" fill-rule="evenodd"/>
<text style="line-height:4.5px;-inkscape-font-specification:Verdana;text-align:center" x="25.87" y="-241.45" font-size="4.23" font-family="Verdana" letter-spacing="0" word-spacing="0" text-anchor="middle" stroke-width=".26" transform="translate(97.61 286.26)">
<tspan x="26.62" y="-241.45" style="text-align:center" fill="#fff">Return static content (e.g. *.js, *.css) </tspan><tspan x="25.87" y="-236.95" style="text-align:center" fill="#fff">based on StaticContentsConventions</tspan><tspan x="25.87" y="-232.45" style="text-align:center" fill="#fff">defined in the INancyBootstrapper</tspan>
</text>
<path d="M73.22 53.25l2.84-2.95v5.9z" fill="#a6b7cd"/>
<path d="M77.36 74.33h92.66V62.48H77.36z" fill="#a6b7cd" fill-rule="evenodd"/>
<text style="line-height:normal;-inkscape-font-specification:Calibri;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:center;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;text-transform:none;text-orientation:mixed;shape-padding:0" x="25.94" y="-197.95" font-size="4.23" font-family="Calibri" text-anchor="middle" white-space="normal" fill="#3c4988" stroke-width=".35" transform="translate(97.61 286.26)">
<tspan x="25.94" y="-197.95" style="line-height:normal;-inkscape-font-specification:Calibri;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:center;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;text-transform:none;text-orientation:mixed;shape-padding:0">Dispatch request with IRequestDispatcher</tspan>
</text>
<path d="M73.07 71.38l2.84-2.94v5.9z" fill="#a6b7cd"/>
<path d="M77.36 207.32h92.66V82.82H77.36z" fill="none" stroke="#3c4988" stroke-width=".26" stroke-linecap="square" stroke-miterlimit="2"/>
<path d="M81.6 105.32h84.17v-12.1H81.6z" fill="#3c4988" fill-rule="evenodd"/>
<text style="line-height:4.5px;-inkscape-font-specification:Verdana;text-align:center" x="26.06" y="-218.92" font-size="4.23" font-family="Verdana" letter-spacing="0" word-spacing="0" text-anchor="middle" stroke-width=".26" transform="translate(97.61 286.26)">
<tspan x="26.06" y="-218.92" style="text-align:center" fill="#fff">Evaluate BeforeRequest hooks configured</tspan><tspan x="26.06" y="-214.42" style="text-align:center" fill="#fff">in the INancyBootstrapper</tspan>
</text>
<text style="line-height:4.5px;-inkscape-font-specification:Verdana;text-align:center" x="25.87" y="-188.05" font-size="4.23" font-family="Verdana" letter-spacing="0" word-spacing="0" text-anchor="middle" stroke-width=".26" transform="translate(97.61 286.26)">
<tspan x="26.62" y="-188.05" style="text-align:center" fill="#fff">Match request to defined routes </tspan><tspan x="25.87" y="-183.55" style="text-align:center" fill="#fff">using IRouteResolver.</tspan>
</text>
<path d="M-26.55-247.57l5.1-2.95v5.9z" transform="matrix(.55556 0 0 1 88.086 402.102)" fill="url(#d)"/>
<text style="line-height:4.5px;-inkscape-font-specification:Verdana;text-align:center" x="26.08" y="-136.59" font-size="4.23" font-family="Verdana" letter-spacing="0" word-spacing="0" text-anchor="middle" stroke-width=".26" transform="translate(97.61 286.26)">
<tspan x="26.82" y="-136.59" style="text-align:center" fill="#fff">Evaluate BeforeRequest hooks </tspan><tspan x="26.08" y="-132.09" style="text-align:center" fill="#fff">configured in the NancyModule</tspan>
</text>
<path d="M81.6 139.88h84.17v-17.75H81.6z" fill="#3c4988" fill-rule="evenodd"/>
<text style="line-height:4.5px;-inkscape-font-specification:Verdana;text-align:center" x="26.06" y="-158.57" font-size="4.23" font-family="Verdana" letter-spacing="0" word-spacing="0" text-anchor="middle" stroke-width=".26" transform="translate(97.61 286.26)">
<tspan x="26.81" y="-158.57" style="text-align:center" fill="#fff">Route data is stored as </tspan><tspan x="26.06" y="-154.07" style="text-align:center" fill="#fff">NancyContext.ResolvedRoute and</tspan><tspan x="26.06" y="-149.57" style="text-align:center" fill="#fff">NancyContext.Parameters</tspan>
</text>
<path d="M81.6 169.44h84.17v-8.75H81.6z" fill="#d16d2a" fill-rule="evenodd"/>
<text style="line-height:4.5px;-inkscape-font-specification:Verdana;text-align:center" x="25.93" y="-120.02" font-size="4.23" font-family="Verdana" letter-spacing="0" word-spacing="0" text-anchor="middle" stroke-width=".26" transform="translate(97.61 286.26)">
<tspan x="25.93" y="-120.02" style="text-align:center" fill="#fff">Invoke route using IRouteInvoker</tspan>
</text>
<path d="M81.75 116.98h83.88v-11.66H81.75z" fill="none" stroke="#3c4988" stroke-width=".26" stroke-linecap="square" stroke-miterlimit="2"/>
<text style="line-height:4.5px;-inkscape-font-specification:Verdana;text-align:center" x="26.08" y="-176.19" font-size="4.23" font-family="Verdana" letter-spacing="0" word-spacing="0" text-anchor="middle" fill="#3c4988" stroke-width=".35" transform="translate(97.61 286.26)">
<tspan x="26.82" y="-176.19" style="text-align:center">The module is constructed </tspan><tspan x="26.08" y="-171.69" style="text-align:center">using the IModuleBuilder</tspan>
</text>
<path d="M81.75 186h83.88v-16.56H81.75z" fill="none" stroke="#d16d2a" stroke-width=".26" stroke-linecap="square" stroke-miterlimit="2"/>
<text style="line-height:4.5px;-inkscape-font-specification:Verdana;text-align:center" x="26.08" y="-111.85" font-size="4.23" font-family="Verdana" letter-spacing="0" word-spacing="0" text-anchor="middle" fill="#d16d2a" stroke-width=".35" transform="translate(97.61 286.26)">
<tspan x="26.82" y="-111.85" style="text-align:center">The ResponseNegotiator uses the </tspan><tspan x="26.08" y="-107.35" style="text-align:center">appropriate IResponseProcessor</tspan><tspan x="26.08" y="-102.85" style="text-align:center">to create the response.</tspan>
</text>
<path d="M-16-84.45h84.16v-13.47H-16z" fill="url(#e)" fill-rule="evenodd" transform="translate(97.61 286.26)"/>
<text style="line-height:4.5px;-inkscape-font-specification:Verdana;text-align:center" x="26.08" y="-92.25" font-size="4.23" font-family="Verdana" letter-spacing="0" word-spacing="0" text-anchor="middle" stroke-width=".26" transform="translate(97.61 286.26)">
<tspan x="26.82" y="-92.25" style="text-align:center" fill="#fff">Evaluate AfterRequest hooks </tspan><tspan x="26.08" y="-87.75" style="text-align:center" fill="#fff">configured in the NancyModule</tspan>
</text>
<path d="M167.68 204.65c2.62-.94 4.43-2.3 5.08-3.8v-39.6c5.63 0 5.63 0 0 0v-15.23c-.65-1.52-2.46-2.88-5.08-3.8" fill="none" stroke="#525252" stroke-width=".26" stroke-linecap="square" stroke-miterlimit="2"/>
<path d="M177.6 172.3l12.3-7.5 12.32 7.5-12.3 7.5z" fill="#d16d2a"/>
<text style="line-height:4.5px;-inkscape-font-specification:Verdana;text-align:center" x="92.12" y="-112.38" font-size="4.23" font-family="Verdana" letter-spacing="0" word-spacing="0" text-anchor="middle" stroke-width=".26" transform="translate(97.61 286.26)">
<tspan x="92.12" y="-112.38" style="text-align:center" fill="#fff">if error</tspan>
</text>
<path d="M-1-59.5h84.14v-13.47H-1z" fill="url(#f)" fill-rule="evenodd" transform="translate(97.61 286.26)"/>
<text style="line-height:4.5px;-inkscape-font-specification:Verdana;text-align:center" x="41.06" y="-67.31" font-size="4.23" font-family="Verdana" letter-spacing="0" word-spacing="0" text-anchor="middle" stroke-width=".26" transform="translate(97.61 286.26)">
<tspan x="41.81" y="-67.31" style="text-align:center" fill="#fff">Evaluate OnError hooks </tspan><tspan x="41.06" y="-62.81" style="text-align:center" fill="#fff">configured in the NancyModule</tspan>
</text>
<path d="M-26.55-247.57l5.1-2.95v5.9z" transform="matrix(.55556 0 0 1 105.992 471.384)" fill="url(#g)"/>
<path d="M172.92 172.4h4.16M190.1 181.47v38.37h-6.8" fill="none" stroke="#525252" stroke-width=".26" stroke-linecap="square" stroke-miterlimit="2"/>
<path d="M77.36 245.42h92.66v-11.85H77.36z" fill="#a6b7cd" fill-rule="evenodd"/>
<text style="line-height:4.5px;-inkscape-font-specification:Verdana;text-align:center" x="26.06" y="-47.83" font-size="4.23" font-family="Verdana" letter-spacing="0" word-spacing="0" text-anchor="middle" stroke-width=".26" transform="translate(97.61 286.26)">
<tspan x="26.06" y="-47.83" style="text-align:center" fill="#fff">Evaluate AfterRequest hooks configured</tspan><tspan x="26.06" y="-43.33" style="text-align:center" fill="#fff">in the INancyBootstrapper</tspan>
</text>
<path d="M200.1 249.1c2.6-.95 4.42-2.3 5.07-3.82v-165c5.63 0 5.63 0 0 0V65.06c-.65-1.52-2.46-2.87-5.08-3.8" fill="none" stroke="#525252" stroke-width=".26" stroke-linecap="square" stroke-miterlimit="2"/>
<path d="M210.62 213.23l12.3-7.5 12.3 7.5-12.3 7.5z" fill="#a6b7cd"/>
<text style="line-height:4.5px;-inkscape-font-specification:Verdana;text-align:center" x="125.13" y="-71.44" font-size="4.23" font-family="Verdana" letter-spacing="0" word-spacing="0" text-anchor="middle" stroke-width=".26" transform="translate(97.61 286.26)">
<tspan x="125.13" y="-71.44" style="text-align:center" fill="#fff">if error</tspan>
</text>
<path d="M129.34 267.6h84.15V254.1h-84.16z" fill="#a6b7cd" fill-rule="evenodd"/>
<path d="M123.98 264.65l2.83-2.95v5.9z" fill="#a6b7cd"/>
<path d="M205.66 213.23h4.16M222.83 222.3v38.37h-6.8" fill="none" stroke="#525252" stroke-width=".26" stroke-linecap="square" stroke-miterlimit="2"/>
<text style="line-height:4.5px;-inkscape-font-specification:Verdana;text-align:center" x="73.6" y="-26.46" font-size="4.23" font-family="Verdana" letter-spacing="0" word-spacing="0" text-anchor="middle" stroke-width=".26" transform="translate(97.61 286.26)">
<tspan x="74.34" y="-26.46" style="text-align:center" fill="#fff">Evaluate OnError hooks configured </tspan><tspan x="73.6" y="-21.96" style="text-align:center" fill="#fff">in the INancyBootstrapper</tspan>
</text>
<path d="M77.36 279.62h92.66v-8.82H77.36z" fill="#a6b7cd" fill-rule="evenodd"/>
<path d="M73.15 276.68l2.83-2.95v5.9z" fill="#a6b7cd"/>
<text style="line-height:4.5px;-inkscape-font-specification:Verdana;text-align:center" x="26.06" y="-9.87" font-size="4.23" font-family="Verdana" letter-spacing="0" word-spacing="0" text-anchor="middle" stroke-width=".26" transform="translate(97.61 286.26)">
<tspan x="26.06" y="-9.87" style="text-align:center" fill="#fff">Evaluate IStatusCodeHandler(s)</tspan>
</text>
<path d="M.18 281.22l11.1 12.7v-6.35h47.63v-12.7H11.3v-6.35z" fill="none" stroke="#000" stroke-width=".26" stroke-linecap="square" stroke-miterlimit="2"/>
<text style="line-height:3.70416665px;-inkscape-font-specification:Verdana" x="-86.02" y="-3.05" font-size="5.64" font-family="Verdana" letter-spacing="0" word-spacing="0" stroke-width=".26" transform="translate(97.61 286.26)">
<tspan x="-86.02" y="-3.05" rotate="0 0 0 0 0 0 0 0 0 0 0 0 0 0">HTTP Response</tspan>
</text>
<text style="line-height:3.70416665px;-inkscape-font-specification:Verdana" x="62.61" y="-29.52" transform="rotate(-90 191.935 94.326)" font-size="5.64" font-family="Verdana" letter-spacing="0" word-spacing="0" stroke-width=".26">
<tspan x="62.61" y="-29.52" fill="#fff">INancyEngine configured with INancyBootstrapper</tspan>
</text>
<path fill="#3c4988" d="M49.77 83.2h8.82v56.13h-8.83z"/>
<text style="line-height:3.70416665px;-inkscape-font-specification:Verdana;text-align:center" x="174.98" y="-41.95" transform="rotate(-90 191.935 94.326)" font-size="5.64" font-family="Verdana" letter-spacing="0" word-spacing="0" text-anchor="middle" stroke-width=".26">
<tspan x="174.98" y="-41.95" style="text-align:center" fill="#fff">Routing</tspan>
</text>
<path fill="url(#h)" d="M-47.84-142.12h8.82v81.52h-8.82z" transform="translate(97.61 286.26)"/>
<text style="line-height:3.70416665px;-inkscape-font-specification:Verdana;text-align:center" x="101.22" y="-41.85" transform="rotate(-90 191.935 94.326)" font-size="5.64" font-family="Verdana" letter-spacing="0" word-spacing="0" text-anchor="middle" stroke-width=".26">
<tspan x="101.22" y="-41.85" style="text-align:center" fill="#fff">NancyModule</tspan>
</text>
</svg>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment