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>googleapiclient.http</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> <a 19 href="googleapiclient-module.html">Home</a> </th> 20 21 <!-- Tree link --> 22 <th> <a 23 href="module-tree.html">Trees</a> </th> 24 25 <!-- Index link --> 26 <th> <a 27 href="identifier-index.html">Indices</a> </th> 28 29 <!-- Help link --> 30 <th> <a 31 href="help.html">Help</a> </th> 32 33 <th class="navbar" width="100%"></th> 34 </tr> 35</table> 36<table width="100%" cellpadding="0" cellspacing="0"> 37 <tr valign="top"> 38 <td width="100%"> 39 <span class="breadcrumbs"> 40 <a href="googleapiclient-module.html">Package googleapiclient</a> :: 41 Module http 42 </span> 43 </td> 44 <td> 45 <table cellpadding="0" cellspacing="0"> 46 <!-- hide/show private --> 47 <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" 48 onclick="toggle_private();">hide private</a>]</span></td></tr> 49 <tr><td align="right"><span class="options" 50 >[<a href="frames.html" target="_top">frames</a 51 >] | <a href="googleapiclient.http-module.html" 52 target="_top">no frames</a>]</span></td></tr> 53 </table> 54 </td> 55 </tr> 56</table> 57<!-- ==================== MODULE DESCRIPTION ==================== --> 58<h1 class="epydoc">Module http</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.http-pysrc.html">source code</a></span></p> 59<pre class="literalblock"> 60Classes to encapsulate a single HTTP request. 61 62The classes implement a command pattern, with every 63object supporting an execute() method that does the 64actual HTTP request. 65 66</pre> 67 68<hr /> 69<div class="fields"> <p><strong>Author:</strong> 70 jcgregorio@google.com (Joe Gregorio) 71 </p> 72</div><!-- ==================== CLASSES ==================== --> 73<a name="section-Classes"></a> 74<table class="summary" border="1" cellpadding="3" 75 cellspacing="0" width="100%" bgcolor="white"> 76<tr bgcolor="#70b0f0" class="table-header"> 77 <td colspan="2" class="table-header"> 78 <table border="0" cellpadding="0" cellspacing="0" width="100%"> 79 <tr valign="top"> 80 <td align="left"><span class="table-header">Classes</span></td> 81 <td align="right" valign="top" 82 ><span class="options">[<a href="#section-Classes" 83 class="privatelink" onclick="toggle_private();" 84 >hide private</a>]</span></td> 85 </tr> 86 </table> 87 </td> 88</tr> 89<tr> 90 <td width="15%" align="right" valign="top" class="summary"> 91 <span class="summary-type"> </span> 92 </td><td class="summary"> 93 <a href="googleapiclient.http.MediaUploadProgress-class.html" class="summary-name">MediaUploadProgress</a><br /> 94 Status of a resumable upload. 95 </td> 96 </tr> 97<tr> 98 <td width="15%" align="right" valign="top" class="summary"> 99 <span class="summary-type"> </span> 100 </td><td class="summary"> 101 <a href="googleapiclient.http.MediaDownloadProgress-class.html" class="summary-name">MediaDownloadProgress</a><br /> 102 Status of a resumable download. 103 </td> 104 </tr> 105<tr> 106 <td width="15%" align="right" valign="top" class="summary"> 107 <span class="summary-type"> </span> 108 </td><td class="summary"> 109 <a href="googleapiclient.http.MediaUpload-class.html" class="summary-name">MediaUpload</a><br /> 110 Describes a media object to upload. 111 </td> 112 </tr> 113<tr> 114 <td width="15%" align="right" valign="top" class="summary"> 115 <span class="summary-type"> </span> 116 </td><td class="summary"> 117 <a href="googleapiclient.http.MediaIoBaseUpload-class.html" class="summary-name">MediaIoBaseUpload</a><br /> 118 A MediaUpload for a io.Base objects. 119 </td> 120 </tr> 121<tr> 122 <td width="15%" align="right" valign="top" class="summary"> 123 <span class="summary-type"> </span> 124 </td><td class="summary"> 125 <a href="googleapiclient.http.MediaFileUpload-class.html" class="summary-name">MediaFileUpload</a><br /> 126 A MediaUpload for a file. 127 </td> 128 </tr> 129<tr> 130 <td width="15%" align="right" valign="top" class="summary"> 131 <span class="summary-type"> </span> 132 </td><td class="summary"> 133 <a href="googleapiclient.http.MediaInMemoryUpload-class.html" class="summary-name">MediaInMemoryUpload</a><br /> 134 MediaUpload for a chunk of bytes. 135 </td> 136 </tr> 137<tr> 138 <td width="15%" align="right" valign="top" class="summary"> 139 <span class="summary-type"> </span> 140 </td><td class="summary"> 141 <a href="googleapiclient.http.MediaIoBaseDownload-class.html" class="summary-name">MediaIoBaseDownload</a><br /> 142 "Download media resources. 143 </td> 144 </tr> 145<tr class="private"> 146 <td width="15%" align="right" valign="top" class="summary"> 147 <span class="summary-type"> </span> 148 </td><td class="summary"> 149 <a href="googleapiclient.http._StreamSlice-class.html" class="summary-name" onclick="show_private();">_StreamSlice</a><br /> 150 Truncated stream. 151 </td> 152 </tr> 153<tr> 154 <td width="15%" align="right" valign="top" class="summary"> 155 <span class="summary-type"> </span> 156 </td><td class="summary"> 157 <a href="googleapiclient.http.HttpRequest-class.html" class="summary-name">HttpRequest</a><br /> 158 Encapsulates a single HTTP request. 159 </td> 160 </tr> 161<tr> 162 <td width="15%" align="right" valign="top" class="summary"> 163 <span class="summary-type"> </span> 164 </td><td class="summary"> 165 <a href="googleapiclient.http.BatchHttpRequest-class.html" class="summary-name">BatchHttpRequest</a><br /> 166 Batches multiple HttpRequest objects into a single HTTP request. 167 </td> 168 </tr> 169<tr> 170 <td width="15%" align="right" valign="top" class="summary"> 171 <span class="summary-type"> </span> 172 </td><td class="summary"> 173 <a href="googleapiclient.http.HttpRequestMock-class.html" class="summary-name">HttpRequestMock</a><br /> 174 Mock of HttpRequest. 175 </td> 176 </tr> 177<tr> 178 <td width="15%" align="right" valign="top" class="summary"> 179 <span class="summary-type"> </span> 180 </td><td class="summary"> 181 <a href="googleapiclient.http.RequestMockBuilder-class.html" class="summary-name">RequestMockBuilder</a><br /> 182 A simple mock of HttpRequest 183 </td> 184 </tr> 185<tr> 186 <td width="15%" align="right" valign="top" class="summary"> 187 <span class="summary-type"> </span> 188 </td><td class="summary"> 189 <a href="googleapiclient.http.HttpMock-class.html" class="summary-name">HttpMock</a><br /> 190 Mock of httplib2.Http 191 </td> 192 </tr> 193<tr> 194 <td width="15%" align="right" valign="top" class="summary"> 195 <span class="summary-type"> </span> 196 </td><td class="summary"> 197 <a href="googleapiclient.http.HttpMockSequence-class.html" class="summary-name">HttpMockSequence</a><br /> 198 Mock of httplib2.Http 199 </td> 200 </tr> 201</table> 202<!-- ==================== FUNCTIONS ==================== --> 203<a name="section-Functions"></a> 204<table class="summary" border="1" cellpadding="3" 205 cellspacing="0" width="100%" bgcolor="white"> 206<tr bgcolor="#70b0f0" class="table-header"> 207 <td colspan="2" class="table-header"> 208 <table border="0" cellpadding="0" cellspacing="0" width="100%"> 209 <tr valign="top"> 210 <td align="left"><span class="table-header">Functions</span></td> 211 <td align="right" valign="top" 212 ><span class="options">[<a href="#section-Functions" 213 class="privatelink" onclick="toggle_private();" 214 >hide private</a>]</span></td> 215 </tr> 216 </table> 217 </td> 218</tr> 219<tr class="private"> 220 <td width="15%" align="right" valign="top" class="summary"> 221 <span class="summary-type"> </span> 222 </td><td class="summary"> 223 <table width="100%" cellpadding="0" cellspacing="0" border="0"> 224 <tr> 225 <td><span class="summary-sig"><a href="googleapiclient.http-module.html#_should_retry_response" class="summary-sig-name" onclick="show_private();">_should_retry_response</a>(<span class="summary-sig-arg">resp_status</span>, 226 <span class="summary-sig-arg">content</span>)</span><br /> 227 Determines whether a response should be retried.</td> 228 <td align="right" valign="top"> 229 <span class="codelink"><a href="googleapiclient.http-pysrc.html#_should_retry_response">source code</a></span> 230 231 </td> 232 </tr> 233 </table> 234 235 </td> 236 </tr> 237<tr class="private"> 238 <td width="15%" align="right" valign="top" class="summary"> 239 <span class="summary-type"> </span> 240 </td><td class="summary"> 241 <table width="100%" cellpadding="0" cellspacing="0" border="0"> 242 <tr> 243 <td><span class="summary-sig"><a href="googleapiclient.http-module.html#_retry_request" class="summary-sig-name" onclick="show_private();">_retry_request</a>(<span class="summary-sig-arg">http</span>, 244 <span class="summary-sig-arg">num_retries</span>, 245 <span class="summary-sig-arg">req_type</span>, 246 <span class="summary-sig-arg">sleep</span>, 247 <span class="summary-sig-arg">rand</span>, 248 <span class="summary-sig-arg">uri</span>, 249 <span class="summary-sig-arg">method</span>, 250 <span class="summary-sig-arg">*args</span>, 251 <span class="summary-sig-arg">**kwargs</span>)</span><br /> 252 Retries an HTTP request multiple times while handling errors.</td> 253 <td align="right" valign="top"> 254 <span class="codelink"><a href="googleapiclient.http-pysrc.html#_retry_request">source code</a></span> 255 256 </td> 257 </tr> 258 </table> 259 260 </td> 261 </tr> 262<tr> 263 <td width="15%" align="right" valign="top" class="summary"> 264 <span class="summary-type"> </span> 265 </td><td class="summary"> 266 <table width="100%" cellpadding="0" cellspacing="0" border="0"> 267 <tr> 268 <td><span class="summary-sig"><a href="googleapiclient.http-module.html#set_user_agent" class="summary-sig-name">set_user_agent</a>(<span class="summary-sig-arg">http</span>, 269 <span class="summary-sig-arg">user_agent</span>)</span><br /> 270 Set the user-agent on every request.</td> 271 <td align="right" valign="top"> 272 <span class="codelink"><a href="googleapiclient.http-pysrc.html#set_user_agent">source code</a></span> 273 274 </td> 275 </tr> 276 </table> 277 278 </td> 279 </tr> 280<tr> 281 <td width="15%" align="right" valign="top" class="summary"> 282 <span class="summary-type"> </span> 283 </td><td class="summary"> 284 <table width="100%" cellpadding="0" cellspacing="0" border="0"> 285 <tr> 286 <td><span class="summary-sig"><a href="googleapiclient.http-module.html#tunnel_patch" class="summary-sig-name">tunnel_patch</a>(<span class="summary-sig-arg">http</span>)</span><br /> 287 Tunnel PATCH requests over POST.</td> 288 <td align="right" valign="top"> 289 <span class="codelink"><a href="googleapiclient.http-pysrc.html#tunnel_patch">source code</a></span> 290 291 </td> 292 </tr> 293 </table> 294 295 </td> 296 </tr> 297<tr> 298 <td width="15%" align="right" valign="top" class="summary"> 299 <span class="summary-type"> </span> 300 </td><td class="summary"> 301 <table width="100%" cellpadding="0" cellspacing="0" border="0"> 302 <tr> 303 <td><span class="summary-sig"><a href="googleapiclient.http-module.html#build_http" class="summary-sig-name">build_http</a>()</span><br /> 304 Builds httplib2.Http object</td> 305 <td align="right" valign="top"> 306 <span class="codelink"><a href="googleapiclient.http-pysrc.html#build_http">source code</a></span> 307 308 </td> 309 </tr> 310 </table> 311 312 </td> 313 </tr> 314</table> 315<!-- ==================== VARIABLES ==================== --> 316<a name="section-Variables"></a> 317<table class="summary" border="1" cellpadding="3" 318 cellspacing="0" width="100%" bgcolor="white"> 319<tr bgcolor="#70b0f0" class="table-header"> 320 <td colspan="2" class="table-header"> 321 <table border="0" cellpadding="0" cellspacing="0" width="100%"> 322 <tr valign="top"> 323 <td align="left"><span class="table-header">Variables</span></td> 324 <td align="right" valign="top" 325 ><span class="options">[<a href="#section-Variables" 326 class="privatelink" onclick="toggle_private();" 327 >hide private</a>]</span></td> 328 </tr> 329 </table> 330 </td> 331</tr> 332<tr class="private"> 333 <td width="15%" align="right" valign="top" class="summary"> 334 <span class="summary-type"> </span> 335 </td><td class="summary"> 336 <a name="_ssl_SSLError"></a><span class="summary-name">_ssl_SSLError</span> = <code title="ssl.SSLError">ssl.SSLError</code> 337 </td> 338 </tr> 339<tr> 340 <td width="15%" align="right" valign="top" class="summary"> 341 <span class="summary-type"> </span> 342 </td><td class="summary"> 343 <a name="LOGGER"></a><span class="summary-name">LOGGER</span> = <code title="logging.getLogger(__name__)">logging.getLogger(__name__)</code> 344 </td> 345 </tr> 346<tr> 347 <td width="15%" align="right" valign="top" class="summary"> 348 <span class="summary-type"> </span> 349 </td><td class="summary"> 350 <a name="DEFAULT_CHUNK_SIZE"></a><span class="summary-name">DEFAULT_CHUNK_SIZE</span> = <code title="100* 1024* 1024">100* 1024* 1024</code> 351 </td> 352 </tr> 353<tr> 354 <td width="15%" align="right" valign="top" class="summary"> 355 <span class="summary-type"> </span> 356 </td><td class="summary"> 357 <a name="MAX_URI_LENGTH"></a><span class="summary-name">MAX_URI_LENGTH</span> = <code title="2048">2048</code> 358 </td> 359 </tr> 360<tr> 361 <td width="15%" align="right" valign="top" class="summary"> 362 <span class="summary-type"> </span> 363 </td><td class="summary"> 364 <a name="MAX_BATCH_LIMIT"></a><span class="summary-name">MAX_BATCH_LIMIT</span> = <code title="1000">1000</code> 365 </td> 366 </tr> 367<tr class="private"> 368 <td width="15%" align="right" valign="top" class="summary"> 369 <span class="summary-type"> </span> 370 </td><td class="summary"> 371 <a name="_TOO_MANY_REQUESTS"></a><span class="summary-name">_TOO_MANY_REQUESTS</span> = <code title="429">429</code> 372 </td> 373 </tr> 374<tr> 375 <td width="15%" align="right" valign="top" class="summary"> 376 <span class="summary-type"> </span> 377 </td><td class="summary"> 378 <a name="DEFAULT_HTTP_TIMEOUT_SEC"></a><span class="summary-name">DEFAULT_HTTP_TIMEOUT_SEC</span> = <code title="60">60</code> 379 </td> 380 </tr> 381<tr class="private"> 382 <td width="15%" align="right" valign="top" class="summary"> 383 <span class="summary-type"> </span> 384 </td><td class="summary"> 385 <a name="_LEGACY_BATCH_URI"></a><span class="summary-name">_LEGACY_BATCH_URI</span> = <code title="'https://www.googleapis.com/batch'">'https://www.googleapis.com/batch'</code> 386 </td> 387 </tr> 388</table> 389<!-- ==================== FUNCTION DETAILS ==================== --> 390<a name="section-FunctionDetails"></a> 391<table class="details" border="1" cellpadding="3" 392 cellspacing="0" width="100%" bgcolor="white"> 393<tr bgcolor="#70b0f0" class="table-header"> 394 <td colspan="2" class="table-header"> 395 <table border="0" cellpadding="0" cellspacing="0" width="100%"> 396 <tr valign="top"> 397 <td align="left"><span class="table-header">Function Details</span></td> 398 <td align="right" valign="top" 399 ><span class="options">[<a href="#section-FunctionDetails" 400 class="privatelink" onclick="toggle_private();" 401 >hide private</a>]</span></td> 402 </tr> 403 </table> 404 </td> 405</tr> 406</table> 407<a name="_should_retry_response"></a> 408<div class="private"> 409<table class="details" border="1" cellpadding="3" 410 cellspacing="0" width="100%" bgcolor="white"> 411<tr><td> 412 <table width="100%" cellpadding="0" cellspacing="0" border="0"> 413 <tr valign="top"><td> 414 <h3 class="epydoc"><span class="sig"><span class="sig-name">_should_retry_response</span>(<span class="sig-arg">resp_status</span>, 415 <span class="sig-arg">content</span>)</span> 416 </h3> 417 </td><td align="right" valign="top" 418 ><span class="codelink"><a href="googleapiclient.http-pysrc.html#_should_retry_response">source code</a></span> 419 </td> 420 </tr></table> 421 422 <pre class="literalblock"> 423Determines whether a response should be retried. 424 425Args: 426 resp_status: The response status received. 427 content: The response content body. 428 429Returns: 430 True if the response should be retried, otherwise False. 431 432</pre> 433 <dl class="fields"> 434 </dl> 435</td></tr></table> 436</div> 437<a name="_retry_request"></a> 438<div class="private"> 439<table class="details" border="1" cellpadding="3" 440 cellspacing="0" width="100%" bgcolor="white"> 441<tr><td> 442 <table width="100%" cellpadding="0" cellspacing="0" border="0"> 443 <tr valign="top"><td> 444 <h3 class="epydoc"><span class="sig"><span class="sig-name">_retry_request</span>(<span class="sig-arg">http</span>, 445 <span class="sig-arg">num_retries</span>, 446 <span class="sig-arg">req_type</span>, 447 <span class="sig-arg">sleep</span>, 448 <span class="sig-arg">rand</span>, 449 <span class="sig-arg">uri</span>, 450 <span class="sig-arg">method</span>, 451 <span class="sig-arg">*args</span>, 452 <span class="sig-arg">**kwargs</span>)</span> 453 </h3> 454 </td><td align="right" valign="top" 455 ><span class="codelink"><a href="googleapiclient.http-pysrc.html#_retry_request">source code</a></span> 456 </td> 457 </tr></table> 458 459 <pre class="literalblock"> 460Retries an HTTP request multiple times while handling errors. 461 462If after all retries the request still fails, last error is either returned as 463return value (for HTTP 5xx errors) or thrown (for ssl.SSLError). 464 465Args: 466 http: Http object to be used to execute request. 467 num_retries: Maximum number of retries. 468 req_type: Type of the request (used for logging retries). 469 sleep, rand: Functions to sleep for random time between retries. 470 uri: URI to be requested. 471 method: HTTP method to be used. 472 args, kwargs: Additional arguments passed to http.request. 473 474Returns: 475 resp, content - Response from the http request (may be HTTP 5xx). 476 477</pre> 478 <dl class="fields"> 479 </dl> 480</td></tr></table> 481</div> 482<a name="set_user_agent"></a> 483<div> 484<table class="details" border="1" cellpadding="3" 485 cellspacing="0" width="100%" bgcolor="white"> 486<tr><td> 487 <table width="100%" cellpadding="0" cellspacing="0" border="0"> 488 <tr valign="top"><td> 489 <h3 class="epydoc"><span class="sig"><span class="sig-name">set_user_agent</span>(<span class="sig-arg">http</span>, 490 <span class="sig-arg">user_agent</span>)</span> 491 </h3> 492 </td><td align="right" valign="top" 493 ><span class="codelink"><a href="googleapiclient.http-pysrc.html#set_user_agent">source code</a></span> 494 </td> 495 </tr></table> 496 497 <pre class="literalblock"> 498Set the user-agent on every request. 499 500Args: 501 http - An instance of httplib2.Http 502 or something that acts like it. 503 user_agent: string, the value for the user-agent header. 504 505Returns: 506 A modified instance of http that was passed in. 507 508Example: 509 510 h = httplib2.Http() 511 h = set_user_agent(h, "my-app-name/6.0") 512 513Most of the time the user-agent will be set doing auth, this is for the rare 514cases where you are accessing an unauthenticated endpoint. 515 516</pre> 517 <dl class="fields"> 518 </dl> 519</td></tr></table> 520</div> 521<a name="tunnel_patch"></a> 522<div> 523<table class="details" border="1" cellpadding="3" 524 cellspacing="0" width="100%" bgcolor="white"> 525<tr><td> 526 <table width="100%" cellpadding="0" cellspacing="0" border="0"> 527 <tr valign="top"><td> 528 <h3 class="epydoc"><span class="sig"><span class="sig-name">tunnel_patch</span>(<span class="sig-arg">http</span>)</span> 529 </h3> 530 </td><td align="right" valign="top" 531 ><span class="codelink"><a href="googleapiclient.http-pysrc.html#tunnel_patch">source code</a></span> 532 </td> 533 </tr></table> 534 535 <pre class="literalblock"> 536Tunnel PATCH requests over POST. 537Args: 538 http - An instance of httplib2.Http 539 or something that acts like it. 540 541Returns: 542 A modified instance of http that was passed in. 543 544Example: 545 546 h = httplib2.Http() 547 h = tunnel_patch(h, "my-app-name/6.0") 548 549Useful if you are running on a platform that doesn't support PATCH. 550Apply this last if you are using OAuth 1.0, as changing the method 551will result in a different signature. 552 553</pre> 554 <dl class="fields"> 555 </dl> 556</td></tr></table> 557</div> 558<a name="build_http"></a> 559<div> 560<table class="details" border="1" cellpadding="3" 561 cellspacing="0" width="100%" bgcolor="white"> 562<tr><td> 563 <table width="100%" cellpadding="0" cellspacing="0" border="0"> 564 <tr valign="top"><td> 565 <h3 class="epydoc"><span class="sig"><span class="sig-name">build_http</span>()</span> 566 </h3> 567 </td><td align="right" valign="top" 568 ><span class="codelink"><a href="googleapiclient.http-pysrc.html#build_http">source code</a></span> 569 </td> 570 </tr></table> 571 572 <pre class="literalblock"> 573Builds httplib2.Http object 574 575Returns: 576A httplib2.Http object, which is used to make http requests, and which has timeout set by default. 577To override default timeout call 578 579 socket.setdefaulttimeout(timeout_in_sec) 580 581before interacting with this method. 582 583</pre> 584 <dl class="fields"> 585 </dl> 586</td></tr></table> 587</div> 588<br /> 589<!-- ==================== NAVIGATION BAR ==================== --> 590<table class="navbar" border="0" width="100%" cellpadding="0" 591 bgcolor="#a0c0ff" cellspacing="0"> 592 <tr valign="middle"> 593 <!-- Home link --> 594 <th> <a 595 href="googleapiclient-module.html">Home</a> </th> 596 597 <!-- Tree link --> 598 <th> <a 599 href="module-tree.html">Trees</a> </th> 600 601 <!-- Index link --> 602 <th> <a 603 href="identifier-index.html">Indices</a> </th> 604 605 <!-- Help link --> 606 <th> <a 607 href="help.html">Help</a> </th> 608 609 <th class="navbar" width="100%"></th> 610 </tr> 611</table> 612<table border="0" cellpadding="0" cellspacing="0" width="100%%"> 613 <tr> 614 <td align="left" class="footer"> 615 Generated by Epydoc 3.0.1 on Fri Jun 14 15:57:27 2019 616 </td> 617 <td align="right" class="footer"> 618 <a target="mainFrame" href="http://epydoc.sourceforge.net" 619 >http://epydoc.sourceforge.net</a> 620 </td> 621 </tr> 622</table> 623 624<script type="text/javascript"> 625 <!-- 626 // Private objects are initially displayed (because if 627 // javascript is turned off then we want them to be 628 // visible); but by default, we want to hide them. So hide 629 // them unless we have a cookie that says to show them. 630 checkCookie(); 631 // --> 632</script> 633</body> 634</html> 635