コード例 #1
0
        /////////////////////////////////////////////////////////////////////////////////
        //
        //
        /////////////////////////////////////////////////////////////////////////////////
        async void CreateBucket_Click(object sender, RoutedEventArgs e)
        {
            BucketSettingsDlg settingsDlg = new BucketSettingsDlg();

            settingsDlg.Owner = this.Parent as Window;

            settingsDlg.ShowDialog();

            if (!settingsDlg.DialogResult.HasValue || !settingsDlg.DialogResult.Value)
            {
                return;
            }

            var bucketData = new BucketCreationData(
                settingsDlg.BucketName,
                settingsDlg.BucketPolicy);

            var bucketResponse = await _viewDataClient.CreateBucketAsync(bucketData);

            if (!bucketResponse.IsOk())
            {
                _logger.LogError("Bucket creation failed: " +
                                 bucketResponse.Error.StatusCode.ToString());

                return;
            }

            _rootNode.AddNode(
                new TreeItem(bucketResponse));

            _logger.LogMessage("Bucket creation successful: " +
                               settingsDlg.BucketName);
        }
コード例 #2
0
        /////////////////////////////////////////////////////////////////////////////////
        // POST /oss/{apiversion}/buckets
        //
        /////////////////////////////////////////////////////////////////////////////////
        public Task <BucketDetailsResponse> CreateBucketAsync(
            BucketCreationData bucketData)
        {
            var request = new RestRequest(
                "oss/v1/buckets",
                Method.POST);

            request.AddHeader("Authorization", "Bearer " + TokenResponse.AccessToken);
            request.AddHeader("Content-Type", "application/json");

            request.AddParameter("application/json",
                                 bucketData.ToJsonString(),
                                 ParameterType.RequestBody);

            return(_restClient.ExecuteAsync
                   <BucketDetailsResponse>(
                       request));
        }
コード例 #3
0
        async protected override void OnExecute(NameValueMap context)
        {
            FileUploadForm fUp = new FileUploadForm();

            fUp.UserName = Util.GetUser();
            fUp.EMail    = Util.GetEmail();

            var syncContext = SynchronizationContext.Current;

            var dialogResult = fUp.ShowDialog();

            SynchronizationContext.SetSynchronizationContext(
                syncContext);

            if (dialogResult != System.Windows.Forms.DialogResult.OK)
            {
                Terminate();
                return;
            }

            if (fUp.StoreDetails)
            {
                Util.StoreUserInfo(fUp.UserName, fUp.EMail);
            }

            // the gallery bucket
            var bucketKey = "adn-viewer-gallery";

            // Generates unique file key
            string objectKey = Guid.NewGuid().ToString() + ".dwf";

            // Generate temp filename
            string filename = System.IO.Path.GetTempFileName() + ".dwf";

            if (!Util.ExportDwf(
                    AddInSite.Application,
                    AddInSite.Application.ActiveDocument,
                    filename))
            {
                Terminate();
                return;
            }

            AdnViewDataClient viewDataClient = new AdnViewDataClient(
                UserSettings.BASE_URL,
                UserSettings.CONSUMER_KEY,
                UserSettings.CONSUMER_SECRET);

            var tokenResult = await viewDataClient.AuthenticateAsync();

            if (!tokenResult.IsOk())
            {
                Util.LogError("Authentication failed: " + tokenResult.Error.Reason);

                System.IO.File.Delete(filename);
                Terminate();
                return;
            }

            var fi = FileUploadInfo.CreateFromFile(objectKey, filename);

            var bucketData = new BucketCreationData(
                bucketKey,
                BucketPolicyEnum.kPersistent);

            var response = await viewDataClient.UploadAndRegisterAsync(
                bucketData, fi);

            if (!response.IsOk())
            {
                Util.LogError("Error: " + response.Error.Reason);

                System.IO.File.Delete(filename);
                Terminate();
                return;
            }

            if (response is RegisterResponse)
            {
                RegisterResponse registerResponse = response as RegisterResponse;

                if (registerResponse.Result.ToLower() != "success")
                {
                    Util.LogError("Registration failed: " + registerResponse.Result);

                    System.IO.File.Delete(filename);
                    Terminate();
                    return;
                }

                var name = AddInSite.Application.ActiveDocument.DisplayName;

                var modelName = name.Substring(0, name.Length - 4);

                var fileId = viewDataClient.GetFileId(
                    bucketKey,
                    objectKey);

                var dbModel = new DBModel(
                    new Author(fUp.UserName, fUp.EMail),
                    modelName,
                    fileId,
                    fileId.ToBase64());

                AdnGalleryClient galleryClient = new AdnGalleryClient(
                    Util.GetGalleryUrl());

                var modelResponse = await galleryClient.AddModelAsync(
                    dbModel);

                if (!modelResponse.IsOk())
                {
                    Util.LogError("Error: " + modelResponse.Error.ToString());

                    System.IO.File.Delete(filename);
                    Terminate();
                    return;
                }

                var url = Util.GetGalleryUrl() + "/#/viewer?id=" +
                          modelResponse.Model.Id;

                if (fUp.ShowProgress)
                {
                    var notifier = new TranslationNotifier(
                        viewDataClient,
                        fileId,
                        2000);

                    var fProgress = new ProgressForm(
                        modelName,
                        url,
                        notifier);

                    fProgress.Show();

                    notifier.Activate();
                }

                System.IO.File.Delete(filename);
            }

            Terminate();
        }
コード例 #4
0
        async static public void UploadToGallery()
        {
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Database db  = doc.Database;
            Editor   ed  = doc.Editor;

            // validates if file has name (ie saved at least once)
            FileInfo info = new FileInfo(db.Filename);

            if (info.Extension == ".dwt")
            {
                Util.LogError("Please save the drawing before uploading to the gallery, aborting...");
                return;
            }

            var syncContext = SynchronizationContext.Current;

            FileUploadForm fUp = new FileUploadForm();

            fUp.UserName = Util.GetUser();
            fUp.EMail    = Util.GetEmail();

            var dialogResult = Application.ShowModalDialog(fUp);

            if (dialogResult != System.Windows.Forms.DialogResult.OK)
            {
                return;
            }

            if (fUp.StoreDetails)
            {
                Util.StoreUserInfo(fUp.UserName, fUp.EMail);
            }

            SynchronizationContext.SetSynchronizationContext(
                syncContext);

            // the gallery bucket
            var bucketKey = "adn-viewer-gallery";

            // Generates unique file key
            string objectKey = Guid.NewGuid().ToString() + ".dwg";

            // Generate temp filename
            string filename = Path.GetTempFileName() + ".dwg";

            db.SaveAs(filename, DwgVersion.Current);

            AdnViewDataClient viewDataClient = new AdnViewDataClient(
                UserSettings.BASE_URL,
                UserSettings.CONSUMER_KEY,
                UserSettings.CONSUMER_SECRET);

            var tokenResult = await viewDataClient.AuthenticateAsync();

            if (!tokenResult.IsOk())
            {
                Util.LogError("Authentication failed: " + tokenResult.Error.Reason);

                System.IO.File.Delete(filename);
                return;
            }

            var fi = FileUploadInfo.CreateFromFile(objectKey, filename);

            var bucketData = new BucketCreationData(
                bucketKey,
                BucketPolicyEnum.kPersistent);

            var response = await viewDataClient.UploadAndRegisterAsync(
                bucketData, fi);

            if (!response.IsOk())
            {
                Util.LogError("Error: " + response.Error.Reason);

                System.IO.File.Delete(filename);
                return;
            }

            if (response is RegisterResponse)
            {
                RegisterResponse registerResponse = response as RegisterResponse;

                if (registerResponse.Result.ToLower() != "success")
                {
                    Util.LogError("Registration failed: " + registerResponse.Result);

                    System.IO.File.Delete(filename);
                    return;
                }

                var modelName = info.Name.Substring(0, info.Name.Length - 4);

                var fileId = viewDataClient.GetFileId(
                    bucketKey,
                    objectKey);

                var dbModel = new DBModel(
                    new Author(fUp.UserName, fUp.EMail),
                    modelName,
                    fileId,
                    fileId.ToBase64());

                AdnGalleryClient galleryClient = new AdnGalleryClient(
                    Util.GetGalleryUrl());

                var modelResponse = await galleryClient.AddModelAsync(
                    dbModel);

                if (!modelResponse.IsOk())
                {
                    Util.LogError("Error: " + modelResponse.Error.ToString());

                    System.IO.File.Delete(filename);
                    return;
                }

                var url = Util.GetGalleryUrl() + "/#/viewer?id=" +
                          modelResponse.Model.Id;

                if (fUp.ShowProgress)
                {
                    var notifier = new TranslationNotifier(
                        viewDataClient,
                        fileId,
                        2000);

                    var fProgress = new ProgressForm(
                        modelName,
                        url,
                        notifier);

                    Application.ShowModelessDialog(fProgress);

                    notifier.OnTranslationCompleted +=
                        OnTranslationCompleted;

                    notifier.Activate();
                }

                ed.WriteMessage("\nYou successfully uploaded a new model to the gallery!");
                ed.WriteMessage("\nYour model is viewable at the following url:");

                ed.WriteMessage("\n" + url + "\n");

                System.IO.File.Delete(filename);
            }
        }
コード例 #5
0
        /////////////////////////////////////////////////////////////////////////////////
        // Performs full workflow: bucket creation, file upload, registration, progress
        //
        /////////////////////////////////////////////////////////////////////////////////
        async public Task <ViewDataResponseBase> UploadAndRegisterAsync(
            BucketCreationData bucketData,
            FileUploadInfo fi,
            bool waitForTranslation     = false,
            bool createBucketIfNotExist = true)
        {
            var bucketDetailsResponse = await GetBucketDetailsAsync(
                bucketData.Name);

            if (!bucketDetailsResponse.IsOk())
            {
                // Attempts creation if createBucketIfNotExist = true

                if (bucketDetailsResponse.Error.StatusCode ==
                    System.Net.HttpStatusCode.NotFound && createBucketIfNotExist)
                {
                    var bucketCreationResponse = await CreateBucketAsync(bucketData);

                    if (!bucketDetailsResponse.IsOk())
                    {
                        return(bucketCreationResponse);
                    }
                }
                else
                {
                    return(bucketDetailsResponse);
                }
            }

            var objectDetailsResponse = await UploadFileAsync(
                bucketData.Name, fi);

            if (!objectDetailsResponse.IsOk() || objectDetailsResponse.Objects.Count < 1)
            {
                return(objectDetailsResponse);
            }

            string fileId = objectDetailsResponse.Objects[0].FileId;

            var registerResponse = await RegisterAsync(fileId);

            if (!registerResponse.IsOk() || !waitForTranslation)
            {
                return(registerResponse);
            }

            while (true)
            {
                await Task.Delay(2000);

                var viewableResponse = await GetViewableAsync(
                    fileId,
                    ViewableOptionEnum.kStatus);

                if (!viewableResponse.IsOk())
                {
                    return(viewableResponse);
                }

                else if (viewableResponse.Progress.ToLower() == "complete")
                {
                    return(viewableResponse);
                }
            }
        }
コード例 #6
0
        async static public void UploadToGallery(
            string filename,
            string modelname)
        {
            System.Windows.Forms.IWin32Window revit_window
                = new JtWindowHandle(
                      Autodesk.Windows.ComponentManager.ApplicationWindow);

            var syncContext = SynchronizationContext.Current;

            FileUploadForm fUp = new FileUploadForm();

            fUp.UserName = Util.GetUser();
            fUp.EMail    = Util.GetEmail();

            var dialogResult = fUp.ShowDialog(revit_window);

            if (dialogResult != System.Windows.Forms.DialogResult.OK)
            {
                Util.LogError("Upload cancelled.");

                return;
            }

            if (fUp.StoreDetails)
            {
                Util.StoreUserInfo(fUp.UserName, fUp.EMail);
            }

            SynchronizationContext.SetSynchronizationContext(
                syncContext);

            // The gallery bucket

            var bucketKey = "adn-viewer-gallery";

            string consumer_key, consumer_secret;

            if (!Util.GetConsumerCredentials(
                    "C:/credentials.txt",
                    out consumer_key,
                    out consumer_secret))
            {
                Util.LogError("Consumer credentials retrieval failed.");
                return;
            }

            AdnViewDataClient viewDataClient = new AdnViewDataClient(
                UserSettings.BASE_URL,
                consumer_key,
                consumer_secret);

            var tokenResult = await viewDataClient.AuthenticateAsync();

            if (!tokenResult.IsOk())
            {
                Util.LogError("Authentication failed: "
                              + tokenResult.Error.Reason);

                return;
            }

            // Generate unique file key

            string objectKey = Guid.NewGuid().ToString()
                               + ".rvt";

            var fi = FileUploadInfo.CreateFromFile(
                objectKey, filename);

            var bucketData = new BucketCreationData(
                bucketKey,
                BucketPolicyEnum.kPersistent);

            var response
                = await viewDataClient.UploadAndRegisterAsync(
                      bucketData, fi);

            if (!response.IsOk())
            {
                Util.LogError("Error: " + response.Error.Reason);

                return;
            }

            if (response is RegisterResponse)
            {
                RegisterResponse registerResponse = response as RegisterResponse;

                if (registerResponse.Result.ToLower() != "success")
                {
                    Util.LogError("Registration failed: " + registerResponse.Result);

                    return;
                }

                var fileId = viewDataClient.GetFileId(
                    bucketKey,
                    objectKey);

                var dbModel = new DBModel(
                    new Author(fUp.UserName, fUp.EMail),
                    modelname,
                    fileId,
                    fileId.ToBase64());

                string url = Util.GalleryUrl;

                AdnGalleryClient galleryClient = new AdnGalleryClient(
                    url);

                DBModelResponse modelResponse
                    = await Util.AddModelToGalleryAsync(
                          dbModel);

                if (!modelResponse.IsOk())
                {
                    Util.LogError(string.Format("Error: '{0}' {1}",
                                                modelResponse.Error.ToString(),
                                                null == modelResponse.Model ? "model is null" : ""));

                    return;
                }

                url = url + "/#/viewer?id=" + modelResponse.Model.Id;

                if (fUp.ShowProgress)
                {
                    var notifier = new TranslationNotifier(
                        viewDataClient,
                        fileId,
                        2000);

                    var fProgress = new ProgressForm(
                        modelname,
                        url,
                        notifier);

                    fProgress.Show(revit_window);

                    notifier.OnTranslationCompleted +=
                        OnTranslationCompleted;

                    notifier.Activate();
                }
                string msg = "You successfully "
                             + " uploaded a new model to the gallery.\r\n"
                             + "Your model is viewable at the following url:\r\n"
                             + url;

                Util.LogError(msg);

                TaskDialog dlg = new TaskDialog(
                    "Gallery Upload");

                dlg.MainInstruction = "Upload succeeded";
                dlg.MainContent     = msg;
                dlg.Show();
            }
        }