jugyo / earthquake

Twitter terminal client with streaming API support.
MIT License
661 stars 94 forks source link

Uncaught Exception when server is down #109

Open seppo0010 opened 12 years ago

seppo0010 commented 12 years ago

Seems like twitter was having some server problems, and earthquake crashed when I tried to post an update. I'm on revision 13b8f294ffad53663034466cdf197764b4694822.

⚡ [ERROR] 743: unexpected token at '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="Content-Language" content="en-us" />
    <title>Twitter / Error</title>
    <link href="//si0.twimg.com/sticky/error_pages/favicon.ico" rel="shortcut icon" type="image/x-icon" />

    <style type="text/css">
      /* Page
      ----------------------------------------------- */
      * { border: 0; padding: 0; margin: 0; }
      body{ margin: 10px 0; background:#C0DEED url(//si0.twimg.com/sticky/error_pages/bg-clouds.png) repeat-x; color:#333; font: 12px Lucida Grande, Arial, sans-serif; text-align:center }
      #container { width: 755px; margin: 0 auto; padding: 0px 0; text-align: left; position: relative; }
      #content { width: 100%; margin-top: 8px; float: left; padding-bottom: 15px; background: transparent url(//si0.twimg.com/sticky/error_pages/arr2.gif) no-repeat scroll 25px 0px;}
      .subpage #content .wrapper { background-color: #fff;  -moz-border-radius: 5px; -webkit-border-radius: 5px; padding: 10px 0;}
      .subpage #content h2 { margin: 5px 20px; font: bold 26px Helvetica Neue, Helvetica, Arial, sans-serif; }
      .subpage #content p { margin: 0 20px 10px 20px; color: #666; font-size: 13px;}
      .subpage #content ul { padding-left: 30px; }
      .subpage #content ol, #side ol { padding-left: 30px; }
      a{text-decoration:none;color: #2277BB;}
      a:hover { text-decoration: underline;}
      #content div.desc { margin: 11px 0px 10px 0px; }
      a img{border:0;}
      ul{list-style:square;padding-left:20px;}
      div.error { width: 100%; text-align: right; margin: 10px 0;}

      /* Navigation
      ----------------------------------------------- */
      #navigation { background-color: #fff; position: absolute; top: 8px; right: 0; padding: 6px 6px; font-size: 13px; text-align: center; }
      #navigation ul { margin: 0; padding: 0px; width: auto; height: 100%; _width: 60px; }
      #navigation li { display:inline; padding: 0 5px; }
      #navigation li:before { content: ' '; padding-right: 0; }
      #navigation li.first:before { content: ''; padding-right: 0; }
      #navigation, #footer { -moz-border-radius: 5px;-webkit-border-radius: 5px;}

      /* Footer
      ----------------------------------------------- */
      #footer { clear: left; width: 555px; text-align: left; padding: 0px 0; font-size: 11px; color: #778899;}
      #footer ul { clear: both; display: block;}
      #footer li { display: block; float: left; margin: 0 16px 0 0;}
      #footer li.first:before { content: ''; padding-right: 0; }
      #languages li { margin-bottom: 25px; font-size: 12px; width: 14%; text-align: center; }

    </style>
  </head>
  <body>
    <div id="container" class="subpage">
      <div id="navigation">
        <ul>
          <li class="first"><a href="//twitter.com">Home &#8250;</a></li>
        </ul>
      </div>
      <h1 id="header"><a href="//twitter.com"><img src="//si0.twimg.com/sticky/error_pages/twitter_logo_header.png" width="155" height="36" alt="Twitter.com" /></a></h1>
      <div id="content">
        <div class="desc"></div>
        <div class="wrapper">
          <h2>Something is technically wrong.</h2>
          <p>Thanks for noticing—we're going to fix it up and have things back to normal soon.</p>
        </div>
      </div>
      <div id="footer" style="width:100%">
        <ul id="languages">
          <li class="first"><a onclick="displayLanguage('en');return false;" href="#">English</a></li>
          <li><a onclick="displayLanguage('de');return false;" href="#">Deutsch</a></li>
          <li><a onclick="displayLanguage('es');return false;" href="#">Español</a></li>
          <li><a onclick="displayLanguage('fr');return false;" href="#">Français</a></li>
          <li><a onclick="displayLanguage('it');return false;" href="#">Italiano</a></li>
          <li><a onclick="displayLanguage('ja');return false;" href="#">日本語</a></li>
          <li><a onclick="displayLanguage('ko');return false;" href="#">한국어</a></li>
          <li><a onclick="displayLanguage('pt');return false;" href="#">Português</a></li>
        </ul>

        <ul>
          <li class="first">&copy; 2011 Twitter</li>
          <li><a href="/about">About Us</a></li>
          <li><a href="/about/contact">Contact</a></li>
          <li><a href="http://blog.twitter.com/">Blog</a></li>
          <li><a href="http://status.twitter.com/">Status</a></li>
          <li><a href="http://dev.twitter.com/">API</a></li>
          <li><a href="/help">Help</a></li>
          <li><a href="/jobs">Jobs</a></li>
          <li><a href="/tos">TOS</a></li>
          <li><a href="/privacy">Privacy</a></li>
        </ul>
      </div>
      <div class="error"><img src="//si0.twimg.com/sticky/error_pages/please_fix.png" width="311" height="212" alt=""/></div>
    </div>
    <!-- BEGIN google analytics -->
    <script type="text/javascript">
      var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
      document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
    </script>
    <script type="text/javascript">
      var pageTracker = _gat._getTracker("UA-30775-6");
      pageTracker._setDomainName("twitter.com");
      pageTracker._trackPageview('500 Error');
    </script>
    <!-- END google analytics -->
    <script type="text/javascript">
    //<![CDATA[
    var twttr = {};

    twttr.translations = {
      en: {
        home: 'Home &#8250;',
        title: 'Something is technically wrong.',
        description: 'Thanks for noticing—we\'re going to fix it up and have things back to normal soon.'
      },
      de: {
        home: 'Startseite &#8250;',
        title: 'Es ist ein technischer Fehler aufgetreten.',
        description: 'Vielen Dank für deine Aufmerksamkeit - wir lösen das Problem und alles wird bald wieder seine Richtigkeit haben.'
      },
      es: {
        home: 'Página de Inicio &#8250;',
        title: 'Algo salió mal, técnicamente.',
        description: 'Gracias por darte cuenta - vamos a solucionarlo y todo volverá a la normalidad pronto.'
      },
      fr: {
        home: 'Accueil &#8250;',
        title: 'Un problème technique est survenu.',
        description: 'Merci d\'avoir remarqué—nous allons réparer tout ça et remettre les choses en ordre sous peu.'
      },
      it: {
        home: 'Pagina Iniziale &#8250;',
        title: 'Tecnicamente qualcosa è andato storto.',
        description: 'Grazie per averlo notato: stiamo lavorando per aggiustare e rimettere presto tutto a posto.'
      },
      ja: {
        home: 'ホーム &#8250;',
        title: '技術的な不具合が発生しています。',
        description: 'ご迷惑をおかけして申し訳ありません。早急に問題を解決し、復旧いたします。'
      },
      ko: {
        home: '홈 &#8250;',
        title: '현재 트위터에 문제가 있습니다',
        description: '이용에 불편을 드려 죄송합니다. 가능한 빨리 복원하도록 하겠습니다.'
      },
      pt: {
        home: 'Página Inicial &#8250;',
        title: 'Algo está tecnicamente errado.',
        description: 'Obrigado por reparar—iremos corrigir este problema e ter as coisas de volta ao normal em breve.'
      }
    };

    function displayLanguage(lang) {
      if (lang && twttr.translations[lang]) {
        document.getElementsByTagName('h2')[0].innerHTML = twttr.translations[lang].title;
        document.getElementsByTagName('p')[0].innerHTML = twttr.translations[lang].description;
        document.getElementById('navigation').getElementsByTagName('a')[0].innerHTML = twttr.translations[lang].home;
      }
    }

    var lang = window.navigator.language ? window.navigator.language.replace(/^(..).*$/, '$1') : undefined;
    displayLanguage(lang);
    //]]>
    </script>
  </body>
</html>
'
/opt/local/lib/ruby1.9/1.9.1/json/common.rb:148:in `parse'
/opt/local/lib/ruby1.9/1.9.1/json/common.rb:148:in `parse'
/opt/local/lib/ruby1.9/gems/1.9.1/gems/twitter_oauth-0.4.3/lib/twitter_oauth/client.rb:80:in `post'
/opt/local/lib/ruby1.9/gems/1.9.1/gems/twitter_oauth-0.4.3/lib/twitter_oauth/status.rb:11:in `update'
/Users/seppo/Projects/free-software/earthquake/lib/earthquake/commands.rb:89:in `block (3 levels) in <top (required)>'
/Users/seppo/Projects/free-software/earthquake/lib/earthquake/input.rb:99:in `call'
/Users/seppo/Projects/free-software/earthquake/lib/earthquake/input.rb:99:in `handle_api_error'
/Users/seppo/Projects/free-software/earthquake/lib/earthquake/input.rb:95:in `block in async_e'
/Users/seppo/Projects/free-software/earthquake/lib/earthquake/core.rb:212:in `call'
/Users/seppo/Projects/free-software/earthquake/lib/earthquake/core.rb:212:in `block in async'