Miteru Now! Beta

By con_mame Uploaded Nov 4, 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.1
*/


var manifest = {
  settings: [
	{
	  name: "miterunow",
	  type: "group",
	  label: "Twitter Account",
	  settings: [
		{ name: "twitterId", type: "text", label: "Username" },
		{ name: "twitterPass", type: "password", label: "Password" }
	  ]
	}
  ]
};

(function(){
    jetpack.future.import("storage.settings");


   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.settings.miterunow;

	  if(!sStorage.twitterId || !sStorage.twitterPass){
		cWindow.alert("Set Your Twitter account.");
		return;
	  }

	  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
   });
})();