contacts 1.0.3 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -137,7 +137,7 @@ Class <a href="Contacts/Yahoo.html" class="link">Contacts::Yahoo</a><br />
137
137
  <tr class="top-aligned-row context-row">
138
138
  <td class="context-item-name">VERSION</td>
139
139
  <td>=</td>
140
- <td class="context-item-value">&quot;1.0.3&quot;</td>
140
+ <td class="context-item-value">&quot;1.0.4&quot;</td>
141
141
  </tr>
142
142
  </table>
143
143
  </div>
@@ -10,7 +10,7 @@
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/contacts/base.rb, line 182</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/contacts/base.rb, line 186</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">login</span>, <span class="ruby-identifier">password</span>)
15
15
  <span class="ruby-keyword kw">if</span> <span class="ruby-constant">TYPES</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">type</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">intern</span>)
16
16
  <span class="ruby-constant">TYPES</span>[<span class="ruby-identifier">type</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">intern</span>].<span class="ruby-identifier">new</span>(<span class="ruby-identifier">login</span>, <span class="ruby-identifier">password</span>)
@@ -10,7 +10,7 @@
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/contacts/base.rb, line 190</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/contacts/base.rb, line 194</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">guess</span>(<span class="ruby-identifier">login</span>, <span class="ruby-identifier">password</span>)
15
15
  <span class="ruby-constant">TYPES</span>.<span class="ruby-identifier">inject</span>([]) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">a</span>, <span class="ruby-identifier">t</span><span class="ruby-operator">|</span>
16
16
  <span class="ruby-keyword kw">begin</span>
@@ -86,12 +86,12 @@
86
86
  <h3 class="section-bar">Methods</h3>
87
87
 
88
88
  <div class="name-list">
89
- <a href="#M000006">connect</a>&nbsp;&nbsp;
90
- <a href="#M000007">connected?</a>&nbsp;&nbsp;
91
- <a href="#M000008">contacts</a>&nbsp;&nbsp;
92
- <a href="#M000009">login</a>&nbsp;&nbsp;
93
- <a href="#M000005">new</a>&nbsp;&nbsp;
94
- <a href="#M000010">password</a>&nbsp;&nbsp;
89
+ <a href="#M000007">connect</a>&nbsp;&nbsp;
90
+ <a href="#M000008">connected?</a>&nbsp;&nbsp;
91
+ <a href="#M000009">contacts</a>&nbsp;&nbsp;
92
+ <a href="#M000010">login</a>&nbsp;&nbsp;
93
+ <a href="#M000006">new</a>&nbsp;&nbsp;
94
+ <a href="#M000011">password</a>&nbsp;&nbsp;
95
95
  </div>
96
96
  </div>
97
97
 
@@ -113,29 +113,13 @@
113
113
  <div id="methods">
114
114
  <h3 class="section-bar">Public Class methods</h3>
115
115
 
116
- <div id="method-M000005" class="method-detail">
117
- <a name="M000005"></a>
118
-
119
- <div class="method-heading">
120
- <a href="Base.src/M000005.html" target="Code" class="method-signature"
121
- onclick="popupCode('Base.src/M000005.html');return false;">
122
- <span class="method-name">new</span><span class="method-args">(login, password)</span>
123
- </a>
124
- </div>
125
-
126
- <div class="method-description">
127
- </div>
128
- </div>
129
-
130
- <h3 class="section-bar">Public Instance methods</h3>
131
-
132
116
  <div id="method-M000006" class="method-detail">
133
117
  <a name="M000006"></a>
134
118
 
135
119
  <div class="method-heading">
136
120
  <a href="Base.src/M000006.html" target="Code" class="method-signature"
137
121
  onclick="popupCode('Base.src/M000006.html');return false;">
138
- <span class="method-name">connect</span><span class="method-args">()</span>
122
+ <span class="method-name">new</span><span class="method-args">(login, password)</span>
139
123
  </a>
140
124
  </div>
141
125
 
@@ -143,13 +127,15 @@
143
127
  </div>
144
128
  </div>
145
129
 
130
+ <h3 class="section-bar">Public Instance methods</h3>
131
+
146
132
  <div id="method-M000007" class="method-detail">
147
133
  <a name="M000007"></a>
148
134
 
149
135
  <div class="method-heading">
150
136
  <a href="Base.src/M000007.html" target="Code" class="method-signature"
151
137
  onclick="popupCode('Base.src/M000007.html');return false;">
152
- <span class="method-name">connected?</span><span class="method-args">()</span>
138
+ <span class="method-name">connect</span><span class="method-args">()</span>
153
139
  </a>
154
140
  </div>
155
141
 
@@ -163,7 +149,7 @@
163
149
  <div class="method-heading">
164
150
  <a href="Base.src/M000008.html" target="Code" class="method-signature"
165
151
  onclick="popupCode('Base.src/M000008.html');return false;">
166
- <span class="method-name">contacts</span><span class="method-args">()</span>
152
+ <span class="method-name">connected?</span><span class="method-args">()</span>
167
153
  </a>
168
154
  </div>
169
155
 
@@ -177,7 +163,7 @@
177
163
  <div class="method-heading">
178
164
  <a href="Base.src/M000009.html" target="Code" class="method-signature"
179
165
  onclick="popupCode('Base.src/M000009.html');return false;">
180
- <span class="method-name">login</span><span class="method-args">()</span>
166
+ <span class="method-name">contacts</span><span class="method-args">()</span>
181
167
  </a>
182
168
  </div>
183
169
 
@@ -191,6 +177,20 @@
191
177
  <div class="method-heading">
192
178
  <a href="Base.src/M000010.html" target="Code" class="method-signature"
193
179
  onclick="popupCode('Base.src/M000010.html');return false;">
180
+ <span class="method-name">login</span><span class="method-args">()</span>
181
+ </a>
182
+ </div>
183
+
184
+ <div class="method-description">
185
+ </div>
186
+ </div>
187
+
188
+ <div id="method-M000011" class="method-detail">
189
+ <a name="M000011"></a>
190
+
191
+ <div class="method-heading">
192
+ <a href="Base.src/M000011.html" target="Code" class="method-signature"
193
+ onclick="popupCode('Base.src/M000011.html');return false;">
194
194
  <span class="method-name">password</span><span class="method-args">()</span>
195
195
  </a>
196
196
  </div>
@@ -5,15 +5,17 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>connect (Contacts::Base)</title>
8
+ <title>new (Contacts::Base)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/contacts/base.rb, line 21</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">connect</span>
15
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">AuthenticationError</span>, <span class="ruby-node">&quot;Login and password must not be nil, login: #{@login.inspect}, password: #{@password.inspect}&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@login</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@password</span>.<span class="ruby-identifier">nil?</span>
16
- <span class="ruby-identifier">real_connect</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/contacts/base.rb, line 14</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">login</span>, <span class="ruby-identifier">password</span>)
15
+ <span class="ruby-ivar">@login</span> = <span class="ruby-identifier">login</span>
16
+ <span class="ruby-ivar">@password</span> = <span class="ruby-identifier">password</span>
17
+ <span class="ruby-ivar">@connections</span> = {}
18
+ <span class="ruby-identifier">connect</span>
17
19
  <span class="ruby-keyword kw">end</span></pre>
18
20
  </body>
19
21
  </html>
@@ -5,14 +5,15 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>connected? (Contacts::Base)</title>
8
+ <title>connect (Contacts::Base)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/contacts/base.rb, line 26</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">connected?</span>
15
- <span class="ruby-ivar">@cookies</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@cookies</span>.<span class="ruby-identifier">empty?</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/contacts/base.rb, line 21</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">connect</span>
15
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">AuthenticationError</span>, <span class="ruby-node">&quot;Login and password must not be nil, login: #{@login.inspect}, password: #{@password.inspect}&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@login</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@password</span>.<span class="ruby-identifier">nil?</span>
16
+ <span class="ruby-identifier">real_connect</span>
16
17
  <span class="ruby-keyword kw">end</span></pre>
17
18
  </body>
18
19
  </html>
@@ -5,27 +5,14 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>contacts (Contacts::Base)</title>
8
+ <title>connected? (Contacts::Base)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/contacts/base.rb, line 30</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">contacts</span>
15
- <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@contacts</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@contacts</span>
16
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">connected?</span>
17
- <span class="ruby-identifier">url</span> = <span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">contact_list_url</span>)
18
- <span class="ruby-identifier">http</span> = <span class="ruby-identifier">open_http</span>(<span class="ruby-identifier">url</span>)
19
- <span class="ruby-identifier">resp</span>, <span class="ruby-identifier">data</span> = <span class="ruby-identifier">http</span>.<span class="ruby-identifier">get</span>(<span class="ruby-node">&quot;#{url.path}?#{url.query}&quot;</span>,
20
- <span class="ruby-value str">&quot;Cookie&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@cookies</span>
21
- )
22
-
23
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">resp</span>.<span class="ruby-identifier">code_type</span> <span class="ruby-operator">!=</span> <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPOK</span>
24
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">ConnectionError</span>, <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">const_get</span>(<span class="ruby-identifier">:PROTOCOL_ERROR</span>)
25
- <span class="ruby-keyword kw">end</span>
26
-
27
- <span class="ruby-identifier">parse</span> <span class="ruby-identifier">data</span>
28
- <span class="ruby-keyword kw">end</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/contacts/base.rb, line 26</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">connected?</span>
15
+ <span class="ruby-ivar">@cookies</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@cookies</span>.<span class="ruby-identifier">empty?</span>
29
16
  <span class="ruby-keyword kw">end</span></pre>
30
17
  </body>
31
18
  </html>
@@ -5,24 +5,26 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>login (Contacts::Base)</title>
8
+ <title>contacts (Contacts::Base)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/contacts/base.rb, line 47</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">login</span>
15
- <span class="ruby-ivar">@attempt</span> <span class="ruby-operator">||=</span> <span class="ruby-value">0</span>
16
- <span class="ruby-ivar">@attempt</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
17
-
18
- <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attempt</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
19
- <span class="ruby-ivar">@login</span>
20
- <span class="ruby-keyword kw">else</span>
21
- <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@login</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-node">&quot;@#{domain}&quot;</span>)
22
- <span class="ruby-ivar">@login</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-node">&quot;@#{domain}&quot;</span>,<span class="ruby-value str">&quot;&quot;</span>)
23
- <span class="ruby-keyword kw">else</span>
24
- <span class="ruby-node">&quot;#{@login}@#{domain}&quot;</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/contacts/base.rb, line 30</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">contacts</span>
15
+ <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@contacts</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@contacts</span>
16
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">connected?</span>
17
+ <span class="ruby-identifier">url</span> = <span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">contact_list_url</span>)
18
+ <span class="ruby-identifier">http</span> = <span class="ruby-identifier">open_http</span>(<span class="ruby-identifier">url</span>)
19
+ <span class="ruby-identifier">resp</span>, <span class="ruby-identifier">data</span> = <span class="ruby-identifier">http</span>.<span class="ruby-identifier">get</span>(<span class="ruby-node">&quot;#{url.path}?#{url.query}&quot;</span>,
20
+ <span class="ruby-value str">&quot;Cookie&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@cookies</span>
21
+ )
22
+
23
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">resp</span>.<span class="ruby-identifier">code_type</span> <span class="ruby-operator">!=</span> <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPOK</span>
24
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ConnectionError</span>, <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">const_get</span>(<span class="ruby-identifier">:PROTOCOL_ERROR</span>)
25
25
  <span class="ruby-keyword kw">end</span>
26
+
27
+ <span class="ruby-identifier">parse</span> <span class="ruby-identifier">data</span>
26
28
  <span class="ruby-keyword kw">end</span>
27
29
  <span class="ruby-keyword kw">end</span></pre>
28
30
  </body>
@@ -5,14 +5,25 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>password (Contacts::Base)</title>
8
+ <title>login (Contacts::Base)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/contacts/base.rb, line 62</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">password</span>
15
- <span class="ruby-ivar">@password</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/contacts/base.rb, line 47</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">login</span>
15
+ <span class="ruby-ivar">@attempt</span> <span class="ruby-operator">||=</span> <span class="ruby-value">0</span>
16
+ <span class="ruby-ivar">@attempt</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
17
+
18
+ <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attempt</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
19
+ <span class="ruby-ivar">@login</span>
20
+ <span class="ruby-keyword kw">else</span>
21
+ <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@login</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-node">&quot;@#{domain}&quot;</span>)
22
+ <span class="ruby-ivar">@login</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-node">&quot;@#{domain}&quot;</span>,<span class="ruby-value str">&quot;&quot;</span>)
23
+ <span class="ruby-keyword kw">else</span>
24
+ <span class="ruby-node">&quot;#{@login}@#{domain}&quot;</span>
25
+ <span class="ruby-keyword kw">end</span>
26
+ <span class="ruby-keyword kw">end</span>
16
27
  <span class="ruby-keyword kw">end</span></pre>
17
28
  </body>
18
29
  </html>
@@ -5,17 +5,14 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>new (Contacts::Base)</title>
8
+ <title>password (Contacts::Base)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/contacts/base.rb, line 14</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">login</span>, <span class="ruby-identifier">password</span>)
15
- <span class="ruby-ivar">@login</span> = <span class="ruby-identifier">login</span>
16
- <span class="ruby-ivar">@password</span> = <span class="ruby-identifier">password</span>
17
- <span class="ruby-ivar">@connections</span> = {}
18
- <span class="ruby-identifier">connect</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/contacts/base.rb, line 62</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">password</span>
15
+ <span class="ruby-ivar">@password</span>
19
16
  <span class="ruby-keyword kw">end</span></pre>
20
17
  </body>
21
18
  </html>
@@ -88,7 +88,7 @@
88
88
  <h3 class="section-bar">Methods</h3>
89
89
 
90
90
  <div class="name-list">
91
- <a href="#M000004">real_connect</a>&nbsp;&nbsp;
91
+ <a href="#M000005">real_connect</a>&nbsp;&nbsp;
92
92
  </div>
93
93
  </div>
94
94
 
@@ -143,12 +143,12 @@
143
143
  <div id="methods">
144
144
  <h3 class="section-bar">Public Instance methods</h3>
145
145
 
146
- <div id="method-M000004" class="method-detail">
147
- <a name="M000004"></a>
146
+ <div id="method-M000005" class="method-detail">
147
+ <a name="M000005"></a>
148
148
 
149
149
  <div class="method-heading">
150
- <a href="Gmail.src/M000004.html" target="Code" class="method-signature"
151
- onclick="popupCode('Gmail.src/M000004.html');return false;">
150
+ <a href="Gmail.src/M000005.html" target="Code" class="method-signature"
151
+ onclick="popupCode('Gmail.src/M000005.html');return false;">
152
152
  <span class="method-name">real_connect</span><span class="method-args">()</span>
153
153
  </a>
154
154
  </div>
@@ -88,7 +88,7 @@
88
88
  <h3 class="section-bar">Methods</h3>
89
89
 
90
90
  <div class="name-list">
91
- <a href="#M000011">real_connect</a>&nbsp;&nbsp;
91
+ <a href="#M000012">real_connect</a>&nbsp;&nbsp;
92
92
  </div>
93
93
  </div>
94
94
 
@@ -153,12 +153,12 @@
153
153
  <div id="methods">
154
154
  <h3 class="section-bar">Public Instance methods</h3>
155
155
 
156
- <div id="method-M000011" class="method-detail">
157
- <a name="M000011"></a>
156
+ <div id="method-M000012" class="method-detail">
157
+ <a name="M000012"></a>
158
158
 
159
159
  <div class="method-heading">
160
- <a href="Hotmail.src/M000011.html" target="Code" class="method-signature"
161
- onclick="popupCode('Hotmail.src/M000011.html');return false;">
160
+ <a href="Hotmail.src/M000012.html" target="Code" class="method-signature"
161
+ onclick="popupCode('Hotmail.src/M000012.html');return false;">
162
162
  <span class="method-name">real_connect</span><span class="method-args">()</span>
163
163
  </a>
164
164
  </div>
@@ -88,6 +88,7 @@
88
88
  <h3 class="section-bar">Methods</h3>
89
89
 
90
90
  <div class="name-list">
91
+ <a href="#M000004">contacts</a>&nbsp;&nbsp;
91
92
  <a href="#M000003">real_connect</a>&nbsp;&nbsp;
92
93
  </div>
93
94
  </div>
@@ -115,6 +116,11 @@
115
116
  <td>=</td>
116
117
  <td class="context-item-value">&quot;https://login.yahoo.com/config/login&quot;</td>
117
118
  </tr>
119
+ <tr class="top-aligned-row context-row">
120
+ <td class="context-item-name">ADDRESS_BOOK_URL</td>
121
+ <td>=</td>
122
+ <td class="context-item-value">&quot;http://address.mail.yahoo.com/?1&amp;VPC=import_export&quot;</td>
123
+ </tr>
118
124
  <tr class="top-aligned-row context-row">
119
125
  <td class="context-item-name">CONTACT_LIST_URL</td>
120
126
  <td>=</td>
@@ -138,6 +144,20 @@
138
144
  <div id="methods">
139
145
  <h3 class="section-bar">Public Instance methods</h3>
140
146
 
147
+ <div id="method-M000004" class="method-detail">
148
+ <a name="M000004"></a>
149
+
150
+ <div class="method-heading">
151
+ <a href="Yahoo.src/M000004.html" target="Code" class="method-signature"
152
+ onclick="popupCode('Yahoo.src/M000004.html');return false;">
153
+ <span class="method-name">contacts</span><span class="method-args">()</span>
154
+ </a>
155
+ </div>
156
+
157
+ <div class="method-description">
158
+ </div>
159
+ </div>
160
+
141
161
  <div id="method-M000003" class="method-detail">
142
162
  <a name="M000003"></a>
143
163
 
@@ -10,7 +10,7 @@
10
10
  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/contacts/yahoo.rb, line 10</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/contacts/yahoo.rb, line 11</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">real_connect</span>
15
15
  <span class="ruby-identifier">postdata</span> = <span class="ruby-value str">&quot;.tries=2&amp;.src=ym&amp;.md5=&amp;.hash=&amp;.js=&amp;.last=&amp;promo=&amp;.intl=us&amp;.bypass=&quot;</span>
16
16
  <span class="ruby-identifier">postdata</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">&quot;&amp;.partner=&amp;.u=4eo6isd23l8r3&amp;.v=0&amp;.challenge=gsMsEcoZP7km3N3NeI4mX&quot;</span>
@@ -0,0 +1,45 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>contacts (Contacts::Yahoo)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/contacts/yahoo.rb, line 38</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">contacts</span>
15
+ <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@contacts</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@contacts</span>
16
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">connected?</span>
17
+ <span class="ruby-comment cmt"># first, get the addressbook site with the new crumb parameter</span>
18
+ <span class="ruby-identifier">url</span> = <span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">address_book_url</span>)
19
+ <span class="ruby-identifier">http</span> = <span class="ruby-identifier">open_http</span>(<span class="ruby-identifier">url</span>)
20
+ <span class="ruby-identifier">resp</span>, <span class="ruby-identifier">data</span> = <span class="ruby-identifier">http</span>.<span class="ruby-identifier">get</span>(<span class="ruby-node">&quot;#{url.path}?#{url.query}&quot;</span>,
21
+ <span class="ruby-value str">&quot;Cookie&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@cookies</span>
22
+ )
23
+
24
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">resp</span>.<span class="ruby-identifier">code_type</span> <span class="ruby-operator">!=</span> <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPOK</span>
25
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ConnectionError</span>, <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">const_get</span>(<span class="ruby-identifier">:PROTOCOL_ERROR</span>)
26
+ <span class="ruby-keyword kw">end</span>
27
+
28
+ <span class="ruby-identifier">crumb</span> = <span class="ruby-identifier">data</span>.<span class="ruby-identifier">to_s</span>[<span class="ruby-regexp re">/id=&quot;crumb2&quot; value=&quot;(.*?)&quot;/</span>][<span class="ruby-value">19</span><span class="ruby-operator">...</span><span class="ruby-value">-1</span>]
29
+
30
+ <span class="ruby-comment cmt"># now proceed with the new &quot;.crumb&quot; parameter to get the csv data</span>
31
+ <span class="ruby-identifier">url</span> = <span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-node">&quot;#{contact_list_url}&amp;.crumb=#{crumb}&quot;</span>)
32
+ <span class="ruby-identifier">http</span> = <span class="ruby-identifier">open_http</span>(<span class="ruby-identifier">url</span>)
33
+ <span class="ruby-identifier">resp</span>, <span class="ruby-identifier">data</span> = <span class="ruby-identifier">http</span>.<span class="ruby-identifier">get</span>(<span class="ruby-node">&quot;#{url.path}?#{url.query}&quot;</span>,
34
+ <span class="ruby-value str">&quot;Cookie&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@cookies</span>
35
+ )
36
+
37
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">resp</span>.<span class="ruby-identifier">code_type</span> <span class="ruby-operator">!=</span> <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPOK</span>
38
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ConnectionError</span>, <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">const_get</span>(<span class="ruby-identifier">:PROTOCOL_ERROR</span>)
39
+ <span class="ruby-keyword kw">end</span>
40
+
41
+ <span class="ruby-identifier">parse</span> <span class="ruby-identifier">data</span>
42
+ <span class="ruby-keyword kw">end</span>
43
+ <span class="ruby-keyword kw">end</span></pre>
44
+ </body>
45
+ </html>
data/doc/created.rid CHANGED
@@ -1 +1 @@
1
- Mon Jun 04 13:35:30 PDT 2007
1
+ Tue Aug 28 17:00:59 PDT 2007
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Mon Jun 04 13:35:11 PDT 2007</td>
59
+ <td>Tue Aug 28 17:00:28 PDT 2007</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Thu Dec 07 10:23:11 PST 2006</td>
59
+ <td>Tue Aug 28 16:59:42 PDT 2007</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -20,17 +20,18 @@
20
20
  <div id="index">
21
21
  <h1 class="section-bar">Methods</h1>
22
22
  <div id="index-entries">
23
- <a href="classes/Contacts/Base.html#M000006">connect (Contacts::Base)</a><br />
24
- <a href="classes/Contacts/Base.html#M000007">connected? (Contacts::Base)</a><br />
25
- <a href="classes/Contacts/Base.html#M000008">contacts (Contacts::Base)</a><br />
23
+ <a href="classes/Contacts/Base.html#M000007">connect (Contacts::Base)</a><br />
24
+ <a href="classes/Contacts/Base.html#M000008">connected? (Contacts::Base)</a><br />
25
+ <a href="classes/Contacts/Yahoo.html#M000004">contacts (Contacts::Yahoo)</a><br />
26
+ <a href="classes/Contacts/Base.html#M000009">contacts (Contacts::Base)</a><br />
26
27
  <a href="classes/Contacts.html#M000002">guess (Contacts)</a><br />
27
- <a href="classes/Contacts/Base.html#M000009">login (Contacts::Base)</a><br />
28
+ <a href="classes/Contacts/Base.html#M000010">login (Contacts::Base)</a><br />
28
29
  <a href="classes/Contacts.html#M000001">new (Contacts)</a><br />
29
- <a href="classes/Contacts/Base.html#M000005">new (Contacts::Base)</a><br />
30
- <a href="classes/Contacts/Base.html#M000010">password (Contacts::Base)</a><br />
30
+ <a href="classes/Contacts/Base.html#M000006">new (Contacts::Base)</a><br />
31
+ <a href="classes/Contacts/Base.html#M000011">password (Contacts::Base)</a><br />
31
32
  <a href="classes/Contacts/Yahoo.html#M000003">real_connect (Contacts::Yahoo)</a><br />
32
- <a href="classes/Contacts/Gmail.html#M000004">real_connect (Contacts::Gmail)</a><br />
33
- <a href="classes/Contacts/Hotmail.html#M000011">real_connect (Contacts::Hotmail)</a><br />
33
+ <a href="classes/Contacts/Gmail.html#M000005">real_connect (Contacts::Gmail)</a><br />
34
+ <a href="classes/Contacts/Hotmail.html#M000012">real_connect (Contacts::Hotmail)</a><br />
34
35
  </div>
35
36
  </div>
36
37
  </body>
data/lib/contacts/base.rb CHANGED
@@ -8,7 +8,7 @@ require "thread"
8
8
 
9
9
  class Contacts
10
10
  TYPES = {}
11
- VERSION = "1.0.3"
11
+ VERSION = "1.0.4"
12
12
 
13
13
  class Base
14
14
  def initialize(login, password)
@@ -73,6 +73,10 @@ class Contacts
73
73
  self.class.const_get(:CONTACT_LIST_URL)
74
74
  end
75
75
 
76
+ def address_book_url
77
+ self.class.const_get(:ADDRESS_BOOK_URL)
78
+ end
79
+
76
80
  def open_http(url)
77
81
  c = @connections[Thread.current.object_id] ||= {}
78
82
  http = c["#{url.host}:#{url.port}"]
@@ -4,6 +4,7 @@ class Contacts
4
4
  class Yahoo < Base
5
5
  URL = "http://mail.yahoo.com/"
6
6
  LOGIN_URL = "https://login.yahoo.com/config/login"
7
+ ADDRESS_BOOK_URL = "http://address.mail.yahoo.com/?1&VPC=import_export"
7
8
  CONTACT_LIST_URL = "http://address.yahoo.com/index.php?VPC=import_export&A=B&submit[action_export_yahoo]=Export%20Now"
8
9
  PROTOCOL_ERROR = "Yahoo has changed its protocols, please upgrade this library first. If that does not work, contact lucas@rufy.com with this error"
9
10
 
@@ -34,6 +35,37 @@ class Contacts
34
35
  @cookies = cookies
35
36
  end
36
37
 
38
+ def contacts
39
+ return @contacts if @contacts
40
+ if connected?
41
+ # first, get the addressbook site with the new crumb parameter
42
+ url = URI.parse(address_book_url)
43
+ http = open_http(url)
44
+ resp, data = http.get("#{url.path}?#{url.query}",
45
+ "Cookie" => @cookies
46
+ )
47
+
48
+ if resp.code_type != Net::HTTPOK
49
+ raise ConnectionError, self.class.const_get(:PROTOCOL_ERROR)
50
+ end
51
+
52
+ crumb = data.to_s[/id="crumb2" value="(.*?)"/][19...-1]
53
+
54
+ # now proceed with the new ".crumb" parameter to get the csv data
55
+ url = URI.parse("#{contact_list_url}&.crumb=#{crumb}")
56
+ http = open_http(url)
57
+ resp, data = http.get("#{url.path}?#{url.query}",
58
+ "Cookie" => @cookies
59
+ )
60
+
61
+ if resp.code_type != Net::HTTPOK
62
+ raise ConnectionError, self.class.const_get(:PROTOCOL_ERROR)
63
+ end
64
+
65
+ parse data
66
+ end
67
+ end
68
+
37
69
  private
38
70
 
39
71
  def parse(data)
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: contacts
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.0.3
7
- date: 2007-06-04 00:00:00 -07:00
6
+ version: 1.0.4
7
+ date: 2007-08-28 00:00:00 -07:00
8
8
  summary: Ridiculously easy contact list information from various providers including Yahoo, Gmail, and Hotmail
9
9
  require_paths:
10
10
  - lib
@@ -61,15 +61,16 @@ files:
61
61
  - doc/classes/Contacts/TypeNotFound.html
62
62
  - doc/classes/Contacts/Yahoo.html
63
63
  - doc/classes/Contacts/Yahoo.src
64
- - doc/classes/Contacts/Base.src/M000005.html
65
64
  - doc/classes/Contacts/Base.src/M000006.html
66
65
  - doc/classes/Contacts/Base.src/M000007.html
67
66
  - doc/classes/Contacts/Base.src/M000008.html
68
67
  - doc/classes/Contacts/Base.src/M000009.html
69
68
  - doc/classes/Contacts/Base.src/M000010.html
70
- - doc/classes/Contacts/Gmail.src/M000004.html
71
- - doc/classes/Contacts/Hotmail.src/M000011.html
69
+ - doc/classes/Contacts/Base.src/M000011.html
70
+ - doc/classes/Contacts/Gmail.src/M000005.html
71
+ - doc/classes/Contacts/Hotmail.src/M000012.html
72
72
  - doc/classes/Contacts/Yahoo.src/M000003.html
73
+ - doc/classes/Contacts/Yahoo.src/M000004.html
73
74
  - doc/classes/Contacts.src/M000001.html
74
75
  - doc/classes/Contacts.src/M000002.html
75
76
  - doc/files/lib