/restkit-4.1.2/doc/_build/html/api/restkit.contrib.wsgi_proxy-pysrc.html

# · HTML · 329 lines · 298 code · 10 blank · 21 comment · 0 complexity · 1826246bdda70c4c17dc5a4dd8ed1d3c MD5 · raw file

  1. <?xml version="1.0" encoding="ascii"?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  3. "DTD/xhtml1-transitional.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  5. <head>
  6. <title>restkit.contrib.wsgi_proxy</title>
  7. <link rel="stylesheet" href="epydoc.css" type="text/css" />
  8. <script type="text/javascript" src="epydoc.js"></script>
  9. </head>
  10. <body bgcolor="white" text="black" link="blue" vlink="#204080"
  11. alink="#204080">
  12. <!-- ==================== NAVIGATION BAR ==================== -->
  13. <table class="navbar" border="0" width="100%" cellpadding="0"
  14. bgcolor="#a0c0ff" cellspacing="0">
  15. <tr valign="middle">
  16. <!-- Home link -->
  17. <th>&nbsp;&nbsp;&nbsp;<a
  18. href="restkit-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
  19. <!-- Tree link -->
  20. <th>&nbsp;&nbsp;&nbsp;<a
  21. href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
  22. <!-- Index link -->
  23. <th>&nbsp;&nbsp;&nbsp;<a
  24. href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
  25. <!-- Help link -->
  26. <th>&nbsp;&nbsp;&nbsp;<a
  27. href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
  28. <th class="navbar" width="100%"></th>
  29. </tr>
  30. </table>
  31. <table width="100%" cellpadding="0" cellspacing="0">
  32. <tr valign="top">
  33. <td width="100%">
  34. <span class="breadcrumbs">
  35. <a href="restkit-module.html">Package&nbsp;restkit</a> ::
  36. <a href="restkit.contrib-module.html">Package&nbsp;contrib</a> ::
  37. Module&nbsp;wsgi_proxy
  38. </span>
  39. </td>
  40. <td>
  41. <table cellpadding="0" cellspacing="0">
  42. <!-- hide/show private -->
  43. <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
  44. onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
  45. <tr><td align="right"><span class="options"
  46. >[<a href="frames.html" target="_top">frames</a
  47. >]&nbsp;|&nbsp;<a href="restkit.contrib.wsgi_proxy-pysrc.html"
  48. target="_top">no&nbsp;frames</a>]</span></td></tr>
  49. </table>
  50. </td>
  51. </tr>
  52. </table>
  53. <h1 class="epydoc">Source Code for <a href="restkit.contrib.wsgi_proxy-module.html">Module restkit.contrib.wsgi_proxy</a></h1>
  54. <pre class="py-src">
  55. <a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># -*- coding: utf-8 -</tt> </tt>
  56. <a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
  57. <a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of restkit released under the MIT license.</tt> </tt>
  58. <a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"># See the NOTICE for more information.</tt> </tt>
  59. <a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"> </tt>
  60. <a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urlparse</tt> </tt>
  61. <a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"> </tt>
  62. <a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
  63. <a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">cStringIO</tt> <tt class="py-keyword">import</tt> <tt class="py-name">StringIO</tt> </tt>
  64. <a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
  65. <a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">StringIO</tt> <tt class="py-keyword">import</tt> <tt class="py-name">StringIO</tt> </tt>
  66. <a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"> </tt>
  67. <a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package restkit=restkit-module.html"><a title="restkit" class="py-name" href="#" onclick="return doclink('link-0', 'restkit', 'link-0');">restkit</a></tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Module restkit.client=restkit.client-module.html"><a title="restkit.client" class="py-name" href="#" onclick="return doclink('link-1', 'client', 'link-1');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Class restkit.client.Client=restkit.client.Client-class.html"><a title="restkit.client.Client" class="py-name" href="#" onclick="return doclink('link-2', 'Client', 'link-2');">Client</a></tt> </tt>
  68. <a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-3" class="py-name"><a title="restkit" class="py-name" href="#" onclick="return doclink('link-3', 'restkit', 'link-0');">restkit</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module restkit.conn=restkit.conn-module.html"><a title="restkit.conn" class="py-name" href="#" onclick="return doclink('link-4', 'conn', 'link-4');">conn</a></tt> <tt class="py-keyword">import</tt> <tt id="link-5" class="py-name" targets="Variable restkit.conn.MAX_BODY=restkit.conn-module.html#MAX_BODY"><a title="restkit.conn.MAX_BODY" class="py-name" href="#" onclick="return doclink('link-5', 'MAX_BODY', 'link-5');">MAX_BODY</a></tt> </tt>
  69. <a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-6" class="py-name"><a title="restkit" class="py-name" href="#" onclick="return doclink('link-6', 'restkit', 'link-0');">restkit</a></tt><tt class="py-op">.</tt><tt id="link-7" class="py-name" targets="Module restkit.util=restkit.util-module.html"><a title="restkit.util" class="py-name" href="#" onclick="return doclink('link-7', 'util', 'link-7');">util</a></tt> <tt class="py-keyword">import</tt> <tt id="link-8" class="py-name" targets="Function restkit.util.rewrite_location()=restkit.util-module.html#rewrite_location"><a title="restkit.util.rewrite_location" class="py-name" href="#" onclick="return doclink('link-8', 'rewrite_location', 'link-8');">rewrite_location</a></tt> </tt>
  70. <a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"> </tt>
  71. <a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt id="link-9" class="py-name" targets="Variable restkit.contrib.wsgi_proxy.ALLOWED_METHODS=restkit.contrib.wsgi_proxy-module.html#ALLOWED_METHODS"><a title="restkit.contrib.wsgi_proxy.ALLOWED_METHODS" class="py-name" href="#" onclick="return doclink('link-9', 'ALLOWED_METHODS', 'link-9');">ALLOWED_METHODS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> <tt class="py-string">'HEAD'</tt><tt class="py-op">,</tt> <tt class="py-string">'POST'</tt><tt class="py-op">,</tt> <tt class="py-string">'PUT'</tt><tt class="py-op">,</tt> <tt class="py-string">'DELETE'</tt><tt class="py-op">]</tt> </tt>
  72. <a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt>
  73. <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt id="link-10" class="py-name" targets="Variable restkit.contrib.wsgi_proxy.BLOCK_SIZE=restkit.contrib.wsgi_proxy-module.html#BLOCK_SIZE"><a title="restkit.contrib.wsgi_proxy.BLOCK_SIZE" class="py-name" href="#" onclick="return doclink('link-10', 'BLOCK_SIZE', 'link-10');">BLOCK_SIZE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">4096</tt> <tt class="py-op">*</tt> <tt class="py-number">16</tt> </tt>
  74. <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"> </tt>
  75. <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt id="link-11" class="py-name" targets="Variable restkit.contrib.wsgi_proxy.WEBOB_ERROR=restkit.contrib.wsgi_proxy-module.html#WEBOB_ERROR"><a title="restkit.contrib.wsgi_proxy.WEBOB_ERROR" class="py-name" href="#" onclick="return doclink('link-11', 'WEBOB_ERROR', 'link-11');">WEBOB_ERROR</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"Content-Length is set to -1. This usually mean that WebOb has "</tt> </tt>
  76. <a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"> <tt class="py-string">"already parsed the content body. You should set the Content-Length "</tt> </tt>
  77. <a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"> <tt class="py-string">"header to the correct value before forwarding your request to the "</tt> </tt>
  78. <a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"> <tt class="py-string">"proxy: ``req.content_length = str(len(req.body));`` "</tt> </tt>
  79. <a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"> <tt class="py-string">"req.get_response(proxy)"</tt><tt class="py-op">)</tt> </tt>
  80. <a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"> </tt>
  81. <a name="Proxy"></a><div id="Proxy-def"><a name="L27"></a><tt class="py-lineno"> 27</tt> <a class="py-toggle" href="#" id="Proxy-toggle" onclick="return toggle('Proxy');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="restkit.contrib.wsgi_proxy.Proxy-class.html">Proxy</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
  82. </div><div id="Proxy-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Proxy-expanded"><a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"> <tt class="py-docstring">"""A proxy wich redirect the request to SERVER_NAME:SERVER_PORT</tt> </tt>
  83. <a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-docstring"> and send HTTP_HOST header"""</tt> </tt>
  84. <a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"> </tt>
  85. <a name="Proxy.__init__"></a><div id="Proxy.__init__-def"><a name="L31"></a><tt class="py-lineno"> 31</tt> <a class="py-toggle" href="#" id="Proxy.__init__-toggle" onclick="return toggle('Proxy.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="restkit.contrib.wsgi_proxy.Proxy-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">manager</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">allowed_methods</tt><tt class="py-op">=</tt><tt id="link-12" class="py-name"><a title="restkit.contrib.wsgi_proxy.ALLOWED_METHODS" class="py-name" href="#" onclick="return doclink('link-12', 'ALLOWED_METHODS', 'link-9');">ALLOWED_METHODS</a></tt><tt class="py-op">,</tt> </tt>
  86. <a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"> <tt class="py-param">strip_script_name</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
  87. </div><div id="Proxy.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Proxy.__init__-expanded"><a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">allowed_methods</tt> <tt class="py-op">=</tt> <tt class="py-name">allowed_methods</tt> </tt>
  88. <a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strip_script_name</tt> <tt class="py-op">=</tt> <tt class="py-name">strip_script_name</tt> </tt>
  89. <a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="restkit.client" class="py-name" href="#" onclick="return doclink('link-13', 'client', 'link-1');">client</a></tt> <tt class="py-op">=</tt> <tt id="link-14" class="py-name"><a title="restkit.client.Client" class="py-name" href="#" onclick="return doclink('link-14', 'Client', 'link-2');">Client</a></tt><tt class="py-op">(</tt><tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
  90. </div><a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"> </tt>
  91. <a name="Proxy.extract_uri"></a><div id="Proxy.extract_uri-def"><a name="L37"></a><tt class="py-lineno"> 37</tt> <a class="py-toggle" href="#" id="Proxy.extract_uri-toggle" onclick="return toggle('Proxy.extract_uri');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="restkit.contrib.wsgi_proxy.Proxy-class.html#extract_uri">extract_uri</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">environ</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
  92. </div><div id="Proxy.extract_uri-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Proxy.extract_uri-expanded"><a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
  93. <a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> <tt class="py-name">scheme</tt> <tt class="py-op">=</tt> <tt id="link-15" class="py-name" targets="Variable webob.response.Response.environ=webob.response.Response-class.html#environ"><a title="webob.response.Response.environ" class="py-name" href="#" onclick="return doclink('link-15', 'environ', 'link-15');">environ</a></tt><tt class="py-op">[</tt><tt class="py-string">'wsgi.url_scheme'</tt><tt class="py-op">]</tt> </tt>
  94. <a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'SERVER_NAME'</tt> <tt class="py-keyword">in</tt> <tt id="link-16" class="py-name"><a title="webob.response.Response.environ" class="py-name" href="#" onclick="return doclink('link-16', 'environ', 'link-15');">environ</a></tt><tt class="py-op">:</tt> </tt>
  95. <a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> <tt id="link-17" class="py-name" targets="Variable restkit.wrappers.Request.host=restkit.wrappers.Request-class.html#host"><a title="restkit.wrappers.Request.host" class="py-name" href="#" onclick="return doclink('link-17', 'host', 'link-17');">host</a></tt> <tt class="py-op">=</tt> <tt id="link-18" class="py-name"><a title="webob.response.Response.environ" class="py-name" href="#" onclick="return doclink('link-18', 'environ', 'link-15');">environ</a></tt><tt class="py-op">[</tt><tt class="py-string">'SERVER_NAME'</tt><tt class="py-op">]</tt> </tt>
  96. <a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
  97. <a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> <tt id="link-19" class="py-name"><a title="restkit.wrappers.Request.host" class="py-name" href="#" onclick="return doclink('link-19', 'host', 'link-17');">host</a></tt> <tt class="py-op">=</tt> <tt id="link-20" class="py-name"><a title="webob.response.Response.environ" class="py-name" href="#" onclick="return doclink('link-20', 'environ', 'link-15');">environ</a></tt><tt class="py-op">[</tt><tt class="py-string">'HTTP_HOST'</tt><tt class="py-op">]</tt> </tt>
  98. <a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">':'</tt> <tt class="py-keyword">in</tt> <tt id="link-21" class="py-name"><a title="restkit.wrappers.Request.host" class="py-name" href="#" onclick="return doclink('link-21', 'host', 'link-17');">host</a></tt><tt class="py-op">:</tt> </tt>
  99. <a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> <tt id="link-22" class="py-name"><a title="restkit.wrappers.Request.host" class="py-name" href="#" onclick="return doclink('link-22', 'host', 'link-17');">host</a></tt><tt class="py-op">,</tt> <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt id="link-23" class="py-name"><a title="restkit.wrappers.Request.host" class="py-name" href="#" onclick="return doclink('link-23', 'host', 'link-17');">host</a></tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">':'</tt><tt class="py-op">)</tt> </tt>
  100. <a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> </tt>
  101. <a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">port</tt><tt class="py-op">:</tt> </tt>
  102. <a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'SERVER_PORT'</tt> <tt class="py-keyword">in</tt> <tt id="link-24" class="py-name"><a title="webob.response.Response.environ" class="py-name" href="#" onclick="return doclink('link-24', 'environ', 'link-15');">environ</a></tt><tt class="py-op">:</tt> </tt>
  103. <a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt id="link-25" class="py-name"><a title="webob.response.Response.environ" class="py-name" href="#" onclick="return doclink('link-25', 'environ', 'link-15');">environ</a></tt><tt class="py-op">[</tt><tt class="py-string">'SERVER_PORT'</tt><tt class="py-op">]</tt> </tt>
  104. <a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
  105. <a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">scheme</tt> <tt class="py-op">==</tt> <tt class="py-string">'https'</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'443'</tt> <tt class="py-keyword">or</tt> <tt class="py-string">'80'</tt> </tt>
  106. <a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> </tt>
  107. <a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s://%s:%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">scheme</tt><tt class="py-op">,</tt> <tt id="link-26" class="py-name"><a title="restkit.wrappers.Request.host" class="py-name" href="#" onclick="return doclink('link-26', 'host', 'link-17');">host</a></tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">)</tt> </tt>
  108. <a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">uri</tt> </tt>
  109. </div><a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> </tt>
  110. <a name="Proxy.__call__"></a><div id="Proxy.__call__-def"><a name="L56"></a><tt class="py-lineno"> 56</tt> <a class="py-toggle" href="#" id="Proxy.__call__-toggle" onclick="return toggle('Proxy.__call__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="restkit.contrib.wsgi_proxy.Proxy-class.html#__call__">__call__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">environ</tt><tt class="py-op">,</tt> <tt class="py-param">start_response</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
  111. </div><div id="Proxy.__call__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Proxy.__call__-expanded"><a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt id="link-27" class="py-name" targets="Variable restkit.oauth2.Request.method=restkit.oauth2.Request-class.html#method"><a title="restkit.oauth2.Request.method" class="py-name" href="#" onclick="return doclink('link-27', 'method', 'link-27');">method</a></tt> <tt class="py-op">=</tt> <tt id="link-28" class="py-name"><a title="webob.response.Response.environ" class="py-name" href="#" onclick="return doclink('link-28', 'environ', 'link-15');">environ</a></tt><tt class="py-op">[</tt><tt class="py-string">'REQUEST_METHOD'</tt><tt class="py-op">]</tt> </tt>
  112. <a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-29" class="py-name"><a title="restkit.oauth2.Request.method" class="py-name" href="#" onclick="return doclink('link-29', 'method', 'link-27');">method</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">allowed_methods</tt><tt class="py-op">:</tt> </tt>
  113. <a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-name">start_response</tt><tt class="py-op">(</tt><tt class="py-string">'403 Forbidden'</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
  114. <a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-string">''</tt><tt class="py-op">]</tt> </tt>
  115. <a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> </tt>
  116. <a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strip_script_name</tt><tt class="py-op">:</tt> </tt>
  117. <a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-name">path_info</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
  118. <a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
  119. <a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-name">path_info</tt> <tt class="py-op">=</tt> <tt id="link-30" class="py-name"><a title="webob.response.Response.environ" class="py-name" href="#" onclick="return doclink('link-30', 'environ', 'link-15');">environ</a></tt><tt class="py-op">[</tt><tt class="py-string">'SCRIPT_NAME'</tt><tt class="py-op">]</tt> </tt>
  120. <a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-name">path_info</tt> <tt class="py-op">+=</tt> <tt id="link-31" class="py-name"><a title="webob.response.Response.environ" class="py-name" href="#" onclick="return doclink('link-31', 'environ', 'link-15');">environ</a></tt><tt class="py-op">[</tt><tt class="py-string">'PATH_INFO'</tt><tt class="py-op">]</tt> </tt>
  121. <a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> </tt>
  122. <a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-name">query_string</tt> <tt class="py-op">=</tt> <tt id="link-32" class="py-name"><a title="webob.response.Response.environ" class="py-name" href="#" onclick="return doclink('link-32', 'environ', 'link-15');">environ</a></tt><tt class="py-op">[</tt><tt class="py-string">'QUERY_STRING'</tt><tt class="py-op">]</tt> </tt>
  123. <a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">query_string</tt><tt class="py-op">:</tt> </tt>
  124. <a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-name">path_info</tt> <tt class="py-op">+=</tt> <tt class="py-string">'?'</tt> <tt class="py-op">+</tt> <tt class="py-name">query_string</tt> </tt>
  125. <a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> </tt>
  126. <a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-name">host_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name" targets="Method restkit.contrib.wsgi_proxy.HostProxy.extract_uri()=restkit.contrib.wsgi_proxy.HostProxy-class.html#extract_uri,Method restkit.contrib.wsgi_proxy.Proxy.extract_uri()=restkit.contrib.wsgi_proxy.Proxy-class.html#extract_uri,Method restkit.contrib.wsgi_proxy.TransparentProxy.extract_uri()=restkit.contrib.wsgi_proxy.TransparentProxy-class.html#extract_uri"><a title="restkit.contrib.wsgi_proxy.HostProxy.extract_uri
  127. restkit.contrib.wsgi_proxy.Proxy.extract_uri
  128. restkit.contrib.wsgi_proxy.TransparentProxy.extract_uri" class="py-name" href="#" onclick="return doclink('link-33', 'extract_uri', 'link-33');">extract_uri</a></tt><tt class="py-op">(</tt><tt id="link-34" class="py-name"><a title="webob.response.Response.environ" class="py-name" href="#" onclick="return doclink('link-34', 'environ', 'link-15');">environ</a></tt><tt class="py-op">)</tt> </tt>
  129. <a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">host_uri</tt> <tt class="py-op">+</tt> <tt class="py-name">path_info</tt> </tt>
  130. <a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> </tt>
  131. <a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-name">new_headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
  132. <a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">k</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt id="link-35" class="py-name"><a title="webob.response.Response.environ" class="py-name" href="#" onclick="return doclink('link-35', 'environ', 'link-15');">environ</a></tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method restkit.datastructures.MultiDict.items()=restkit.datastructures.MultiDict-class.html#items"><a title="restkit.datastructures.MultiDict.items" class="py-name" href="#" onclick="return doclink('link-36', 'items', 'link-36');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
  133. <a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">k</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'HTTP_'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
  134. <a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-name">k</tt> <tt class="py-op">=</tt> <tt class="py-name">k</tt><tt class="py-op">[</tt><tt class="py-number">5</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'_'</tt><tt class="py-op">,</tt> <tt class="py-string">'-'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">title</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
  135. <a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-name">new_headers</tt><tt class="py-op">[</tt><tt class="py-name">k</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">v</tt> </tt>
  136. <a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> </tt>
  137. <a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> </tt>
  138. <a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-name">ctype</tt> <tt class="py-op">=</tt> <tt id="link-37" class="py-name"><a title="webob.response.Response.environ" class="py-name" href="#" onclick="return doclink('link-37', 'environ', 'link-15');">environ</a></tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Variable restkit.contrib.webob_api.Request.get=restkit.contrib.webob_api.Request-class.html#get,Method restkit.resource.Resource.get()=restkit.resource.Resource-class.html#get"><a title="restkit.contrib.webob_api.Request.get
  139. restkit.resource.Resource.get" class="py-name" href="#" onclick="return doclink('link-38', 'get', 'link-38');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"CONTENT_TYPE"</tt><tt class="py-op">)</tt> </tt>
  140. <a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ctype</tt> <tt class="py-keyword">and</tt> <tt class="py-name">ctype</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
  141. <a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-name">new_headers</tt><tt class="py-op">[</tt><tt class="py-string">'Content-Type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">ctype</tt> </tt>
  142. <a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> </tt>
  143. <a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-name">clen</tt> <tt class="py-op">=</tt> <tt id="link-39" class="py-name"><a title="webob.response.Response.environ" class="py-name" href="#" onclick="return doclink('link-39', 'environ', 'link-15');">environ</a></tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="restkit.contrib.webob_api.Request.get
  144. restkit.resource.Resource.get" class="py-name" href="#" onclick="return doclink('link-40', 'get', 'link-38');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'CONTENT_LENGTH'</tt><tt class="py-op">)</tt> </tt>
  145. <a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-name">te</tt> <tt class="py-op">=</tt> <tt id="link-41" class="py-name"><a title="webob.response.Response.environ" class="py-name" href="#" onclick="return doclink('link-41', 'environ', 'link-15');">environ</a></tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="restkit.contrib.webob_api.Request.get
  146. restkit.resource.Resource.get" class="py-name" href="#" onclick="return doclink('link-42', 'get', 'link-38');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'transfer-encoding'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
  147. <a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">clen</tt> <tt class="py-keyword">and</tt> <tt class="py-name">te</tt> <tt class="py-op">!=</tt> <tt class="py-string">'chunked'</tt><tt class="py-op">:</tt> </tt>
  148. <a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-name">new_headers</tt><tt class="py-op">[</tt><tt class="py-string">'transfer-encoding'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'chunked'</tt> </tt>
  149. <a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> </tt>
  150. <a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">new_headers</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="restkit.contrib.webob_api.Request.get
  151. restkit.resource.Resource.get" class="py-name" href="#" onclick="return doclink('link-43', 'get', 'link-38');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'Content-Length'</tt><tt class="py-op">,</tt> <tt class="py-string">'0'</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'-1'</tt><tt class="py-op">:</tt> </tt>
  152. <a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt id="link-44" class="py-name"><a title="restkit.contrib.wsgi_proxy.WEBOB_ERROR" class="py-name" href="#" onclick="return doclink('link-44', 'WEBOB_ERROR', 'link-11');">WEBOB_ERROR</a></tt><tt class="py-op">)</tt> </tt>
  153. <a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> </tt>
  154. <a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-name">response</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="restkit.client" class="py-name" href="#" onclick="return doclink('link-45', 'client', 'link-1');">client</a></tt><tt class="py-op">.</tt><tt id="link-46" class="py-name" targets="Method restkit.client.Client.request()=restkit.client.Client-class.html#request,Method restkit.contrib.ipython_shell.ShellClient.request()=restkit.contrib.ipython_shell.ShellClient-class.html#request,Function restkit.request()=restkit-module.html#request,Method restkit.resource.Resource.request()=restkit.resource.Resource-class.html#request,Variable webob.response.Response.request=webob.response.Response-class.html#request"><a title="restkit.client.Client.request
  155. restkit.contrib.ipython_shell.ShellClient.request
  156. restkit.request
  157. restkit.resource.Resource.request
  158. webob.response.Response.request" class="py-name" href="#" onclick="return doclink('link-46', 'request', 'link-46');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt id="link-47" class="py-name"><a title="restkit.oauth2.Request.method" class="py-name" href="#" onclick="return doclink('link-47', 'method', 'link-27');">method</a></tt><tt class="py-op">,</tt> <tt id="link-48" class="py-name" targets="Variable restkit.wrappers.Request.body=restkit.wrappers.Request-class.html#body"><a title="restkit.wrappers.Request.body" class="py-name" href="#" onclick="return doclink('link-48', 'body', 'link-48');">body</a></tt><tt class="py-op">=</tt><tt id="link-49" class="py-name"><a title="webob.response.Response.environ" class="py-name" href="#" onclick="return doclink('link-49', 'environ', 'link-15');">environ</a></tt><tt class="py-op">[</tt><tt class="py-string">'wsgi.input'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
  159. <a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt id="link-50" class="py-name" targets="Variable restkit.wrappers.Request.headers=restkit.wrappers.Request-class.html#headers"><a title="restkit.wrappers.Request.headers" class="py-name" href="#" onclick="return doclink('link-50', 'headers', 'link-50');">headers</a></tt><tt class="py-op">=</tt><tt class="py-name">new_headers</tt><tt class="py-op">)</tt> </tt>
  160. <a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> </tt>
  161. <a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'location'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">response</tt><tt class="py-op">:</tt> </tt>
  162. <a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strip_script_name</tt><tt class="py-op">:</tt> </tt>
  163. <a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-name">prefix_path</tt> <tt class="py-op">=</tt> <tt id="link-51" class="py-name"><a title="webob.response.Response.environ" class="py-name" href="#" onclick="return doclink('link-51', 'environ', 'link-15');">environ</a></tt><tt class="py-op">[</tt><tt class="py-string">'SCRIPT_NAME'</tt><tt class="py-op">]</tt> </tt>
  164. <a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> </tt>
  165. <a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-name">new_location</tt> <tt class="py-op">=</tt> <tt id="link-52" class="py-name"><a title="restkit.util.rewrite_location" class="py-name" href="#" onclick="return doclink('link-52', 'rewrite_location', 'link-8');">rewrite_location</a></tt><tt class="py-op">(</tt><tt class="py-name">host_uri</tt><tt class="py-op">,</tt> <tt class="py-name">response</tt><tt class="py-op">.</tt><tt class="py-name">location</tt><tt class="py-op">,</tt> </tt>
  166. <a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-name">prefix_path</tt><tt class="py-op">=</tt><tt class="py-name">prefix_path</tt><tt class="py-op">)</tt> </tt>
  167. <a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> </tt>
  168. <a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt id="link-53" class="py-name"><a title="restkit.wrappers.Request.headers" class="py-name" href="#" onclick="return doclink('link-53', 'headers', 'link-50');">headers</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
  169. <a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">k</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">response</tt><tt class="py-op">.</tt><tt class="py-name">headerslist</tt><tt class="py-op">:</tt> </tt>
  170. <a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">k</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'location'</tt><tt class="py-op">:</tt> </tt>
  171. <a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-name">v</tt> <tt class="py-op">=</tt> <tt class="py-name">new_location</tt> </tt>
  172. <a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt id="link-54" class="py-name"><a title="restkit.wrappers.Request.headers" class="py-name" href="#" onclick="return doclink('link-54', 'headers', 'link-50');">headers</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
  173. <a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
  174. <a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt id="link-55" class="py-name"><a title="restkit.wrappers.Request.headers" class="py-name" href="#" onclick="return doclink('link-55', 'headers', 'link-50');">headers</a></tt> <tt class="py-op">=</tt> <tt class="py-name">response</tt><tt class="py-op">.</tt><tt class="py-name">headerslist</tt> </tt>
  175. <a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> </tt>
  176. <a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-name">start_response</tt><tt class="py-op">(</tt><tt class="py-name">response</tt><tt class="py-op">.</tt><tt class="py-name">status</tt><tt class="py-op">,</tt> <tt id="link-56" class="py-name"><a title="restkit.wrappers.Request.headers" class="py-name" href="#" onclick="return doclink('link-56', 'headers', 'link-50');">headers</a></tt><tt class="py-op">)</tt> </tt>
  177. <a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> </tt>
  178. <a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-57" class="py-name"><a title="restkit.oauth2.Request.method" class="py-name" href="#" onclick="return doclink('link-57', 'method', 'link-27');">method</a></tt> <tt class="py-op">==</tt> <tt class="py-string">"HEAD"</tt><tt class="py-op">:</tt> </tt>
  179. <a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">StringIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
  180. <a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> </tt>
  181. <a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">response</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name" targets="Module restkit.tee=restkit.tee-module.html,Method restkit.wrappers.Response.tee()=restkit.wrappers.Response-class.html#tee"><a title="restkit.tee
  182. restkit.wrappers.Response.tee" class="py-name" href="#" onclick="return doclink('link-58', 'tee', 'link-58');">tee</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
  183. </div></div><a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> </tt>
  184. <a name="TransparentProxy"></a><div id="TransparentProxy-def"><a name="L119"></a><tt class="py-lineno">119</tt> <a class="py-toggle" href="#" id="TransparentProxy-toggle" onclick="return toggle('TransparentProxy');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="restkit.contrib.wsgi_proxy.TransparentProxy-class.html">TransparentProxy</a><tt class="py-op">(</tt><tt class="py-base-class">Proxy</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
  185. </div><div id="TransparentProxy-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="TransparentProxy-expanded"><a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-docstring">"""A proxy based on HTTP_HOST environ variable"""</tt> </tt>
  186. <a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> </tt>
  187. <a name="TransparentProxy.extract_uri"></a><div id="TransparentProxy.extract_uri-def"><a name="L122"></a><tt class="py-lineno">122</tt> <a class="py-toggle" href="#" id="TransparentProxy.extract_uri-toggle" onclick="return toggle('TransparentProxy.extract_uri');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="restkit.contrib.wsgi_proxy.TransparentProxy-class.html#extract_uri">extract_uri</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">environ</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
  188. </div><div id="TransparentProxy.extract_uri-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TransparentProxy.extract_uri-expanded"><a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
  189. <a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-name">scheme</tt> <tt class="py-op">=</tt> <tt id="link-59" class="py-name"><a title="webob.response.Response.environ" class="py-name" href="#" onclick="return doclink('link-59', 'environ', 'link-15');">environ</a></tt><tt class="py-op">[</tt><tt class="py-string">'wsgi.url_scheme'</tt><tt class="py-op">]</tt> </tt>
  190. <a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt id="link-60" class="py-name"><a title="restkit.wrappers.Request.host" class="py-name" href="#" onclick="return doclink('link-60', 'host', 'link-17');">host</a></tt> <tt class="py-op">=</tt> <tt id="link-61" class="py-name"><a title="webob.response.Response.environ" class="py-name" href="#" onclick="return doclink('link-61', 'environ', 'link-15');">environ</a></tt><tt class="py-op">[</tt><tt class="py-string">'HTTP_HOST'</tt><tt class="py-op">]</tt> </tt>
  191. <a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">':'</tt> <tt class="py-keyword">in</tt> <tt id="link-62" class="py-name"><a title="restkit.wrappers.Request.host" class="py-name" href="#" onclick="return doclink('link-62', 'host', 'link-17');">host</a></tt><tt class="py-op">:</tt> </tt>
  192. <a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt id="link-63" class="py-name"><a title="restkit.wrappers.Request.host" class="py-name" href="#" onclick="return doclink('link-63', 'host', 'link-17');">host</a></tt><tt class="py-op">,</tt> <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt id="link-64" class="py-name"><a title="restkit.wrappers.Request.host" class="py-name" href="#" onclick="return doclink('link-64', 'host', 'link-17');">host</a></tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">':'</tt><tt class="py-op">)</tt> </tt>
  193. <a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> </tt>
  194. <a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">port</tt><tt class="py-op">:</tt> </tt>
  195. <a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">scheme</tt> <tt class="py-op">==</tt> <tt class="py-string">'https'</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'443'</tt> <tt class="py-keyword">or</tt> <tt class="py-string">'80'</tt> </tt>
  196. <a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> </tt>
  197. <a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s://%s:%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">scheme</tt><tt class="py-op">,</tt> <tt id="link-65" class="py-name"><a title="restkit.wrappers.Request.host" class="py-name" href="#" onclick="return doclink('link-65', 'host', 'link-17');">host</a></tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">)</tt> </tt>
  198. <a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">uri</tt> </tt>
  199. </div></div><a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> </tt>
  200. <a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> </tt>
  201. <a name="HostProxy"></a><div id="HostProxy-def"><a name="L136"></a><tt class="py-lineno">136</tt> <a class="py-toggle" href="#" id="HostProxy-toggle" onclick="return toggle('HostProxy');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="restkit.contrib.wsgi_proxy.HostProxy-class.html">HostProxy</a><tt class="py-op">(</tt><tt class="py-base-class">Proxy</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
  202. </div><div id="HostProxy-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="HostProxy-expanded"><a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-docstring">"""A proxy to redirect all request to a specific uri"""</tt> </tt>
  203. <a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> </tt>
  204. <a name="HostProxy.__init__"></a><div id="HostProxy.__init__-def"><a name="L139"></a><tt class="py-lineno">139</tt> <a class="py-toggle" href="#" id="HostProxy.__init__-toggle" onclick="return toggle('HostProxy.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="restkit.contrib.wsgi_proxy.HostProxy-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
  205. </div><div id="HostProxy.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostProxy.__init__-expanded"><a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-66" class="py-name" targets="Class restkit.contrib.wsgi_proxy.HostProxy=restkit.contrib.wsgi_proxy.HostProxy-class.html"><a title="restkit.contrib.wsgi_proxy.HostProxy" class="py-name" href="#" onclick="return doclink('link-66', 'HostProxy', 'link-66');">HostProxy</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name" targets="Method restkit.client.Client.__init__()=restkit.client.Client-class.html#__init__,Method restkit.conn.Connection.__init__()=restkit.conn.Connection-class.html#__init__,Method restkit.contrib.ipython_shell.JSON.__init__()=restkit.contrib.ipython_shell.JSON-class.html#__init__,Method restkit.contrib.ipython_shell.RestShell.__init__()=restkit.contrib.ipython_shell.RestShell-class.html#__init__,Method restkit.contrib.ipython_shell.ShellClient.__init__()=restkit.contrib.ipython_shell.ShellClient-class.html#__init__,Method restkit.contrib.webob_api.Method.__init__()=restkit.contrib.webob_api.Method-class.html#__init__,Method restkit.contrib.webob_helper.WebobResourceError.__init__()=restkit.contrib.webob_helper.WebobResourceError-class.html#__init__,Method restkit.contrib.wsgi_proxy.HostProxy.__init__()=restkit.contrib.wsgi_proxy.HostProxy-class.html#__init__,Method restkit.contrib.wsgi_proxy.Proxy.__init__()=restkit.contrib.wsgi_proxy.Proxy-class.html#__init__,Method restkit.datastructures.MultiDict.__init__()=restkit.datastructures.MultiDict-class.html#__init__,Method restkit.errors.ChunkMissingTerminator.__init__()=restkit.errors.ChunkMissingTerminator-class.html#__init__,Method restkit.errors.InvalidChunkSize.__init__()=restkit.errors.InvalidChunkSize-class.html#__init__,Method restkit.errors.InvalidHTTPStatus.__init__()=restkit.errors.InvalidHTTPStatus-class.html#__init__,Method restkit.errors.InvalidHTTPVersion.__init__()=restkit.errors.InvalidHTTPVersion-class.html#__init__,Method restkit.errors.InvalidHeader.__init__()=restkit.errors.InvalidHeader-class.html#__init__,Method restkit.errors.InvalidHeaderName.__init__()=restkit.errors.InvalidHeaderName-class.html#__init__,Method restkit.errors.InvalidRequestLine.__init__()=restkit.errors.InvalidRequestLine-class.html#__init__,Method restkit.errors.InvalidRequestMethod.__init__()=restkit.errors.InvalidRequestMethod-class.html#__init__,Method restkit.errors.NoMoreData.__init__()=restkit.errors.NoMoreData-class.html#__init__,Method restkit.errors.ResourceError.__init__()=restkit.errors.ResourceError-class.html#__init__,Method restkit.filters.BasicAuth.__init__()=restkit.filters.BasicAuth-class.html#__init__,Method restkit.filters.OAuthFilter.__init__()=restkit.filters.OAuthFilter-class.html#__init__,Method restkit.forms.BoundaryItem.__init__()=restkit.forms.BoundaryItem-class.html#__init__,Method restkit.forms.MultipartForm.__init__()=restkit.forms.MultipartForm-class.html#__init__,Method restkit.oauth2.Consumer.__init__()=restkit.oauth2.Consumer-class.html#__init__,Method restkit.oauth2.Error.__init__()=restkit.oauth2.Error-class.html#__init__,Method restkit.oauth2.Request.__init__()=restkit.oauth2.Request-class.html#__init__,Method restkit.oauth2.Token.__init__()=restkit.oauth2.Token-class.html#__init__,Method restkit.resource.Resource.__init__()=restkit.resource.Resource-class.html#__init__,Method restkit.tee.ResponseTeeInput.__init__()=restkit.tee.ResponseTeeInput-class.html#__init__,Method restkit.tee.TeeInput.__init__()=restkit.tee.TeeInput-class.html#__init__,Method restkit.util.deprecated_property.__init__()=restkit.util.deprecated_property-class.html#__init__,Method restkit.wrappers.BodyWrapper.__init__()=restkit.wrappers.BodyWrapper-class.html#__init__,Method restkit.wrappers.Request.__init__()=restkit.wrappers.Request-class.html#__init__,Method restkit.wrappers.Response.__init__()=restkit.wrappers.Response-class.html#__init__"><a title="restkit.client.Client.__init__
  206. restkit.conn.Connection.__init__
  207. restkit.contrib.ipython_shell.JSON.__init__
  208. restkit.contrib.ipython_shell.RestShell.__init__
  209. restkit.contrib.ipython_shell.ShellClient.__init__
  210. restkit.contrib.webob_api.Method.__init__
  211. restkit.contrib.webob_helper.WebobResourceError.__init__
  212. restkit.contrib.wsgi_proxy.HostProxy.__init__
  213. restkit.contrib.wsgi_proxy.Proxy.__init__
  214. restkit.datastructures.MultiDict.__init__
  215. restkit.errors.ChunkMissingTerminator.__init__
  216. restkit.errors.InvalidChunkSize.__init__
  217. restkit.errors.InvalidHTTPStatus.__init__
  218. restkit.errors.InvalidHTTPVersion.__init__
  219. restkit.errors.InvalidHeader.__init__
  220. restkit.errors.InvalidHeaderName.__init__
  221. restkit.errors.InvalidRequestLine.__init__
  222. restkit.errors.InvalidRequestMethod.__init__
  223. restkit.errors.NoMoreData.__init__
  224. restkit.errors.ResourceError.__init__
  225. restkit.filters.BasicAuth.__init__
  226. restkit.filters.OAuthFilter.__init__
  227. restkit.forms.BoundaryItem.__init__
  228. restkit.forms.MultipartForm.__init__
  229. restkit.oauth2.Consumer.__init__
  230. restkit.oauth2.Error.__init__
  231. restkit.oauth2.Request.__init__
  232. restkit.oauth2.Token.__init__
  233. restkit.resource.Resource.__init__
  234. restkit.tee.ResponseTeeInput.__init__
  235. restkit.tee.TeeInput.__init__
  236. restkit.util.deprecated_property.__init__
  237. restkit.wrappers.BodyWrapper.__init__
  238. restkit.wrappers.Request.__init__
  239. restkit.wrappers.Response.__init__" class="py-name" href="#" onclick="return doclink('link-67', '__init__', 'link-67');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
  240. <a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt><tt class="py-op">.</tt><tt class="py-name">rstrip</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt> </tt>
  241. <a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scheme</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">net_loc</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
  242. </div><a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> </tt>
  243. <a name="HostProxy.extract_uri"></a><div id="HostProxy.extract_uri-def"><a name="L144"></a><tt class="py-lineno">144</tt> <a class="py-toggle" href="#" id="HostProxy.extract_uri-toggle" onclick="return toggle('HostProxy.extract_uri');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="restkit.contrib.wsgi_proxy.HostProxy-class.html#extract_uri">extract_uri</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">environ</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
  244. </div><div id="HostProxy.extract_uri-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostProxy.extract_uri-expanded"><a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt id="link-68" class="py-name"><a title="webob.response.Response.environ" class="py-name" href="#" onclick="return doclink('link-68', 'environ', 'link-15');">environ</a></tt><tt class="py-op">[</tt><tt class="py-string">'HTTP_HOST'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">net_loc</tt> </tt>
  245. <a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt> </tt>
  246. </div></div><a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> </tt>
  247. <a name="get_config"></a><div id="get_config-def"><a name="L148"></a><tt class="py-lineno">148</tt> <a class="py-toggle" href="#" id="get_config-toggle" onclick="return toggle('get_config');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="restkit.contrib.wsgi_proxy-module.html#get_config">get_config</a><tt class="py-op">(</tt><tt class="py-param">local_config</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
  248. </div><div id="get_config-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_config-expanded"><a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-docstring">"""parse paste config"""</tt> </tt>
  249. <a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-name">config</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
  250. <a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-name">allowed_methods</tt> <tt class="py-op">=</tt> <tt class="py-name">local_config</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="restkit.contrib.webob_api.Request.get
  251. restkit.resource.Resource.get" class="py-name" href="#" onclick="return doclink('link-69', 'get', 'link-38');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'allowed_methods'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
  252. <a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">allowed_methods</tt><tt class="py-op">:</tt> </tt>
  253. <a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-name">config</tt><tt class="py-op">[</tt><tt class="py-string">'allowed_methods'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py-keyword">in</tt> <tt class="py-name">allowed_methods</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
  254. <a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-name">strip_script_name</tt> <tt class="py-op">=</tt> <tt class="py-name">local_config</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="restkit.contrib.webob_api.Request.get
  255. restkit.resource.Resource.get" class="py-name" href="#" onclick="return doclink('link-70', 'get', 'link-38');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'strip_script_name'</tt><tt class="py-op">,</tt> <tt class="py-string">'true'</tt><tt class="py-op">)</tt> </tt>
  256. <a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">strip_script_name</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'false'</tt><tt class="py-op">,</tt> <tt class="py-string">'0'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
  257. <a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-name">config</tt><tt class="py-op">[</tt><tt class="py-string">'strip_script_name'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
  258. <a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-name">config</tt><tt class="py-op">[</tt><tt class="py-string">'max_connections'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">local_config</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="restkit.contrib.webob_api.Request.get
  259. restkit.resource.Resource.get" class="py-name" href="#" onclick="return doclink('link-71', 'get', 'link-38');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'max_connections'</tt><tt class="py-op">,</tt> <tt class="py-string">'5'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
  260. <a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">config</tt> </tt>
  261. </div><a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> </tt>
  262. <a name="make_proxy"></a><div id="make_proxy-def"><a name="L160"></a><tt class="py-lineno">160</tt> <a class="py-toggle" href="#" id="make_proxy-toggle" onclick="return toggle('make_proxy');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="restkit.contrib.wsgi_proxy-module.html#make_proxy">make_proxy</a><tt class="py-op">(</tt><tt class="py-param">global_config</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">local_config</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
  263. </div><div id="make_proxy-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="make_proxy-expanded"><a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-docstring">"""TransparentProxy entry_point"""</tt> </tt>
  264. <a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> <tt class="py-name">config</tt> <tt class="py-op">=</tt> <tt id="link-72" class="py-name" targets="Function restkit.contrib.wsgi_proxy.get_config()=restkit.contrib.wsgi_proxy-module.html#get_config"><a title="restkit.contrib.wsgi_proxy.get_config" class="py-name" href="#" onclick="return doclink('link-72', 'get_config', 'link-72');">get_config</a></tt><tt class="py-op">(</tt><tt class="py-name">local_config</tt><tt class="py-op">)</tt> </tt>
  265. <a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-73" class="py-name" targets="Class restkit.contrib.wsgi_proxy.TransparentProxy=restkit.contrib.wsgi_proxy.TransparentProxy-class.html"><a title="restkit.contrib.wsgi_proxy.TransparentProxy" class="py-name" href="#" onclick="return doclink('link-73', 'TransparentProxy', 'link-73');">TransparentProxy</a></tt><tt class="py-op">(</tt><tt class="py-op">**</tt><tt class="py-name">config</tt><tt class="py-op">)</tt> </tt>
  266. </div><a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> </tt>
  267. <a name="make_host_proxy"></a><div id="make_host_proxy-def"><a name="L165"></a><tt class="py-lineno">165</tt> <a class="py-toggle" href="#" id="make_host_proxy-toggle" onclick="return toggle('make_host_proxy');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="restkit.contrib.wsgi_proxy-module.html#make_host_proxy">make_host_proxy</a><tt class="py-op">(</tt><tt class="py-param">global_config</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">local_config</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
  268. </div><div id="make_host_proxy-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="make_host_proxy-expanded"><a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-docstring">"""HostProxy entry_point"""</tt> </tt>
  269. <a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt><tt class="py-op">.</tt><tt class="py-name">rstrip</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt> </tt>
  270. <a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-name">config</tt> <tt class="py-op">=</tt> <tt id="link-74" class="py-name"><a title="restkit.contrib.wsgi_proxy.get_config" class="py-name" href="#" onclick="return doclink('link-74', 'get_config', 'link-72');">get_config</a></tt><tt class="py-op">(</tt><tt class="py-name">local_config</tt><tt class="py-op">)</tt> </tt>
  271. <a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-75" class="py-name"><a title="restkit.contrib.wsgi_proxy.HostProxy" class="py-name" href="#" onclick="return doclink('link-75', 'HostProxy', 'link-66');">HostProxy</a></tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">config</tt><tt class="py-op">)</tt> </tt>
  272. </div><a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> </tt><script type="text/javascript">
  273. <!--
  274. expandto(location.href);
  275. // -->
  276. </script>
  277. </pre>
  278. <br />
  279. <!-- ==================== NAVIGATION BAR ==================== -->
  280. <table class="navbar" border="0" width="100%" cellpadding="0"
  281. bgcolor="#a0c0ff" cellspacing="0">
  282. <tr valign="middle">
  283. <!-- Home link -->
  284. <th>&nbsp;&nbsp;&nbsp;<a
  285. href="restkit-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
  286. <!-- Tree link -->
  287. <th>&nbsp;&nbsp;&nbsp;<a
  288. href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
  289. <!-- Index link -->
  290. <th>&nbsp;&nbsp;&nbsp;<a
  291. href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
  292. <!-- Help link -->
  293. <th>&nbsp;&nbsp;&nbsp;<a
  294. href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
  295. <th class="navbar" width="100%"></th>
  296. </tr>
  297. </table>
  298. <table border="0" cellpadding="0" cellspacing="0" width="100%%">
  299. <tr>
  300. <td align="left" class="footer">
  301. Generated by Epydoc 3.0.1 on Tue Jan 31 01:25:15 2012
  302. </td>
  303. <td align="right" class="footer">
  304. <a target="mainFrame" href="http://epydoc.sourceforge.net"
  305. >http://epydoc.sourceforge.net</a>
  306. </td>
  307. </tr>
  308. </table>
  309. <script type="text/javascript">
  310. <!--
  311. // Private objects are initially displayed (because if
  312. // javascript is turned off then we want them to be
  313. // visible); but by default, we want to hide them. So hide
  314. // them unless we have a cookie that says to show them.
  315. checkCookie();
  316. // -->
  317. </script>
  318. </body>
  319. </html>