forked from: コピペで使える「Twitter投稿ボタン」クラス(美人すぎったー)

by h_sakurai forked from コピペで使える「Twitter投稿ボタン」クラス(美人すぎったー) (diff: 188)
♥0 | Line 85 | Modified 2010-03-27 04:13:37 | MIT License
play

ActionScript3 source code

/**
 * Copyright h_sakurai ( http://wonderfl.net/user/h_sakurai )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/oKMe
 */

package {
	import flash.display.*
	import flash.events.Event
	import flash.net.URLRequest
	import flash.net.URLLoader
	import flash.text.*
	import com.adobe.serialization.json.JSON
	import flash.events.*;
	import flash.net.*;
	import flash.utils.*;
	import mx.utils.Base64Encoder;
	import flash.utils.ByteArray;
	import flash.ui.Keyboard;
	import mx.rpc.events.FaultEvent;
	import mx.rpc.events.ResultEvent;
	import mx.rpc.http.HTTPService;
	
	
	public class Document extends Sprite {
		public var text:TextField = new TextField()
		public var email:TextField = new TextField()
		public var pass:TextField = new TextField()
		public var input:TextField = new TextField()
		public function Document() {
			text.y = 20
			text.width = 512
			text.height = 512
			addChild(text)
			email.background = true
			input.height = pass.height = email.height = 20
			input.type = pass.type = email.type = TextFieldType.INPUT;
			pass.x = 120
			input.borderColor = email.borderColor = pass.borderColor = 1
			input.border = email.border = pass.border=true
			input.x = 250
			addChild(email)
			addChild(pass)
			addChild(input)
			input.addEventListener(KeyboardEvent.KEY_DOWN, function(event:KeyboardEvent):void {
				if ( event.keyCode == Keyboard.ENTER ) {
					var request:URLRequest = new URLRequest(
						"http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&langpair=ja%7Cfi&q="
						+ encodeURI(input.text))
					var loader:URLLoader = new URLLoader(request)
					loader.addEventListener(Event.COMPLETE, function(event:Event):void {				
						var json:Object = JSON.decode(loader.data)
						text.text = input.text + "\n" + json["responseData"]["translatedText"]
						submit1(text.text)
					})
					loader.load(request)
				}
			})			
		}
		
		public function submit1(st:String):void {
			initTwitterManager();
/*			var loader:URLLoader = new URLLoader();
			var urlReq:URLRequest = new URLRequest("http://twitter.com/statuses/update.xml");
			var ben:Base64Encoder = new Base64Encoder();
			ben.encodeUTFBytes(email.text + ":"+ pass.text);
			var reqHead:* = new URLRequestHeader("Authorization", "Basic " + ben.toString())
			urlReq.requestHeaders.push(reqHead);
			urlReq.method = URLRequestMethod.POST;
			//urlReq.contentType = "application/x-www-form-urlencoded"
			
			
			var uv:URLVariables = new URLVariables();
			uv.status=st;
			text.appendText(uv.toString())			
			urlReq.data = uv;
			loader.addEventListener(ProgressEvent.PROGRESS,t);
			loader.addEventListener(IOErrorEvent.IO_ERROR,t);
			loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, t);
			loader.addEventListener(HTTPStatusEvent.HTTP_STATUS,t);
			loader.addEventListener(Event.COMPLETE,t);
			text.appendText("5\n");
			loader.load(urlReq);
//			navigateToURL( urlReq );*/
			tweet(st)
		}
		public function t(event:*):void {
			text.appendText(""+event);
		}
		public var service:HTTPService;
		
		public function initTwitterManager():void {
			service = new HTTPService;
			service.method = "post";
			service.url = "http://twitter.com/statuses/update.json";
			service.resultFormat = "text";
			service.addEventListener(ResultEvent.RESULT, onResult);
			service.addEventListener(FaultEvent.FAULT, onFault);
		}

		public function tweet(message:String):void {
			var forms:URLVariables = new URLVariables();
			forms.status = message;

			var encoder:Base64Encoder = new Base64Encoder();
			encoder.encode(email.text+":"+pass.text);

			service.headers["Authorization"] = "Basic " + encoder.toString();
			service.request = forms;
			service.send();
		}

		private function onResult(event:ResultEvent):void {
			var json:Object = JSON.decode(event.result.toString());
			t(json.text);
		}

		private function onFault(event:FaultEvent):void {
			t("投稿失敗...\n" + event.fault.toString());
		}
		/*
		req=Net::HTTP::Post.new "/statuses/update.xml"
    req.basic_auth(@username,@password)
    submit=URI.escape(status)
    Net::HTTP.start(SERVER) do |http|
      if repto==nil then resp=http.request(req,"status=#{submit}")
      else
        repto=repto.to_i
        resp=http.request(req,"status=#{submit}&in_reply_to_status_id=#{@id_array[repto]}") if 0<repto&&repto<=@id_array.size
      end
      raise "リクエストに失敗" unless resp.code=='200'
    end*/
	}
}