~gary/python-openid/python-openid-2.2.1-patched

« back to all changes in this revision

Viewing changes to doc/openid.consumer.discover-pysrc.html

  • Committer: Launchpad Patch Queue Manager
  • Date: 2007-11-30 02:46:28 UTC
  • mfrom: (1.1.1 pyopenid-2.0)
  • Revision ID: launchpad@pqm.canonical.com-20071130024628-qktwsew3383iawmq
[rs=SteveA] upgrade to python-openid-2.0.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
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>openid.consumer.discover</title>
7
 
  <link rel="stylesheet" href="epydoc.css" type="text/css" />
8
 
  <script type="text/javascript" src="epydoc.js"></script>
9
 
</head>
10
 
 
11
 
<body bgcolor="white" text="black" link="blue" vlink="#204080"
12
 
      alink="#204080">
13
 
<!-- ==================== NAVIGATION BAR ==================== -->
14
 
<table class="navbar" border="0" width="100%" cellpadding="0"
15
 
       bgcolor="#a0c0ff" cellspacing="0">
16
 
  <tr valign="middle">
17
 
  <!-- Home link -->
18
 
      <th>&nbsp;&nbsp;&nbsp;<a
19
 
        href="openid-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
20
 
 
21
 
  <!-- Tree link -->
22
 
      <th>&nbsp;&nbsp;&nbsp;<a
23
 
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
24
 
 
25
 
  <!-- Index link -->
26
 
      <th>&nbsp;&nbsp;&nbsp;<a
27
 
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
28
 
 
29
 
  <!-- Help link -->
30
 
      <th>&nbsp;&nbsp;&nbsp;<a
31
 
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
32
 
 
33
 
  <!-- Project homepage -->
34
 
      <th class="navbar" align="right" width="100%">
35
 
        <table border="0" cellpadding="0" cellspacing="0">
36
 
          <tr><th class="navbar" align="center"
37
 
            ><a class="navbar" target="_top" href="http://www.openidenabled.com/">Python-OpenID</a></th>
38
 
          </tr></table></th>
39
 
  </tr>
40
 
</table>
41
 
<table width="100%" cellpadding="0" cellspacing="0">
42
 
  <tr valign="top">
43
 
    <td width="100%">
44
 
      <span class="breadcrumbs">
45
 
        <a href="openid-module.html">Package&nbsp;openid</a> ::
46
 
        <a href="openid.consumer-module.html">Package&nbsp;consumer</a> ::
47
 
        Module&nbsp;discover
48
 
      </span>
49
 
    </td>
50
 
    <td>
51
 
      <table cellpadding="0" cellspacing="0">
52
 
        <!-- hide/show private -->
53
 
        <tr><td align="right"><span class="options"
54
 
            >[<a href="frames.html" target="_top">frames</a
55
 
            >]&nbsp;|&nbsp;<a href="openid.consumer.discover-pysrc.html"
56
 
            target="_top">no&nbsp;frames</a>]</span></td></tr>
57
 
      </table>
58
 
    </td>
59
 
  </tr>
60
 
</table>
61
 
<h1 class="epydoc">Source Code for <a href="openid.consumer.discover-module.html">Module openid.consumer.discover</a></h1>
62
 
<pre class="py-src">
63
 
<tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># -*- test-case-name: openid.test.test_discover -*-</tt> </tt>
64
 
<tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
65
 
<tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">urljr</tt> <tt class="py-keyword">import</tt> <tt class="py-name">fetchers</tt> </tt>
66
 
<tt class="py-lineno">  4</tt>  <tt class="py-line"> </tt>
67
 
<tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package openid=openid-module.html"><a title="openid" class="py-name" href="#" onclick="return doclink('link-0', 'openid', 'link-0');">openid</a></tt></tt> <tt class="py-keyword">import</tt> <tt class="py-name">oidutil</tt> </tt>
68
 
<tt class="py-lineno">  6</tt>  <tt class="py-line"> </tt>
69
 
<tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"># If the Yadis library is available, use it. Otherwise, only use</tt> </tt>
70
 
<tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># old-style discovery.</tt> </tt>
71
 
<tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
72
 
<tt class="py-lineno"> 10</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt class="py-name">yadis</tt> </tt>
73
 
<tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
74
 
<tt class="py-lineno"> 12</tt>  <tt class="py-line">    <tt id="link-1" class="py-name" targets="Variable openid.consumer.discover.yadis_available=openid.consumer.discover-module.html#yadis_available"><a title="openid.consumer.discover.yadis_available" class="py-name" href="#" onclick="return doclink('link-1', 'yadis_available', 'link-1');">yadis_available</a></tt></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
75
 
<tt class="py-lineno"> 13</tt>  <tt class="py-line"> </tt>
76
 
<tt class="py-lineno"> 14</tt>  <tt class="py-line">    <tt class="py-name">oidutil</tt><tt class="py-op">.</tt><tt class="py-name">log</tt><tt class="py-op">(</tt><tt class="py-string">'Consumer operating without Yadis support '</tt> </tt>
77
 
<tt class="py-lineno"> 15</tt>  <tt class="py-line">                <tt class="py-string">'(failed to import Yadis library)'</tt><tt class="py-op">)</tt> </tt>
78
 
<tt class="py-lineno"> 16</tt>  <tt class="py-line"> </tt>
79
 
<a name="DiscoveryFailure"></a><div id="DiscoveryFailure-def"><tt class="py-lineno"> 17</tt> <a class="py-toggle" href="#" id="DiscoveryFailure-toggle" onclick="return toggle('DiscoveryFailure');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="openid.consumer.discover.DiscoveryFailure-class.html">DiscoveryFailure</a><tt class="py-op">(</tt><tt class="py-base-class">RuntimeError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
80
 
</div><div id="DiscoveryFailure-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DiscoveryFailure-expanded"><tt class="py-lineno"> 18</tt>  <tt class="py-line">        <tt class="py-docstring">"""A failure to discover an OpenID server.</tt> </tt>
81
 
<tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
82
 
<tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-docstring">        When the C{yadis} package is available, this is</tt> </tt>
83
 
<tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-docstring">        C{yadis.discover.DiscoveryFailure}."""</tt> </tt>
84
 
</div><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
85
 
<tt class="py-lineno"> 23</tt>  <tt class="py-line">    <tt id="link-2" class="py-name"><a title="openid.consumer.discover.yadis_available" class="py-name" href="#" onclick="return doclink('link-2', 'yadis_available', 'link-1');">yadis_available</a></tt></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
86
 
<tt class="py-lineno"> 24</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-name">yadis</tt><tt class="py-op">.</tt><tt class="py-name">etxrd</tt> <tt class="py-keyword">import</tt> <tt class="py-name">nsTag</tt><tt class="py-op">,</tt> <tt class="py-name">XRDSError</tt> </tt>
87
 
<tt class="py-lineno"> 25</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-name">yadis</tt><tt class="py-op">.</tt><tt class="py-name">services</tt> <tt class="py-keyword">import</tt> <tt class="py-name">applyFilter</tt> <tt class="py-name">as</tt> <tt class="py-name">extractServices</tt> </tt>
88
 
<tt class="py-lineno"> 26</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-name">yadis</tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Module openid.consumer.discover=openid.consumer.discover-module.html"><a title="openid.consumer.discover" class="py-name" href="#" onclick="return doclink('link-3', 'discover', 'link-3');">discover</a></tt></tt> <tt class="py-keyword">import</tt> <tt id="link-4" class="py-name"><a title="openid.consumer.discover" class="py-name" href="#" onclick="return doclink('link-4', 'discover', 'link-3');">discover</a></tt></tt> <tt class="py-name">as</tt> <tt class="py-name">yadisDiscover</tt> </tt>
89
 
<tt class="py-lineno"> 27</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-name">yadis</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name"><a title="openid.consumer.discover" class="py-name" href="#" onclick="return doclink('link-5', 'discover', 'link-3');">discover</a></tt></tt> <tt class="py-keyword">import</tt> <tt class="py-name">DiscoveryFailure</tt> </tt>
90
 
<tt class="py-lineno"> 28</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-name">yadis</tt> <tt class="py-keyword">import</tt> <tt class="py-name">xrires</tt><tt class="py-op">,</tt> <tt class="py-name">filters</tt> </tt>
91
 
<tt class="py-lineno"> 29</tt>  <tt class="py-line"> </tt>
92
 
<tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-6" class="py-name"><a title="openid" class="py-name" href="#" onclick="return doclink('link-6', 'openid', 'link-0');">openid</a></tt></tt><tt class="py-op">.</tt><tt id="link-7" class="py-name" targets="Package openid.consumer=openid.consumer-module.html,Module openid.consumer.consumer=openid.consumer.consumer-module.html"><a title="openid.consumer
93
 
openid.consumer.consumer" class="py-name" href="#" onclick="return doclink('link-7', 'consumer', 'link-7');">consumer</a></tt></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Class Method openid.server.trustroot.TrustRoot.parse()=openid.server.trustroot.TrustRoot-class.html#parse"><a title="openid.server.trustroot.TrustRoot.parse" class="py-name" href="#" onclick="return doclink('link-8', 'parse', 'link-8');">parse</a></tt></tt> <tt class="py-keyword">import</tt> <tt class="py-name">openIDDiscover</tt> <tt class="py-name">as</tt> <tt class="py-name">parseOpenIDLinkRel</tt> </tt>
94
 
<tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-9" class="py-name"><a title="openid" class="py-name" href="#" onclick="return doclink('link-9', 'openid', 'link-0');">openid</a></tt></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name"><a title="openid.consumer
95
 
openid.consumer.consumer" class="py-name" href="#" onclick="return doclink('link-10', 'consumer', 'link-7');">consumer</a></tt></tt><tt class="py-op">.</tt><tt id="link-11" class="py-name"><a title="openid.server.trustroot.TrustRoot.parse" class="py-name" href="#" onclick="return doclink('link-11', 'parse', 'link-8');">parse</a></tt></tt> <tt class="py-keyword">import</tt> <tt class="py-name">ParseError</tt> </tt>
96
 
<tt class="py-lineno"> 32</tt>  <tt class="py-line"> </tt>
97
 
<tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt id="link-12" class="py-name" targets="Variable openid.consumer.discover.OPENID_1_0_NS=openid.consumer.discover-module.html#OPENID_1_0_NS"><a title="openid.consumer.discover.OPENID_1_0_NS" class="py-name" href="#" onclick="return doclink('link-12', 'OPENID_1_0_NS', 'link-12');">OPENID_1_0_NS</a></tt></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://openid.net/xmlns/1.0'</tt> </tt>
98
 
<tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt id="link-13" class="py-name" targets="Variable openid.consumer.discover.OPENID_1_2_TYPE=openid.consumer.discover-module.html#OPENID_1_2_TYPE"><a title="openid.consumer.discover.OPENID_1_2_TYPE" class="py-name" href="#" onclick="return doclink('link-13', 'OPENID_1_2_TYPE', 'link-13');">OPENID_1_2_TYPE</a></tt></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://openid.net/signon/1.2'</tt> </tt>
99
 
<tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt id="link-14" class="py-name" targets="Variable openid.consumer.discover.OPENID_1_1_TYPE=openid.consumer.discover-module.html#OPENID_1_1_TYPE"><a title="openid.consumer.discover.OPENID_1_1_TYPE" class="py-name" href="#" onclick="return doclink('link-14', 'OPENID_1_1_TYPE', 'link-14');">OPENID_1_1_TYPE</a></tt></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://openid.net/signon/1.1'</tt> </tt>
100
 
<tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt id="link-15" class="py-name" targets="Variable openid.consumer.discover.OPENID_1_0_TYPE=openid.consumer.discover-module.html#OPENID_1_0_TYPE"><a title="openid.consumer.discover.OPENID_1_0_TYPE" class="py-name" href="#" onclick="return doclink('link-15', 'OPENID_1_0_TYPE', 'link-15');">OPENID_1_0_TYPE</a></tt></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://openid.net/signon/1.0'</tt> </tt>
101
 
<tt class="py-lineno"> 37</tt>  <tt class="py-line"> </tt>
102
 
<a name="OpenIDServiceEndpoint"></a><div id="OpenIDServiceEndpoint-def"><tt class="py-lineno"> 38</tt> <a class="py-toggle" href="#" id="OpenIDServiceEndpoint-toggle" onclick="return toggle('OpenIDServiceEndpoint');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="openid.consumer.discover.OpenIDServiceEndpoint-class.html">OpenIDServiceEndpoint</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
103
 
</div><div id="OpenIDServiceEndpoint-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="OpenIDServiceEndpoint-expanded"><tt class="py-lineno"> 39</tt>  <tt class="py-line">    <tt class="py-docstring">"""Object representing an OpenID service endpoint.</tt> </tt>
104
 
<tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
105
 
<tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-docstring">    @ivar identity_url: the verified identifier.</tt> </tt>
106
 
<tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-docstring">    @ivar canonicalID: For XRI, the persistent identifier.</tt> </tt>
107
 
<tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
108
 
<tt class="py-lineno"> 44</tt>  <tt class="py-line">    <tt id="link-16" class="py-name" targets="Variable openid.consumer.discover.OpenIDServiceEndpoint.openid_type_uris=openid.consumer.discover.OpenIDServiceEndpoint-class.html#openid_type_uris"><a title="openid.consumer.discover.OpenIDServiceEndpoint.openid_type_uris" class="py-name" href="#" onclick="return doclink('link-16', 'openid_type_uris', 'link-16');">openid_type_uris</a></tt></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> </tt>
109
 
<tt class="py-lineno"> 45</tt>  <tt class="py-line">        <tt id="link-17" class="py-name"><a title="openid.consumer.discover.OPENID_1_2_TYPE" class="py-name" href="#" onclick="return doclink('link-17', 'OPENID_1_2_TYPE', 'link-13');">OPENID_1_2_TYPE</a></tt></tt><tt class="py-op">,</tt> </tt>
110
 
<tt class="py-lineno"> 46</tt>  <tt class="py-line">        <tt id="link-18" class="py-name"><a title="openid.consumer.discover.OPENID_1_1_TYPE" class="py-name" href="#" onclick="return doclink('link-18', 'OPENID_1_1_TYPE', 'link-14');">OPENID_1_1_TYPE</a></tt></tt><tt class="py-op">,</tt> </tt>
111
 
<tt class="py-lineno"> 47</tt>  <tt class="py-line">        <tt id="link-19" class="py-name"><a title="openid.consumer.discover.OPENID_1_0_TYPE" class="py-name" href="#" onclick="return doclink('link-19', 'OPENID_1_0_TYPE', 'link-15');">OPENID_1_0_TYPE</a></tt></tt><tt class="py-op">,</tt> </tt>
112
 
<tt class="py-lineno"> 48</tt>  <tt class="py-line">        <tt class="py-op">]</tt> </tt>
113
 
<tt class="py-lineno"> 49</tt>  <tt class="py-line"> </tt>
114
 
<a name="OpenIDServiceEndpoint.__init__"></a><div id="OpenIDServiceEndpoint.__init__-def"><tt class="py-lineno"> 50</tt> <a class="py-toggle" href="#" id="OpenIDServiceEndpoint.__init__-toggle" onclick="return toggle('OpenIDServiceEndpoint.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="openid.consumer.discover.OpenIDServiceEndpoint-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
115
 
</div><div id="OpenIDServiceEndpoint.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="OpenIDServiceEndpoint.__init__-expanded"><tt class="py-lineno"> 51</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">identity_url</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
116
 
<tt class="py-lineno"> 52</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_url</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
117
 
<tt class="py-lineno"> 53</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">type_uris</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
118
 
<tt class="py-lineno"> 54</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">delegate</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
119
 
<tt class="py-lineno"> 55</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">canonicalID</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
120
 
<tt class="py-lineno"> 56</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">used_yadis</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> <tt class="py-comment"># whether this came from an XRDS</tt> </tt>
121
 
</div><tt class="py-lineno"> 57</tt>  <tt class="py-line"> </tt>
122
 
<a name="OpenIDServiceEndpoint.usesExtension"></a><div id="OpenIDServiceEndpoint.usesExtension-def"><tt class="py-lineno"> 58</tt> <a class="py-toggle" href="#" id="OpenIDServiceEndpoint.usesExtension-toggle" onclick="return toggle('OpenIDServiceEndpoint.usesExtension');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="openid.consumer.discover.OpenIDServiceEndpoint-class.html#usesExtension">usesExtension</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">extension_uri</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
123
 
</div><div id="OpenIDServiceEndpoint.usesExtension-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="OpenIDServiceEndpoint.usesExtension-expanded"><tt class="py-lineno"> 59</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">extension_uri</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">type_uris</tt> </tt>
124
 
</div><tt class="py-lineno"> 60</tt>  <tt class="py-line"> </tt>
125
 
<a name="OpenIDServiceEndpoint.parseService"></a><div id="OpenIDServiceEndpoint.parseService-def"><tt class="py-lineno"> 61</tt> <a class="py-toggle" href="#" id="OpenIDServiceEndpoint.parseService-toggle" onclick="return toggle('OpenIDServiceEndpoint.parseService');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="openid.consumer.discover.OpenIDServiceEndpoint-class.html#parseService">parseService</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">yadis_url</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">,</tt> <tt class="py-param">type_uris</tt><tt class="py-op">,</tt> <tt class="py-param">service_element</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
126
 
</div><div id="OpenIDServiceEndpoint.parseService-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="OpenIDServiceEndpoint.parseService-expanded"><tt class="py-lineno"> 62</tt>  <tt class="py-line">        <tt class="py-docstring">"""Set the state of this object based on the contents of the</tt> </tt>
127
 
<tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-docstring">        service element."""</tt> </tt>
128
 
<tt class="py-lineno"> 64</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">type_uris</tt> <tt class="py-op">=</tt> <tt class="py-name">type_uris</tt> </tt>
129
 
<tt class="py-lineno"> 65</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">identity_url</tt> <tt class="py-op">=</tt> <tt class="py-name">yadis_url</tt> </tt>
130
 
<tt class="py-lineno"> 66</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_url</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt> </tt>
131
 
<tt class="py-lineno"> 67</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">delegate</tt> <tt class="py-op">=</tt> <tt id="link-20" class="py-name" targets="Function openid.consumer.discover.findDelegate()=openid.consumer.discover-module.html#findDelegate"><a title="openid.consumer.discover.findDelegate" class="py-name" href="#" onclick="return doclink('link-20', 'findDelegate', 'link-20');">findDelegate</a></tt></tt><tt class="py-op">(</tt><tt class="py-name">service_element</tt><tt class="py-op">)</tt> </tt>
132
 
<tt class="py-lineno"> 68</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">used_yadis</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
133
 
</div><tt class="py-lineno"> 69</tt>  <tt class="py-line"> </tt>
134
 
<a name="OpenIDServiceEndpoint.getServerID"></a><div id="OpenIDServiceEndpoint.getServerID-def"><tt class="py-lineno"> 70</tt> <a class="py-toggle" href="#" id="OpenIDServiceEndpoint.getServerID-toggle" onclick="return toggle('OpenIDServiceEndpoint.getServerID');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="openid.consumer.discover.OpenIDServiceEndpoint-class.html#getServerID">getServerID</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
135
 
</div><div id="OpenIDServiceEndpoint.getServerID-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="OpenIDServiceEndpoint.getServerID-expanded"><tt class="py-lineno"> 71</tt>  <tt class="py-line">        <tt class="py-docstring">"""Return the identifier that should be sent as the</tt> </tt>
136
 
<tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-docstring">        openid.identity_url parameter to the server."""</tt> </tt>
137
 
<tt class="py-lineno"> 73</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">delegate</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
138
 
<tt class="py-lineno"> 74</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">canonicalID</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">identity_url</tt> </tt>
139
 
<tt class="py-lineno"> 75</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
140
 
<tt class="py-lineno"> 76</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">delegate</tt> </tt>
141
 
</div><tt class="py-lineno"> 77</tt>  <tt class="py-line"> </tt>
142
 
<a name="OpenIDServiceEndpoint.fromBasicServiceEndpoint"></a><div id="OpenIDServiceEndpoint.fromBasicServiceEndpoint-def"><tt class="py-lineno"> 78</tt> <a class="py-toggle" href="#" id="OpenIDServiceEndpoint.fromBasicServiceEndpoint-toggle" onclick="return toggle('OpenIDServiceEndpoint.fromBasicServiceEndpoint');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="openid.consumer.discover.OpenIDServiceEndpoint-class.html#fromBasicServiceEndpoint">fromBasicServiceEndpoint</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">endpoint</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
143
 
</div><div id="OpenIDServiceEndpoint.fromBasicServiceEndpoint-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="OpenIDServiceEndpoint.fromBasicServiceEndpoint-expanded"><tt class="py-lineno"> 79</tt>  <tt class="py-line">        <tt class="py-docstring">"""Create a new instance of this class from the endpoint</tt> </tt>
144
 
<tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-docstring">        object passed in.</tt> </tt>
145
 
<tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
146
 
<tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-docstring">        @return: None or OpenIDServiceEndpoint for this endpoint object"""</tt> </tt>
147
 
<tt class="py-lineno"> 83</tt>  <tt class="py-line">        <tt class="py-name">type_uris</tt> <tt class="py-op">=</tt> <tt class="py-name">endpoint</tt><tt class="py-op">.</tt><tt class="py-name">matchTypes</tt><tt class="py-op">(</tt><tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="openid.consumer.discover.OpenIDServiceEndpoint.openid_type_uris" class="py-name" href="#" onclick="return doclink('link-21', 'openid_type_uris', 'link-16');">openid_type_uris</a></tt></tt><tt class="py-op">)</tt> </tt>
148
 
<tt class="py-lineno"> 84</tt>  <tt class="py-line"> </tt>
149
 
<tt class="py-lineno"> 85</tt>  <tt class="py-line">        <tt class="py-comment"># If any Type URIs match and there is an endpoint URI</tt> </tt>
150
 
<tt class="py-lineno"> 86</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># specified, then this is an OpenID endpoint</tt> </tt>
151
 
<tt class="py-lineno"> 87</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">type_uris</tt> <tt class="py-keyword">and</tt> <tt class="py-name">endpoint</tt><tt class="py-op">.</tt><tt class="py-name">uri</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>
152
 
<tt class="py-lineno"> 88</tt>  <tt class="py-line">            <tt class="py-name">openid_endpoint</tt> <tt class="py-op">=</tt> <tt class="py-name">cls</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
153
 
<tt class="py-lineno"> 89</tt>  <tt class="py-line">            <tt class="py-name">openid_endpoint</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Method openid.consumer.discover.OpenIDServiceEndpoint.parseService()=openid.consumer.discover.OpenIDServiceEndpoint-class.html#parseService"><a title="openid.consumer.discover.OpenIDServiceEndpoint.parseService" class="py-name" href="#" onclick="return doclink('link-22', 'parseService', 'link-22');">parseService</a></tt></tt><tt class="py-op">(</tt> </tt>
154
 
<tt class="py-lineno"> 90</tt>  <tt class="py-line">                <tt class="py-name">endpoint</tt><tt class="py-op">.</tt><tt class="py-name">yadis_url</tt><tt class="py-op">,</tt> </tt>
155
 
<tt class="py-lineno"> 91</tt>  <tt class="py-line">                <tt class="py-name">endpoint</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> </tt>
156
 
<tt class="py-lineno"> 92</tt>  <tt class="py-line">                <tt class="py-name">endpoint</tt><tt class="py-op">.</tt><tt class="py-name">type_uris</tt><tt class="py-op">,</tt> </tt>
157
 
<tt class="py-lineno"> 93</tt>  <tt class="py-line">                <tt class="py-name">endpoint</tt><tt class="py-op">.</tt><tt class="py-name">service_element</tt><tt class="py-op">)</tt> </tt>
158
 
<tt class="py-lineno"> 94</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
159
 
<tt class="py-lineno"> 95</tt>  <tt class="py-line">            <tt class="py-name">openid_endpoint</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
160
 
<tt class="py-lineno"> 96</tt>  <tt class="py-line"> </tt>
161
 
<tt class="py-lineno"> 97</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">openid_endpoint</tt> </tt>
162
 
</div><tt class="py-lineno"> 98</tt>  <tt class="py-line"> </tt>
163
 
<tt class="py-lineno"> 99</tt>  <tt class="py-line">    <tt id="link-23" class="py-name" targets="Class Method openid.consumer.discover.OpenIDServiceEndpoint.fromBasicServiceEndpoint()=openid.consumer.discover.OpenIDServiceEndpoint-class.html#fromBasicServiceEndpoint"><a title="openid.consumer.discover.OpenIDServiceEndpoint.fromBasicServiceEndpoint" class="py-name" href="#" onclick="return doclink('link-23', 'fromBasicServiceEndpoint', 'link-23');">fromBasicServiceEndpoint</a></tt></tt> <tt class="py-op">=</tt> <tt class="py-name">classmethod</tt><tt class="py-op">(</tt><tt id="link-24" class="py-name"><a title="openid.consumer.discover.OpenIDServiceEndpoint.fromBasicServiceEndpoint" class="py-name" href="#" onclick="return doclink('link-24', 'fromBasicServiceEndpoint', 'link-23');">fromBasicServiceEndpoint</a></tt></tt><tt class="py-op">)</tt> </tt>
164
 
<tt class="py-lineno">100</tt>  <tt class="py-line"> </tt>
165
 
<a name="OpenIDServiceEndpoint.fromHTML"></a><div id="OpenIDServiceEndpoint.fromHTML-def"><tt class="py-lineno">101</tt> <a class="py-toggle" href="#" id="OpenIDServiceEndpoint.fromHTML-toggle" onclick="return toggle('OpenIDServiceEndpoint.fromHTML');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="openid.consumer.discover.OpenIDServiceEndpoint-class.html#fromHTML">fromHTML</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">,</tt> <tt class="py-param">html</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
166
 
</div><div id="OpenIDServiceEndpoint.fromHTML-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="OpenIDServiceEndpoint.fromHTML-expanded"><tt class="py-lineno">102</tt>  <tt class="py-line">        <tt class="py-docstring">"""Parse the given document as HTML looking for an OpenID &lt;link</tt> </tt>
167
 
<tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-docstring">        rel=...&gt;</tt> </tt>
168
 
<tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
169
 
<tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-docstring">        @raises: openid.consumer.parse.ParseError</tt> </tt>
170
 
<tt class="py-lineno">106</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
171
 
<tt class="py-lineno">107</tt>  <tt class="py-line">        <tt class="py-name">delegate_url</tt><tt class="py-op">,</tt> <tt class="py-name">server_url</tt> <tt class="py-op">=</tt> <tt class="py-name">parseOpenIDLinkRel</tt><tt class="py-op">(</tt><tt class="py-name">html</tt><tt class="py-op">)</tt> </tt>
172
 
<tt class="py-lineno">108</tt>  <tt class="py-line">        <tt class="py-name">service</tt> <tt class="py-op">=</tt> <tt class="py-name">cls</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
173
 
<tt class="py-lineno">109</tt>  <tt class="py-line">        <tt class="py-name">service</tt><tt class="py-op">.</tt><tt class="py-name">identity_url</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt> </tt>
174
 
<tt class="py-lineno">110</tt>  <tt class="py-line">        <tt class="py-name">service</tt><tt class="py-op">.</tt><tt class="py-name">delegate</tt> <tt class="py-op">=</tt> <tt class="py-name">delegate_url</tt> </tt>
175
 
<tt class="py-lineno">111</tt>  <tt class="py-line">        <tt class="py-name">service</tt><tt class="py-op">.</tt><tt class="py-name">server_url</tt> <tt class="py-op">=</tt> <tt class="py-name">server_url</tt> </tt>
176
 
<tt class="py-lineno">112</tt>  <tt class="py-line">        <tt class="py-name">service</tt><tt class="py-op">.</tt><tt class="py-name">type_uris</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-25" class="py-name"><a title="openid.consumer.discover.OPENID_1_0_TYPE" class="py-name" href="#" onclick="return doclink('link-25', 'OPENID_1_0_TYPE', 'link-15');">OPENID_1_0_TYPE</a></tt></tt><tt class="py-op">]</tt> </tt>
177
 
<tt class="py-lineno">113</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">service</tt> </tt>
178
 
</div><tt class="py-lineno">114</tt>  <tt class="py-line"> </tt>
179
 
<tt class="py-lineno">115</tt>  <tt class="py-line">    <tt id="link-26" class="py-name" targets="Class Method openid.consumer.discover.OpenIDServiceEndpoint.fromHTML()=openid.consumer.discover.OpenIDServiceEndpoint-class.html#fromHTML"><a title="openid.consumer.discover.OpenIDServiceEndpoint.fromHTML" class="py-name" href="#" onclick="return doclink('link-26', 'fromHTML', 'link-26');">fromHTML</a></tt></tt> <tt class="py-op">=</tt> <tt class="py-name">classmethod</tt><tt class="py-op">(</tt><tt id="link-27" class="py-name"><a title="openid.consumer.discover.OpenIDServiceEndpoint.fromHTML" class="py-name" href="#" onclick="return doclink('link-27', 'fromHTML', 'link-26');">fromHTML</a></tt></tt><tt class="py-op">)</tt> </tt>
180
 
</div><tt class="py-lineno">116</tt>  <tt class="py-line"> </tt>
181
 
<a name="findDelegate"></a><div id="findDelegate-def"><tt class="py-lineno">117</tt> <a class="py-toggle" href="#" id="findDelegate-toggle" onclick="return toggle('findDelegate');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="openid.consumer.discover-module.html#findDelegate">findDelegate</a><tt class="py-op">(</tt><tt class="py-param">service_element</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
182
 
</div><div id="findDelegate-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="findDelegate-expanded"><tt class="py-lineno">118</tt>  <tt class="py-line">    <tt class="py-docstring">"""Extract a openid:Delegate value from a Yadis Service element</tt> </tt>
183
 
<tt class="py-lineno">119</tt>  <tt class="py-line"><tt class="py-docstring">    represented as an ElementTree Element object. If no delegate is</tt> </tt>
184
 
<tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-docstring">    found, returns None."""</tt> </tt>
185
 
<tt class="py-lineno">121</tt>  <tt class="py-line">    <tt class="py-comment"># XXX: should this die if there is more than one delegate element?</tt> </tt>
186
 
<tt class="py-lineno">122</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">delegate_tag</tt> <tt class="py-op">=</tt> <tt class="py-name">nsTag</tt><tt class="py-op">(</tt><tt id="link-28" class="py-name"><a title="openid.consumer.discover.OPENID_1_0_NS" class="py-name" href="#" onclick="return doclink('link-28', 'OPENID_1_0_NS', 'link-12');">OPENID_1_0_NS</a></tt></tt><tt class="py-op">,</tt> <tt class="py-string">'Delegate'</tt><tt class="py-op">)</tt> </tt>
187
 
<tt class="py-lineno">123</tt>  <tt class="py-line"> </tt>
188
 
<tt class="py-lineno">124</tt>  <tt class="py-line">    <tt class="py-name">delegates</tt> <tt class="py-op">=</tt> <tt class="py-name">service_element</tt><tt class="py-op">.</tt><tt class="py-name">findall</tt><tt class="py-op">(</tt><tt class="py-name">delegate_tag</tt><tt class="py-op">)</tt> </tt>
189
 
<tt class="py-lineno">125</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">delegate_element</tt> <tt class="py-keyword">in</tt> <tt class="py-name">delegates</tt><tt class="py-op">:</tt> </tt>
190
 
<tt class="py-lineno">126</tt>  <tt class="py-line">        <tt class="py-name">delegate</tt> <tt class="py-op">=</tt> <tt class="py-name">delegate_element</tt><tt class="py-op">.</tt><tt class="py-name">text</tt> </tt>
191
 
<tt class="py-lineno">127</tt>  <tt class="py-line">        <tt class="py-keyword">break</tt> </tt>
192
 
<tt class="py-lineno">128</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
193
 
<tt class="py-lineno">129</tt>  <tt class="py-line">        <tt class="py-name">delegate</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
194
 
<tt class="py-lineno">130</tt>  <tt class="py-line"> </tt>
195
 
<tt class="py-lineno">131</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">delegate</tt> </tt>
196
 
</div><tt class="py-lineno">132</tt>  <tt class="py-line"> </tt>
197
 
<a name="discoverYadis"></a><div id="discoverYadis-def"><tt class="py-lineno">133</tt> <a class="py-toggle" href="#" id="discoverYadis-toggle" onclick="return toggle('discoverYadis');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="openid.consumer.discover-module.html#discoverYadis">discoverYadis</a><tt class="py-op">(</tt><tt class="py-param">uri</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
198
 
</div><div id="discoverYadis-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="discoverYadis-expanded"><tt class="py-lineno">134</tt>  <tt class="py-line">    <tt class="py-docstring">"""Discover OpenID services for a URI. Tries Yadis and falls back</tt> </tt>
199
 
<tt class="py-lineno">135</tt>  <tt class="py-line"><tt class="py-docstring">    on old-style &lt;link rel='...'&gt; discovery if Yadis fails.</tt> </tt>
200
 
<tt class="py-lineno">136</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
201
 
<tt class="py-lineno">137</tt>  <tt class="py-line"><tt class="py-docstring">    @param uri: normalized identity URL</tt> </tt>
202
 
<tt class="py-lineno">138</tt>  <tt class="py-line"><tt class="py-docstring">    @type uri: str</tt> </tt>
203
 
<tt class="py-lineno">139</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
204
 
<tt class="py-lineno">140</tt>  <tt class="py-line"><tt class="py-docstring">    @return: (identity_url, services)</tt> </tt>
205
 
<tt class="py-lineno">141</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: (str, list(OpenIDServiceEndpoint))</tt> </tt>
206
 
<tt class="py-lineno">142</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
207
 
<tt class="py-lineno">143</tt>  <tt class="py-line"><tt class="py-docstring">    @raises: DiscoveryFailure</tt> </tt>
208
 
<tt class="py-lineno">144</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
209
 
<tt class="py-lineno">145</tt>  <tt class="py-line">    <tt class="py-comment"># Might raise a yadis.discover.DiscoveryFailure if no document</tt> </tt>
210
 
<tt class="py-lineno">146</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># came back for that URI at all.  I don't think falling back</tt> </tt>
211
 
<tt class="py-lineno">147</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># to OpenID 1.0 discovery on the same URL will help, so don't</tt> </tt>
212
 
<tt class="py-lineno">148</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># bother to catch it.</tt> </tt>
213
 
<tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">response</tt> <tt class="py-op">=</tt> <tt class="py-name">yadisDiscover</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
214
 
<tt class="py-lineno">150</tt>  <tt class="py-line"> </tt>
215
 
<tt class="py-lineno">151</tt>  <tt class="py-line">    <tt class="py-name">identity_url</tt> <tt class="py-op">=</tt> <tt class="py-name">response</tt><tt class="py-op">.</tt><tt class="py-name">normalized_uri</tt> </tt>
216
 
<tt class="py-lineno">152</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
217
 
<tt class="py-lineno">153</tt>  <tt class="py-line">        <tt class="py-name">openid_services</tt> <tt class="py-op">=</tt> <tt class="py-name">extractServices</tt><tt class="py-op">(</tt> </tt>
218
 
<tt class="py-lineno">154</tt>  <tt class="py-line">            <tt class="py-name">response</tt><tt class="py-op">.</tt><tt class="py-name">normalized_uri</tt><tt class="py-op">,</tt> <tt class="py-name">response</tt><tt class="py-op">.</tt><tt class="py-name">response_text</tt><tt class="py-op">,</tt> </tt>
219
 
<tt class="py-lineno">155</tt>  <tt class="py-line">            <tt id="link-29" class="py-name" targets="Class openid.consumer.discover.OpenIDServiceEndpoint=openid.consumer.discover.OpenIDServiceEndpoint-class.html"><a title="openid.consumer.discover.OpenIDServiceEndpoint" class="py-name" href="#" onclick="return doclink('link-29', 'OpenIDServiceEndpoint', 'link-29');">OpenIDServiceEndpoint</a></tt></tt><tt class="py-op">)</tt> </tt>
220
 
<tt class="py-lineno">156</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">XRDSError</tt><tt class="py-op">:</tt> </tt>
221
 
<tt class="py-lineno">157</tt>  <tt class="py-line">        <tt class="py-comment"># Does not parse as a Yadis XRDS file</tt> </tt>
222
 
<tt class="py-lineno">158</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">openid_services</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
223
 
<tt class="py-lineno">159</tt>  <tt class="py-line"> </tt>
224
 
<tt class="py-lineno">160</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">openid_services</tt><tt class="py-op">:</tt> </tt>
225
 
<tt class="py-lineno">161</tt>  <tt class="py-line">        <tt class="py-comment"># Either not an XRDS or there are no OpenID services.</tt> </tt>
226
 
<tt class="py-lineno">162</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
227
 
<tt class="py-lineno">163</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">response</tt><tt class="py-op">.</tt><tt class="py-name">isXRDS</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
228
 
<tt class="py-lineno">164</tt>  <tt class="py-line">            <tt class="py-comment"># if we got the Yadis content-type or followed the Yadis</tt> </tt>
229
 
<tt class="py-lineno">165</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># header, re-fetch the document without following the Yadis</tt> </tt>
230
 
<tt class="py-lineno">166</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># header, with no Accept header.</tt> </tt>
231
 
<tt class="py-lineno">167</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">return</tt> <tt id="link-30" class="py-name" targets="Function openid.consumer.discover.discoverNoYadis()=openid.consumer.discover-module.html#discoverNoYadis"><a title="openid.consumer.discover.discoverNoYadis" class="py-name" href="#" onclick="return doclink('link-30', 'discoverNoYadis', 'link-30');">discoverNoYadis</a></tt></tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
232
 
<tt class="py-lineno">168</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
233
 
<tt class="py-lineno">169</tt>  <tt class="py-line">            <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">response</tt><tt class="py-op">.</tt><tt class="py-name">response_text</tt> </tt>
234
 
<tt class="py-lineno">170</tt>  <tt class="py-line"> </tt>
235
 
<tt class="py-lineno">171</tt>  <tt class="py-line">        <tt class="py-comment"># Try to parse the response as HTML to get OpenID 1.0/1.1</tt> </tt>
236
 
<tt class="py-lineno">172</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># &lt;link rel="..."&gt;</tt> </tt>
237
 
<tt class="py-lineno">173</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
238
 
<tt class="py-lineno">174</tt>  <tt class="py-line">            <tt class="py-name">service</tt> <tt class="py-op">=</tt> <tt id="link-31" class="py-name"><a title="openid.consumer.discover.OpenIDServiceEndpoint" class="py-name" href="#" onclick="return doclink('link-31', 'OpenIDServiceEndpoint', 'link-29');">OpenIDServiceEndpoint</a></tt></tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="openid.consumer.discover.OpenIDServiceEndpoint.fromHTML" class="py-name" href="#" onclick="return doclink('link-32', 'fromHTML', 'link-26');">fromHTML</a></tt></tt><tt class="py-op">(</tt><tt class="py-name">identity_url</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
239
 
<tt class="py-lineno">175</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ParseError</tt><tt class="py-op">:</tt> </tt>
240
 
<tt class="py-lineno">176</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> <tt class="py-comment"># Parsing failed, so return an empty list</tt> </tt>
241
 
<tt class="py-lineno">177</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
242
 
<tt class="py-lineno">178</tt>  <tt class="py-line">            <tt class="py-name">openid_services</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">service</tt><tt class="py-op">]</tt> </tt>
243
 
<tt class="py-lineno">179</tt>  <tt class="py-line"> </tt>
244
 
<tt class="py-lineno">180</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">identity_url</tt><tt class="py-op">,</tt> <tt class="py-name">openid_services</tt><tt class="py-op">)</tt> </tt>
245
 
</div><tt class="py-lineno">181</tt>  <tt class="py-line"> </tt>
246
 
<tt class="py-lineno">182</tt>  <tt class="py-line"> </tt>
247
 
<a name="discoverXRI"></a><div id="discoverXRI-def"><tt class="py-lineno">183</tt> <a class="py-toggle" href="#" id="discoverXRI-toggle" onclick="return toggle('discoverXRI');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="openid.consumer.discover-module.html#discoverXRI">discoverXRI</a><tt class="py-op">(</tt><tt class="py-param">iname</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
248
 
</div><div id="discoverXRI-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="discoverXRI-expanded"><tt class="py-lineno">184</tt>  <tt class="py-line">    <tt class="py-name">endpoints</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
249
 
<tt class="py-lineno">185</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
250
 
<tt class="py-lineno">186</tt>  <tt class="py-line">        <tt class="py-name">canonicalID</tt><tt class="py-op">,</tt> <tt class="py-name">services</tt> <tt class="py-op">=</tt> <tt class="py-name">xrires</tt><tt class="py-op">.</tt><tt class="py-name">ProxyResolver</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">query</tt><tt class="py-op">(</tt> </tt>
251
 
<tt class="py-lineno">187</tt>  <tt class="py-line">            <tt class="py-name">iname</tt><tt class="py-op">,</tt> <tt id="link-33" class="py-name"><a title="openid.consumer.discover.OpenIDServiceEndpoint" class="py-name" href="#" onclick="return doclink('link-33', 'OpenIDServiceEndpoint', 'link-29');">OpenIDServiceEndpoint</a></tt></tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="openid.consumer.discover.OpenIDServiceEndpoint.openid_type_uris" class="py-name" href="#" onclick="return doclink('link-34', 'openid_type_uris', 'link-16');">openid_type_uris</a></tt></tt><tt class="py-op">)</tt> </tt>
252
 
<tt class="py-lineno">188</tt>  <tt class="py-line">        <tt class="py-name">flt</tt> <tt class="py-op">=</tt> <tt class="py-name">filters</tt><tt class="py-op">.</tt><tt class="py-name">mkFilter</tt><tt class="py-op">(</tt><tt id="link-35" class="py-name"><a title="openid.consumer.discover.OpenIDServiceEndpoint" class="py-name" href="#" onclick="return doclink('link-35', 'OpenIDServiceEndpoint', 'link-29');">OpenIDServiceEndpoint</a></tt></tt><tt class="py-op">)</tt> </tt>
253
 
<tt class="py-lineno">189</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">service_element</tt> <tt class="py-keyword">in</tt> <tt class="py-name">services</tt><tt class="py-op">:</tt> </tt>
254
 
<tt class="py-lineno">190</tt>  <tt class="py-line">            <tt class="py-name">endpoints</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt class="py-name">flt</tt><tt class="py-op">.</tt><tt class="py-name">getServiceEndpoints</tt><tt class="py-op">(</tt><tt class="py-name">iname</tt><tt class="py-op">,</tt> <tt class="py-name">service_element</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
255
 
<tt class="py-lineno">191</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">XRDSError</tt><tt class="py-op">:</tt> </tt>
256
 
<tt class="py-lineno">192</tt>  <tt class="py-line">        <tt class="py-name">oidutil</tt><tt class="py-op">.</tt><tt class="py-name">log</tt><tt class="py-op">(</tt><tt class="py-string">'xrds error on '</tt> <tt class="py-op">+</tt> <tt class="py-name">iname</tt><tt class="py-op">)</tt> </tt>
257
 
<tt class="py-lineno">193</tt>  <tt class="py-line"> </tt>
258
 
<tt class="py-lineno">194</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">endpoint</tt> <tt class="py-keyword">in</tt> <tt class="py-name">endpoints</tt><tt class="py-op">:</tt> </tt>
259
 
<tt class="py-lineno">195</tt>  <tt class="py-line">        <tt class="py-comment"># Is there a way to pass this through the filter to the endpoint</tt> </tt>
260
 
<tt class="py-lineno">196</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># constructor instead of tacking it on after?</tt> </tt>
261
 
<tt class="py-lineno">197</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">endpoint</tt><tt class="py-op">.</tt><tt class="py-name">canonicalID</tt> <tt class="py-op">=</tt> <tt class="py-name">canonicalID</tt> </tt>
262
 
<tt class="py-lineno">198</tt>  <tt class="py-line"> </tt>
263
 
<tt class="py-lineno">199</tt>  <tt class="py-line">    <tt class="py-comment"># FIXME: returned xri should probably be in some normal form</tt> </tt>
264
 
<tt class="py-lineno">200</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">return</tt> <tt class="py-name">iname</tt><tt class="py-op">,</tt> <tt class="py-name">endpoints</tt> </tt>
265
 
</div><tt class="py-lineno">201</tt>  <tt class="py-line"> </tt>
266
 
<tt class="py-lineno">202</tt>  <tt class="py-line"> </tt>
267
 
<a name="discoverNoYadis"></a><div id="discoverNoYadis-def"><tt class="py-lineno">203</tt> <a class="py-toggle" href="#" id="discoverNoYadis-toggle" onclick="return toggle('discoverNoYadis');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="openid.consumer.discover-module.html#discoverNoYadis">discoverNoYadis</a><tt class="py-op">(</tt><tt class="py-param">uri</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
268
 
</div><div id="discoverNoYadis-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="discoverNoYadis-expanded"><tt class="py-lineno">204</tt>  <tt class="py-line">    <tt class="py-name">http_resp</tt> <tt class="py-op">=</tt> <tt class="py-name">fetchers</tt><tt class="py-op">.</tt><tt class="py-name">fetch</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
269
 
<tt class="py-lineno">205</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">http_resp</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Variable openid.consumer.consumer.CancelResponse.status=openid.consumer.consumer.CancelResponse-class.html#status,Variable openid.consumer.consumer.FailureResponse.status=openid.consumer.consumer.FailureResponse-class.html#status,Variable openid.consumer.consumer.SetupNeededResponse.status=openid.consumer.consumer.SetupNeededResponse-class.html#status,Variable openid.consumer.consumer.SuccessResponse.status=openid.consumer.consumer.SuccessResponse-class.html#status"><a title="openid.consumer.consumer.CancelResponse.status
270
 
openid.consumer.consumer.FailureResponse.status
271
 
openid.consumer.consumer.SetupNeededResponse.status
272
 
openid.consumer.consumer.SuccessResponse.status" class="py-name" href="#" onclick="return doclink('link-36', 'status', 'link-36');">status</a></tt></tt> <tt class="py-op">!=</tt> <tt class="py-number">200</tt><tt class="py-op">:</tt> </tt>
273
 
<tt class="py-lineno">206</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">DiscoveryFailure</tt><tt class="py-op">(</tt> </tt>
274
 
<tt class="py-lineno">207</tt>  <tt class="py-line">            <tt class="py-string">'HTTP Response status from identity URL host is not 200. '</tt> </tt>
275
 
<tt class="py-lineno">208</tt>  <tt class="py-line">            <tt class="py-string">'Got status %r'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">http_resp</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="openid.consumer.consumer.CancelResponse.status
276
 
openid.consumer.consumer.FailureResponse.status
277
 
openid.consumer.consumer.SetupNeededResponse.status
278
 
openid.consumer.consumer.SuccessResponse.status" class="py-name" href="#" onclick="return doclink('link-37', 'status', 'link-36');">status</a></tt></tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">http_resp</tt><tt class="py-op">)</tt> </tt>
279
 
<tt class="py-lineno">209</tt>  <tt class="py-line">    <tt class="py-name">identity_url</tt> <tt class="py-op">=</tt> <tt class="py-name">http_resp</tt><tt class="py-op">.</tt><tt class="py-name">final_url</tt> </tt>
280
 
<tt class="py-lineno">210</tt>  <tt class="py-line"> </tt>
281
 
<tt class="py-lineno">211</tt>  <tt class="py-line">    <tt class="py-comment"># Try to parse the response as HTML to get OpenID 1.0/1.1</tt> </tt>
282
 
<tt class="py-lineno">212</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># &lt;link rel="..."&gt;</tt> </tt>
283
 
<tt class="py-lineno">213</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
284
 
<tt class="py-lineno">214</tt>  <tt class="py-line">        <tt class="py-name">service</tt> <tt class="py-op">=</tt> <tt id="link-38" class="py-name"><a title="openid.consumer.discover.OpenIDServiceEndpoint" class="py-name" href="#" onclick="return doclink('link-38', 'OpenIDServiceEndpoint', 'link-29');">OpenIDServiceEndpoint</a></tt></tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="openid.consumer.discover.OpenIDServiceEndpoint.fromHTML" class="py-name" href="#" onclick="return doclink('link-39', 'fromHTML', 'link-26');">fromHTML</a></tt></tt><tt class="py-op">(</tt><tt class="py-name">identity_url</tt><tt class="py-op">,</tt> <tt class="py-name">http_resp</tt><tt class="py-op">.</tt><tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
285
 
<tt class="py-lineno">215</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">ParseError</tt><tt class="py-op">:</tt> </tt>
286
 
<tt class="py-lineno">216</tt>  <tt class="py-line">        <tt class="py-name">openid_services</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
287
 
<tt class="py-lineno">217</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
288
 
<tt class="py-lineno">218</tt>  <tt class="py-line">        <tt class="py-name">openid_services</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">service</tt><tt class="py-op">]</tt> </tt>
289
 
<tt class="py-lineno">219</tt>  <tt class="py-line"> </tt>
290
 
<tt class="py-lineno">220</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">identity_url</tt><tt class="py-op">,</tt> <tt class="py-name">openid_services</tt> </tt>
291
 
</div><tt class="py-lineno">221</tt>  <tt class="py-line"> </tt>
292
 
<tt class="py-lineno">222</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-40" class="py-name"><a title="openid.consumer.discover.yadis_available" class="py-name" href="#" onclick="return doclink('link-40', 'yadis_available', 'link-1');">yadis_available</a></tt></tt><tt class="py-op">:</tt> </tt>
293
 
<tt class="py-lineno">223</tt>  <tt class="py-line">    <tt id="link-41" class="py-name"><a title="openid.consumer.discover" class="py-name" href="#" onclick="return doclink('link-41', 'discover', 'link-3');">discover</a></tt></tt> <tt class="py-op">=</tt> <tt id="link-42" class="py-name" targets="Function openid.consumer.discover.discoverYadis()=openid.consumer.discover-module.html#discoverYadis"><a title="openid.consumer.discover.discoverYadis" class="py-name" href="#" onclick="return doclink('link-42', 'discoverYadis', 'link-42');">discoverYadis</a></tt></tt> </tt>
294
 
<tt class="py-lineno">224</tt>  <tt class="py-line"><tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
295
 
<tt class="py-lineno">225</tt>  <tt class="py-line">    <tt id="link-43" class="py-name"><a title="openid.consumer.discover" class="py-name" href="#" onclick="return doclink('link-43', 'discover', 'link-3');">discover</a></tt></tt> <tt class="py-op">=</tt> <tt id="link-44" class="py-name"><a title="openid.consumer.discover.discoverNoYadis" class="py-name" href="#" onclick="return doclink('link-44', 'discoverNoYadis', 'link-30');">discoverNoYadis</a></tt></tt> </tt>
296
 
<tt class="py-lineno">226</tt>  <tt class="py-line"> </tt><script type="text/javascript">
297
 
<!--
298
 
expandto(location.href);
299
 
// -->
300
 
</script>
301
 
</pre>
302
 
<br />
303
 
<!-- ==================== NAVIGATION BAR ==================== -->
304
 
<table class="navbar" border="0" width="100%" cellpadding="0"
305
 
       bgcolor="#a0c0ff" cellspacing="0">
306
 
  <tr valign="middle">
307
 
  <!-- Home link -->
308
 
      <th>&nbsp;&nbsp;&nbsp;<a
309
 
        href="openid-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
310
 
 
311
 
  <!-- Tree link -->
312
 
      <th>&nbsp;&nbsp;&nbsp;<a
313
 
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
314
 
 
315
 
  <!-- Index link -->
316
 
      <th>&nbsp;&nbsp;&nbsp;<a
317
 
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
318
 
 
319
 
  <!-- Help link -->
320
 
      <th>&nbsp;&nbsp;&nbsp;<a
321
 
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
322
 
 
323
 
  <!-- Project homepage -->
324
 
      <th class="navbar" align="right" width="100%">
325
 
        <table border="0" cellpadding="0" cellspacing="0">
326
 
          <tr><th class="navbar" align="center"
327
 
            ><a class="navbar" target="_top" href="http://www.openidenabled.com/">Python-OpenID</a></th>
328
 
          </tr></table></th>
329
 
  </tr>
330
 
</table>
331
 
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
332
 
  <tr>
333
 
    <td align="left" class="footer">Generated by Epydoc
334
 
        3.0alpha3 on Fri Dec  8 13:26:20 2006</td>
335
 
    <td align="right" class="footer">
336
 
      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
337
 
    </td>
338
 
  </tr>
339
 
</table>
340
 
 
341
 
<script type="text/javascript">
342
 
  <!--
343
 
  // Private objects are initially displayed (because if
344
 
  // javascript is turned off then we want them to be
345
 
  // visible); but by default, we want to hide them.  So hide
346
 
  // them unless we have a cookie that says to show them.
347
 
  checkCookie()
348
 
  // -->
349
 
</script>
350
 
  
351
 
</body>
352
 
</html>