public void TestHandleImageAttachmentSaved() { List <UserGroup> groups = new List <UserGroup>(); groups.Add(new UserGroup { creator_id = "id1", group_id = "gid1", name = "group1", description = "none" }); ImageAttachmentEventArgs args = new ImageAttachmentEventArgs { Attachment = new Attachment { title = "title1", mime_type = "image/jpeg", type = AttachmentType.image, RawData = new ArraySegment <byte>(imageRawData), object_id = object_id1, file_name = "orig_file.jpeg" }, Meta = ImageMeta.Origin, UserApiKey = "key1", UserSessionToken = "token1", Driver = new Driver { email = "*****@*****.**", folder = "resource", groups = groups, session_token = "session_token1", user_id = "id1" } }; ImagePostProcessing post = new ImagePostProcessing(); post.HandleImageAttachmentSaved(this, args); //save Attachment doc = mongodb.GetDatabase("wammer"). GetCollection <Attachment>("attachments").FindOne( new QueryDocument("_id", args.Attachment.object_id)); Assert.AreEqual(1024, doc.image_meta.width); Assert.AreEqual(768, doc.image_meta.height); Assert.AreEqual("orig_title", doc.title); Assert.AreEqual("/v2/attachments/view/?object_id=" + object_id1 + "&image_meta=medium", doc.image_meta.medium.url); Assert.AreEqual(512, doc.image_meta.medium.width); Assert.AreEqual(384, doc.image_meta.medium.height); Assert.AreEqual("image/jpeg", doc.image_meta.medium.mime_type); Assert.AreEqual(object_id1 + "_medium.jpeg", doc.image_meta.medium.saved_file_name); Assert.AreEqual(args.Attachment.file_name, doc.image_meta.medium.file_name); Assert.IsTrue(doc.image_meta.medium.file_size > 0); Assert.IsTrue(doc.image_meta.medium.modify_time - DateTime.UtcNow < TimeSpan.FromSeconds(10)); }
protected override void OnStart(string[] args) { try { logger.Info("============== Starting Waveface Station ================="); ConfigThreadPool(); AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); Environment.CurrentDirectory = Path.GetDirectoryName( Assembly.GetExecutingAssembly().Location); logger.Debug("Initialize Waveface Service"); InitStationId(); InitResourceBasePath(); fastJSON.JSON.Instance.UseUTCDateTime = true; functionServer = new HttpServer(9981); // TODO: remove hard code stationTimer = new StationTimer(functionServer); logger.Debug("Add cloud forwarders to function server"); BypassHttpHandler cloudForwarder = new BypassHttpHandler(CloudServer.BaseUrl); cloudForwarder.AddExceptPrefix("/" + CloudServer.DEF_BASE_PATH + "/auth/"); cloudForwarder.AddExceptPrefix("/" + CloudServer.DEF_BASE_PATH + "/users/"); cloudForwarder.AddExceptPrefix("/" + CloudServer.DEF_BASE_PATH + "/groups/"); cloudForwarder.AddExceptPrefix("/" + CloudServer.DEF_BASE_PATH + "/stations/"); functionServer.AddDefaultHandler(cloudForwarder); logger.Debug("Add handlers to function server"); functionServer.AddHandler("/", new DummyHandler()); functionServer.AddHandler("/" + CloudServer.DEF_BASE_PATH + "/attachments/view/", new AttachmentViewHandler(stationId)); AttachmentUploadHandler attachmentHandler = new AttachmentUploadHandler(); AttachmentUploadMonitor attachmentMonitor = new AttachmentUploadMonitor(); ImagePostProcessing imgProc = new ImagePostProcessing(); imgProc.ThumbnailUpstreamed += attachmentMonitor.OnThumbnailUpstreamed; attachmentHandler.ImageAttachmentSaved += imgProc.HandleImageAttachmentSaved; attachmentHandler.ImageAttachmentCompleted += imgProc.HandleImageAttachmentCompleted; attachmentHandler.ThumbnailUpstreamed += attachmentMonitor.OnThumbnailUpstreamed; CloudStorageSync cloudSync = new CloudStorageSync(); attachmentHandler.AttachmentSaved += cloudSync.HandleAttachmentSaved; attachmentHandler.ProcessSucceeded += attachmentMonitor.OnProcessSucceeded; functionServer.AddHandler("/" + CloudServer.DEF_BASE_PATH + "/attachments/upload/", attachmentHandler); functionServer.AddHandler("/" + CloudServer.DEF_BASE_PATH + "/station/resourceDir/get/", new ResouceDirGetHandler(resourceBasePath)); functionServer.AddHandler("/" + CloudServer.DEF_BASE_PATH + "/station/resourceDir/set/", new ResouceDirSetHandler()); functionServer.AddHandler("/" + CloudServer.DEF_BASE_PATH + "/attachments/get/", new AttachmentGetHandler()); functionServer.AddHandler("/" + CloudServer.DEF_BASE_PATH + "/availability/ping/", new PingHandler()); //if (Wammer.Utility.AutoRun.Exists("WavefaceStation")) //{ logger.Debug("Start function server"); functionServer.Start(); stationTimer.Start(); //} logger.Debug("Add handlers to management server"); managementServer = new HttpServer(9989); AddDriverHandler addDriverHandler = new AddDriverHandler(stationId, resourceBasePath); managementServer.AddHandler("/" + CloudServer.DEF_BASE_PATH + "/station/online/", new StationOnlineHandler(functionServer, stationTimer)); managementServer.AddHandler("/" + CloudServer.DEF_BASE_PATH + "/station/offline/", new StationOfflineHandler(functionServer, stationTimer)); managementServer.AddHandler("/" + CloudServer.DEF_BASE_PATH + "/station/drivers/add/", addDriverHandler); managementServer.AddHandler("/" + CloudServer.DEF_BASE_PATH + "/station/drivers/list/", new ListDriverHandler()); managementServer.AddHandler("/" + CloudServer.DEF_BASE_PATH + "/station/drivers/remove/", new RemoveOwnerHandler(stationId)); managementServer.AddHandler("/" + CloudServer.DEF_BASE_PATH + "/station/status/get/", new StatusGetHandler()); managementServer.AddHandler("/" + CloudServer.DEF_BASE_PATH + "/cloudstorage/list", new ListCloudStorageHandler()); managementServer.AddHandler("/" + CloudServer.DEF_BASE_PATH + "/cloudstorage/dropbox/oauth/", new DropBoxOAuthHandler()); managementServer.AddHandler("/" + CloudServer.DEF_BASE_PATH + "/cloudstorage/dropbox/connect/", new DropBoxConnectHandler()); managementServer.AddHandler("/" + CloudServer.DEF_BASE_PATH + "/cloudstorage/dropbox/update/", new DropBoxUpdateHandler()); managementServer.AddHandler("/" + CloudServer.DEF_BASE_PATH + "/cloudstorage/dropbox/disconnect/", new DropboxDisconnectHandler()); managementServer.AddHandler("/" + CloudServer.DEF_BASE_PATH + "/availability/ping/", new PingHandler()); addDriverHandler.DriverAdded += new EventHandler <DriverAddedEvtArgs>(addDriverHandler_DriverAdded); logger.Debug("Start management server"); managementServer.Start(); logger.Info("Waveface station is started"); } catch (Exception ex) { logger.Error("Unknown exception", ex); throw; } }