Changeset 19575 for platform

Show
Ignore:
Timestamp:
09/19/08 07:31:49 (2 months ago)
Author:
kan
Message:

チャンネルにも画像投稿できるようにする。
DRYじゃないので設計については追々詰める

Location:
platform/air/wasaco/src
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • platform/air/wasaco/src/vc/kan/net/Wassr.as

    r19404 r19575  
    173173                } 
    174174 
    175                 public function channelStatusUpdate(channel:String, status:String, callback:Function):void { 
    176                         var param:Object = { 
    177                                 "body": status, 
    178                                 "source": "wasaco" 
    179                         }; 
    180                         _post("/channel_message/update.json?name_en=" + channel, param, callback); 
     175                public function channelStatusUpdate(channel:String, status:String, image:*, callback:Function):void { 
     176                        if (image) { 
     177                                var multipart:MultiPartData = new MultiPartData(); 
     178                                var req:URLRequest = new URLRequest(); 
     179                                var loader:URLLoader = new URLLoader(); 
     180                                var bytes:ByteArray; 
     181                                var bmpData:BitmapData; 
     182                                var encoder:IImageEncoder = new PNGEncoder();//mx.graphics.codec.PNGEncoderはFlex3のコンポーネントです。 
     183  
     184                                bmpData = new BitmapData(image.width, image.height); 
     185                                bmpData.draw(image); 
     186                                bytes = encoder.encode(bmpData); 
     187  
     188                                //リクエストのボディーを作成 
     189                                multipart.addString('body', status); 
     190                                multipart.addString('source', 'wasaco'); 
     191                                multipart.addBynary('image', bytes, 'img.png', encoder.contentType); 
     192  
     193                                //リクエストの作成 
     194                                req.url = api_url + '/channel_message/update.json?name_en=' + channel; 
     195                                req.method = URLRequestMethod.POST; 
     196                                var headers:Array = new Array( 
     197                                        new URLRequestHeader("Authorization", "Basic " + getCredential()), 
     198                                        new URLRequestHeader("Content-Type", "multipart/form-data, boundary=" + multipart.boundary) 
     199                                ); 
     200                                req.requestHeaders = headers; 
     201                                req.data = multipart.data; 
     202  
     203                                loader.addEventListener(Event.COMPLETE, callback); 
     204                                loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); 
     205                                loader.load(req); 
     206                        } else { 
     207                                var param:Object = { 
     208                                        "body": status, 
     209                                        "source": "wasaco" 
     210                                }; 
     211                                _post("/channel_message/update.json?name_en=" + channel, param, callback); 
     212                        } 
    181213                } 
    182214 
  • platform/air/wasaco/src/wasaco.mxml

    r19571 r19575  
    403403                                channelImage.data = channelList.selectedItem.name_en; 
    404404                                var channel:String = channelList.selectedItem.name_en; 
    405                                 wassr.channelStatusUpdate(channel, stat.text, function ():void { 
     405                                wassr.channelStatusUpdate(channel, stat.text, null, function ():void { 
    406406                                        wassr.getChannelFeed(channel, displayChannel); 
    407407                                }); 
     
    649649                                        return; 
    650650                                } 
    651                                 wassr.channelStatusUpdate(channel, stat.text, function ():void { 
     651                                wassr.channelStatusUpdate(channel, stat.text, image, function ():void { 
    652652                                        wassr.getChannelFeed(channel, displayChannel); 
    653653                                });