public async Task <dynamic> TranslateObject([FromBody] TranslateObjectModel objModel) { dynamic oauth = await OAuthController.GetInternalAsync(); // prepare the webhook callback DerivativeWebhooksApi webhook = new DerivativeWebhooksApi(); webhook.Configuration.AccessToken = oauth.access_token; dynamic existingHooks = await webhook.GetHooksAsync(DerivativeWebhookEvent.ExtractionFinished); // get the callback from your settings (e.g. web.config) string callbackUlr = OAuthController.GetAppSetting("FORGE_WEBHOOK_URL") + "/api/forge/callback/modelderivative"; bool createHook = true; // need to create, we don't know if our hook is already there... foreach (KeyValuePair <string, dynamic> hook in new DynamicDictionaryItems(existingHooks.data)) { if (hook.Value.scope.workflow.Equals(objModel.connectionId)) { // ok, found one hook with the same workflow, no need to create... createHook = false; if (!hook.Value.callbackUrl.Equals(callbackUlr)) { await webhook.DeleteHookAsync(DerivativeWebhookEvent.ExtractionFinished, new System.Guid(hook.Value.hookId)); createHook = true; // ops, the callback URL is outdated, so delete and prepare to create again } } } // need to (re)create the hook? if (createHook) { await webhook.CreateHookAsync(DerivativeWebhookEvent.ExtractionFinished, callbackUlr, objModel.connectionId); } // prepare the payload List <JobPayloadItem> outputs = new List <JobPayloadItem>() { new JobPayloadItem( JobPayloadItem.TypeEnum.Svf, new List <JobPayloadItem.ViewsEnum>() { JobPayloadItem.ViewsEnum._2d, JobPayloadItem.ViewsEnum._3d }) }; JobPayload job = new JobPayload(new JobPayloadInput(objModel.objectName), new JobPayloadOutput(outputs), new JobPayloadMisc(objModel.connectionId)); // start the translation DerivativesApi derivative = new DerivativesApi(); derivative.Configuration.AccessToken = oauth.access_token; dynamic jobPosted = await derivative.TranslateAsync(job, true /* force re-translate if already here, required data:write*/); return(jobPosted); }
public async Task <IActionResult> UploadOssFiles([FromBody] JObject appBundleSpecs) { if (OAuthController.GetAppSetting("DISABLE_SETUP") == "true") { return(Unauthorized()); } System.Diagnostics.Debug.WriteLine("UploadOssFiles"); // OAuth token dynamic oauth = await OAuthController.GetInternalAsync(); ObjectsApi objects = new ObjectsApi(); objects.Configuration.AccessToken = oauth.access_token; DerivativesApi derivatives = new DerivativesApi(); derivatives.Configuration.AccessToken = oauth.access_token; // upload file to OSS Bucket // 1. ensure bucket existis BucketsApi buckets = new BucketsApi(); buckets.Configuration.AccessToken = oauth.access_token; try { PostBucketsPayload bucketPayload = new PostBucketsPayload(PersistentBucketKey, null, PostBucketsPayload.PolicyKeyEnum.Persistent); await buckets.CreateBucketAsync(bucketPayload, "US"); } catch { }; // in case bucket already exists try { PostBucketsPayload bucketPayload = new PostBucketsPayload(TransientBucketKey, null, PostBucketsPayload.PolicyKeyEnum.Transient); await buckets.CreateBucketAsync(bucketPayload, "US"); } catch { }; // in case bucket already exists string [] filePaths = System.IO.Directory.GetFiles(LocalFilesFolder); foreach (string filePath in filePaths) { string fileName = System.IO.Path.GetFileName(filePath); string objectId = await UploadFile(PersistentBucketKey, filePath); System.Diagnostics.Debug.WriteLine("Translating " + fileName); _ = TranslateFile(objectId, fileName.Replace(".zip", "")); } DerivativeWebhooksApi webhooks = new DerivativeWebhooksApi(); webhooks.Configuration.AccessToken = oauth.access_token; dynamic webhookRes = await webhooks.GetHooksAsync(DerivativeWebhookEvent.ExtractionFinished); foreach (KeyValuePair <string, dynamic> item in new DynamicDictionaryItems(webhookRes.data)) { Guid hookId = new Guid(item.Value.hookId); System.Diagnostics.Debug.WriteLine("Deleting webhook, hookId " + hookId); await webhooks.DeleteHookAsync(DerivativeWebhookEvent.ExtractionFinished, hookId); } string callbackComplete = string.Format( "{0}/api/forge/callback/ontranslated", OAuthController.GetAppSetting("FORGE_WEBHOOK_URL") ); System.Diagnostics.Debug.WriteLine("Creating webhook with workflowId = " + WorkflowId); dynamic res = await webhooks.CreateHookAsync(DerivativeWebhookEvent.ExtractionFinished, callbackComplete, WorkflowId); System.Diagnostics.Debug.WriteLine("Created webhook"); return(Ok()); }