Created
March 16, 2013 00:46
-
-
Save astein/662aa11a5707800e56cd to your computer and use it in GitHub Desktop.
Jack in the Box photo upload
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.socialvibe.modules.logic | |
{ | |
import com.adobe.images.PNGEnc; | |
import com.adobe.utils.ArrayUtil; | |
import com.socialvibe.core.ui.components.*; | |
import com.socialvibe.core.ui.controls.*; | |
import com.socialvibe.core.utils.*; | |
import com.socialvibe.engagement.EngagementParameters; | |
import com.socialvibe.engagement.EngagementTracking; | |
import com.socialvibe.engagement.controller.*; | |
import com.socialvibe.engagement.controller.actions.NavigationAction; | |
import com.socialvibe.engagement.view.controls.video.SVVideo; | |
import com.socialvibe.engagement.view.controls.video.VideoPlayerBase; | |
import com.socialvibe.modules.controls.ScrollableList; | |
import com.socialvibe.tools.builder.BuilderEngagementBase; | |
import com.socialvibe.tools.builder.model.BuilderEngagementMaterial; | |
import com.socialvibe.tools.builder.model.BuilderToolset; | |
import com.socialvibe.tools.builder.view.panels.EngagementStep; | |
import com.socialvibe.engagement.EngagementUtils; | |
import flash.display.*; | |
import flash.events.*; | |
import flash.external.*; | |
import flash.net.*; | |
import flash.system.LoaderContext; | |
import flash.text.Font; | |
import flash.utils.*; | |
public class QuickLogic extends CustomLogicControllerBase | |
{ | |
private var _drawApp:Object; | |
private var _canContinue:Boolean; | |
private var _drawing:BitmapData; | |
private var _imageUploader:ImageUploader; | |
private var _drawingUrl:String; | |
public function QuickLogic() { } | |
override public function getControllerName():String { return 'jack_in_box_upload_logic'; } | |
override public function applyLogic(steps:Array):void | |
{ | |
_material.base.addEventListener('start_upload', uploadIt); | |
_material.base.addEventListener('tweet_it', tweetIt); | |
} | |
protected function saveIt(e:Event):void | |
{ | |
var mock:BitmapData = new BitmapData(_drawing.width, _drawing.height); | |
mock.draw(_drawing); | |
var savedFile:FileReference = new FileReference(); | |
savedFile.save(PNGEnc.encode(mock), 'jack_in_the_box.png'); | |
} | |
protected function uploadIt(e:Event):void | |
{ | |
_drawApp = e.target; | |
_drawing = new BitmapData(750, 500); | |
_drawing.draw(_drawApp.board) | |
startUpload(); | |
} | |
protected function tweetIt(e:Event):void | |
{ | |
var tracker:EngagementTracking = EngagementTracking.getInstance(); | |
tracker.trackEvent(tracker.tracking_events.SHARE, tracker.share_types.TWITTER, _params.activity_id); | |
_api.trackOtherInteraction('shared_drawing_url', _drawingUrl); | |
EngagementUtils.onTwitterShare('Can\'t stop singing Meat Riot’s one hit wonder, #HotMess. Check me out here:', _drawingUrl); | |
} | |
private function startUpload():void | |
{ | |
_imageUploader = new ImageUploader( _drawing ); | |
_imageUploader.addEventListener( ImageUploader.ASSET_UPLOAD_COMPLETE, onImageUploaded, false, 0, true ); | |
} | |
protected function onImageUploaded(e:SVEvent):void | |
{ | |
_drawingUrl = e.data as String; | |
_drawingUrl = _drawingUrl.replace('s3.amazonaws.com/', ''); | |
_params.share_img_url = _drawingUrl; | |
_drawApp.uploadReady(); | |
} | |
} | |
} | |
import com.adobe.images.JPGEncoder; | |
import com.adobe.serialization.json.JSONDecoder; | |
import com.socialvibe.core.config.Services; | |
import com.socialvibe.core.utils.AssetCache; | |
import com.socialvibe.core.utils.SVEvent; | |
import com.socialvibe.engagement.EngagementAPI; | |
import flash.display.*; | |
import flash.events.*; | |
import flash.net.*; | |
import ru.inspirit.MultipartURLLoader; | |
internal class ImageUploader extends EventDispatcher | |
{ | |
public static const ASSET_UPLOAD_COMPLETE:String = 'assetUploadComplete'; | |
protected var _loader:MultipartURLLoader; | |
protected var _name:String; | |
protected var _assetURL:String; | |
protected var _assetID:Number; | |
protected var _assetName:String; | |
public function ImageUploader( image:BitmapData ):void | |
{ | |
_loader = new MultipartURLLoader(); | |
_loader.addEventListener(Event.COMPLETE, onFileUploaded); | |
_loader.addVariable('commit', 'Create'); | |
_loader.addFile( (new JPGEncoder(80).encode( image ) ), 'jack_in_the_box.jpg', "photo", 'image/jpg'); | |
_loader.load( Services.PARTNER_URL + '/engagements/create_photo.xml' ); | |
} | |
protected function onFileUploaded(e:Event = null):void | |
{ | |
_assetURL = _loader.loader.data; | |
var _api:EngagementAPI = EngagementAPI.getInstance(); | |
_api.trackUpload( _assetURL, true ) | |
dispatchEvent( new SVEvent( ASSET_UPLOAD_COMPLETE, _assetURL, true, true ) ); | |
} | |
protected function jsonDecode(json:String):Object | |
{ | |
if (json) | |
{ | |
try { | |
return new JSONDecoder(json).getValue(); | |
} catch (e:Error) { } | |
} | |
return null; | |
} | |
public function get assetURL():String { return _assetURL; } | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment