Miteru Now!

By con_mame Uploaded Jun 17, 2009
/*
   @author: con_mame
   @url: http://d.hatena.ne.jp/con_mame/
   @title: Miteru Now!
   @description: POST Watching Site's Title, URL and Short Comment to Twitter
   @version: 0.9
*/

(function(){

   const TWITTER_ICON = "data:image/png;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATExMG5mZmnjJysy/4eLm1u7w89ru8PPa7/D02+Hi5dasrK2iNDQzKwAAAAAAAAAAAAAAAAAAAAAAAAAAYWFhNN/f4cb///////7y///22f//89P///PU///z0///+OH//////8jIybkgICAVAAAAAAAAAAAAAAAAZmZmJOvs7c7///3//+u4//3Ygf/81HP//NRz//zUc//81HH//NV1///wyP/6/P/6fHx8TwAAAAAAAAAAAAAAAMnJypT//////uar//zSbP/8027//NNu//zSbf/80m3//NJt//zQZP//5af/+/z9/5ycnV4AAAAAAAAAAHJyciP4+f3h//TW//zTcv/803D//NNx//3YgP/93Iz//dyL//3bif/93ZL///jf//n6/edvb28xAAAAAAAAAACkpaVK+vr8+f/or//80mz//NNu//3dkf//9+f///34///89v///Pb///35//r7/O7FxsZuAAAAAAAAAAAAAAAAsrO0Vvn5+fz/5qb//NJs//zSbf/96rn////////////////////////////BwcKvNDQ0FwAAAAAAAAAAAAAAALCxsVb5+fr8/+an//zSbP/8027//eeu//767//++Ov//vjq//746v///PP/+fn6+6Kio5kTExMLAAAAAAAAAACwsbFW+fn6/P/mp//80m3//NRy//zWef/82ID//Nh///zYf//8133//dqF///22P/3+Pvzb29vRAAAAAAAAAAAsLGxVvn5+vz/5qf//NJt//zUc//81HH//NNu//zTbv/8027//NNu//zPZP//5aX//Pz9/5eXmGAAAAAAAAAAALCxsVb5+fr8/+an//zSbf/81HP//NV1//zWeP/81nj//NZ4//zVdv/8133///PQ//n6/fKGhoY/AAAAAAAAAACwsbFW+fn6/P/mp//80mz//NNu//zkqP//9uH///jh///23///9t7///vs///////S0tOTW1tbBAAAAAAAAAAAsrO0V/r6+v3/5aX//NFp//zRav/+6rn//P7//e7w88T19vmv8/T3s+zt767Y2Nltg4ODDQAAAAAAAAAAAAAAAKampj79/v/z/+/H//zUc//81nv///bb//P0+OSHh4gsAAAAAODg4AbFxcUEAAAAAAAAAAAAAAAAAAAAAAAAAABTU1MI7e3upf//////99////nk///////Dw8OFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJOTkxfW19eI5+nszujp7Mnb29t1dnZ2DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AMAwOABAMDAAWxpwAE+CoABICCAAyAggAMgIIABICCAASAggAEgIIABICCAASAggAMgIIBPICCA/yAgwP8gIA==";

   function getPageInfo(){
      var url = jetpack.tabs.focused.url;
      var title = jetpack.tabs.focused.contentDocument.title;
      var status = title + " " + url;
      return status;
   }

   function postToTwitter(){
      var cWindow =  jetpack.tabs.focused.contentWindow;
      var sStorage = jetpack.storage.live;

      if(!sStorage.twitterId && !sStorage.twitterPass){
         var twitterId = cWindow.prompt("Input Your Twitter ID");
         if(!twitterId) return;
         sStorage.twitterId = twitterId;

         var twitterPass = cWindow.prompt("Input Your Twitter PASS");
         if(!twitterPass) return;
         sStorage.twitterPass = twitterPass;
      }

      var tId = sStorage.twitterId;
      var tPass = sStorage.twitterPass;

      var status = "\u898B\u3066\u308B\u004E\u006F\u0077\u0021\u0020";
      var comment = cWindow.prompt("Input Short Comment", " ");
      if(!comment) return;
      comment = (comment != " ") ? comment : "";

      status = status + encodeURIComponent(comment+ " " + getPageInfo());
      var status = "status=" + status;

      $.ajax({
         type: "POST",
         url: "http://twitter.com/statuses/update.xml",
         username: tId,
         password: tPass,
         processData: false,
         data: status,
         success: function(msg){
            jetpack.notifications.show({
                                 title: "Update!",
                                 body: "Update Success",
                                 icon: TWITTER_ICON
            });
         },
         error: function(xtr, status, thrown){
            if(xtr.readyState == 4 && xtr.status == 401){
               sStorage.twitterId = "";
               sStorage.twitterPass = "";
            }
            jetpack.notifications.show({
                                 title: "Error!",
                                 body: status,
                                 icon: TWITTER_ICON
            });
         }
      });
   }

   jetpack.statusBar.append({
      html: <>
         <div id="message">
         <img src={TWITTER_ICON} />Miteru Now!!
         </div>
      </>,
      onReady: function(doc){
         $(doc).click(function(e){
            if(e.button == 2) return;
            postToTwitter();
         });

         $("#message", doc).css({
            position: "absolute",
            fontSize: "10pt",
            fontWeight: "bold",
            cursor: "pointer"
         });
      },
      width: 110
   });
})();