public async Task <SnapshotResponse> WaitForSnapshotResponse(string sessionId, int fileSessionId)
        {
            var client                        = new HttpAuthClient();
            var snapshotStatusUrl             = $"https://studioapi.bluebeam.com/publicapi/v1/sessions/{sessionId}/files/{fileSessionId}/snapshot";
            SnapshotResponse snapshotResponse = null;

            while (true)
            {
                var response = await client.Get(snapshotStatusUrl, User, _userManager);

                snapshotResponse = JsonConvert.DeserializeObject <SnapshotResponse>(response);
                Console.WriteLine("Snapshot Response: " + snapshotResponse.Status);

                if (snapshotResponse.Status == "Complete")
                {
                    break;
                }
                else if (snapshotResponse.Status == "Error")
                {
                    break;
                }

                Thread.Sleep(5000);
            }

            return(snapshotResponse);
        }
        public async Task <string> StartSnapshot(string sessionId, int fileSessionId)
        {
            var client      = new HttpAuthClient();
            var snapshotUrl = $"https://studioapi.bluebeam.com/publicapi/v1/sessions/{sessionId}/files/{fileSessionId}/snapshot";
            var response    = await client.Post(snapshotUrl, string.Empty, User, _userManager);

            return(response);
        }
        public async Task <string> DeleteSession(string sessionId)
        {
            var client    = new HttpAuthClient();
            var deleteUrl = $"https://studioapi.bluebeam.com/publicapi/v1/sessions/{sessionId}";
            var response  = await client.Delete(deleteUrl, User, _userManager);

            return(response);
        }
        public async Task <string> ConfirmCheckin(string projectId, int projectFileId)
        {
            var client     = new HttpAuthClient();
            var confirmUrl = $"https://studioapi.bluebeam.com/publicapi/v1/projects/{projectId}/files/{projectFileId}/confirm-upload";

            var response = await client.Post(confirmUrl, string.Empty, User, _userManager);

            return(response);
        }
        public async Task <ProjectFilesResponse> CheckinProjectFile(string projectId, int fileProjectId)
        {
            var client     = new HttpAuthClient();
            var checkinUrl =
                $"https://studioapi.bluebeam.com/publicapi/v1/projects/{projectId}/files/{fileProjectId}/checkin";
            var response = await client.Post(checkinUrl, string.Empty, User, _userManager);

            var projectFilesResponse = JsonConvert.DeserializeObject <ProjectFilesResponse>(response);

            return(projectFilesResponse);
        }
        public async Task <string> ConfirmCheckin(string projectId, int fileProjectId)
        {
            var confirmCheckinUrl =
                $"https://studioapi.bluebeam.com/publicapi/v1/projects/{projectId}/files/{fileProjectId}/confirm-checkin";
            var checkin = new CheckinFromSession()
            {
                Comment = "CS Round Tripper"
            };
            var json     = JsonConvert.SerializeObject(checkin);
            var client   = new HttpAuthClient();
            var response = await client.Post(confirmCheckinUrl, json, User, _userManager);

            return(response);
        }
        public async Task <CreateSessionResponse> CreateSession(string sessionName)
        {
            var createSessionData = new CreateSession()
            {
                Name               = sessionName,
                Notification       = true,
                Restricted         = false,
                SessionEndDate     = DateTime.Now.AddDays(30),
                DefaultPermissions = new List <DefaultSessionPermissions>()
                {
                    new DefaultSessionPermissions()
                    {
                        Type  = "SaveCopy",
                        Allow = "Allow"
                    },
                    new DefaultSessionPermissions()
                    {
                        Type  = "PrintCopy",
                        Allow = "Allow"
                    },
                    new DefaultSessionPermissions()
                    {
                        Type  = "Markup",
                        Allow = "Allow"
                    },
                    new DefaultSessionPermissions()
                    {
                        Type  = "MarkupAlert",
                        Allow = "Allow"
                    },
                    new DefaultSessionPermissions()
                    {
                        Type  = "AddDocuments",
                        Allow = "Allow"
                    }
                }
            };

            var json = JsonConvert.SerializeObject(createSessionData);

            var client     = new HttpAuthClient();
            var sessionUrl = "https://studioapi.bluebeam.com/publicapi/v1/sessions";
            var response   = await client.Post(sessionUrl, json, User, _userManager);

            var createSessionResponse = JsonConvert.DeserializeObject <CreateSessionResponse>(response);

            return(createSessionResponse);
        }
        public async Task <SharedLinkResponse> GetShareLink(string projectId, int fileProjectId)
        {
            var shareLink = new ShareLink()
            {
                ProjectFileID = fileProjectId
            };
            var json          = JsonConvert.SerializeObject(shareLink);
            var sharedLinkUrl =
                $"https://studioapi.bluebeam.com/publicapi/v1/projects/{projectId}/sharedlinks";
            var client   = new HttpAuthClient();
            var response = await client.Post(sharedLinkUrl, json, User, _userManager);

            var sharedLinkResponse = JsonConvert.DeserializeObject <SharedLinkResponse>(response);

            return(sharedLinkResponse);
        }
        public async Task <IActionResult> Index(FinishFormModel formModel)
        {
            Console.WriteLine("File Session Id: " + formModel.FileSessionId);

            // Set Status to Finializing
            var sessionResponse = SetSessionStatus(formModel.SessionId, "Finializing");

            // Initiate Snapshot
            var client   = new HttpAuthClient();
            var response = await StartSnapshot(formModel.SessionId, formModel.FileSessionId);

            var snapshotResponse = await WaitForSnapshotResponse(formModel.SessionId, formModel.FileSessionId);

            // Download Snapshot
            var snapshotStream = await DownloadSnapshot(snapshotResponse.DownloadURL);

            Console.WriteLine("Download URL: " + snapshotResponse.DownloadURL);

            // Delete Session
            response = await DeleteSession(formModel.SessionId);

            // Start Checkin
            var projectFilesResponse = await CheckinProjectFile(formModel.ProjectId, formModel.FileProjectId);

            var projectsHelper = new ProjectsHelper();
            var awsStrResponse = await projectsHelper.UploadToAWS(projectFilesResponse, snapshotStream);

            Console.WriteLine("AWS Response: " + awsStrResponse);


            // Confirm Checkin
            response = await ConfirmCheckin(formModel.ProjectId, formModel.FileProjectId);

            var flattenResponse = await StartFlattenJob(formModel.ProjectId, formModel.FileProjectId);

            // Get Shared Link
            var sharedLinkResponse = await GetShareLink(formModel.ProjectId, formModel.FileProjectId);

            var model = new FinishModel()
            {
                ProjectLink = sharedLinkResponse.ShareLink
            };

            return(View(model));
        }
        public async Task <SessionResponse> SetSessionStatus(string sessionId, string status)
        {
            var session = new { Status = status };
            var json    = JsonConvert.SerializeObject(session, new JsonSerializerSettings()
            {
                NullValueHandling = NullValueHandling.Ignore
            });

            Console.WriteLine("Session:  " + json);

            var statusUrl = $"https://studioapi.bluebeam.com/publicapi/v1/sessions/{sessionId}";
            var client    = new HttpAuthClient();
            var response  = await client.Put(statusUrl, json, User, _userManager);

            var sessionResponse = JsonConvert.DeserializeObject <SessionResponse>(response);

            return(sessionResponse);
        }
        public async Task <CheckoutToSessionResponse> CheckoutToSession(string projectId, int projectFileId, string sessionId)
        {
            var checkoutToSession = new CheckoutToSession()
            {
                SessionID = sessionId
            };

            var json = JsonConvert.SerializeObject(checkoutToSession);
            var checkoutSessionUrl = $"https://studioapi.bluebeam.com/publicapi/v1/projects/{projectId}/files/{projectFileId}/checkout-to-session";
            var client             = new HttpAuthClient();
            var response           = await client.Post(checkoutSessionUrl, json, User, _userManager);

            Console.WriteLine("Checkout To Session: " + response);

            var checkoutResponse = JsonConvert.DeserializeObject <CheckoutToSessionResponse>(response);

            return(checkoutResponse);
        }
        public async Task <ProjectFilesResponse> StartUpload(string projectId, string filename)
        {
            var projectFile = new ProjectFilesRequest
            {
                Name           = filename,
                ParentFolderId = 0
            };

            var json = JsonConvert.SerializeObject(projectFile);

            Console.WriteLine("Start Upload Request: " + json);

            // Upload file to project
            var client   = new HttpAuthClient();
            var startUrl = string.Format($"https://studioapi.bluebeam.com/publicapi/v1/projects/{projectId}/files");
            var response = await client.Post(startUrl, json, User, _userManager);

            var projectFilesResponse = JsonConvert.DeserializeObject <ProjectFilesResponse>(response);

            return(projectFilesResponse);
        }
Exemple #13
0
        public async Task <IActionResult> Index()
        {
            var user = await _userManager.GetUserAsync(User);

            var username = user.UserName;

            System.Console.WriteLine("User Name: " + username);
            ViewData["UserName"] = username;

            var client   = new HttpAuthClient();
            var response = await client.Get("https://studioapi.bluebeam.com/publicapi/v1/projects", User, _userManager);

            var jsonResult = JsonConvert.DeserializeObject <ProjectResponse>(response);

            System.Console.WriteLine(jsonResult);

            var studioUser = new UserModel();

            studioUser.UserName = username;
            studioUser.Projects = jsonResult.Projects;

            return(View(studioUser));
        }
        public async Task <JobFlattenResponse> StartFlattenJob(string projectId, int fileProjectId)
        {
            var job = new JobFlatten()
            {
                Recoverable = true,
                PageRange   = "1",
                Options     = new JobFlattenOptions()
                {
                    Image             = true,
                    Ellipse           = true,
                    Stamp             = true,
                    Snapshot          = true,
                    TextAndCallout    = true,
                    InkAndHighlighter = true,
                    LineAndDimension  = true,
                    MeasureArea       = true,
                    Polyline          = true,
                    PolygonAndCloud   = true,
                    Rectangle         = true,
                    TextMarkups       = true,
                    Group             = true,
                    FileAttachment    = true,
                    Flags             = true,
                    Notes             = true,
                    FormFields        = true
                }
            };
            var json       = JsonConvert.SerializeObject(job);
            var flattenUrl =
                $"https://studioapi.bluebeam.com/publicapi/v1/projects/{projectId}/files/{fileProjectId}/jobs/flatten";
            var client   = new HttpAuthClient();
            var response = await client.Post(flattenUrl, json, User, _userManager);

            var flattenResponse = JsonConvert.DeserializeObject <JobFlattenResponse>(response);

            return(flattenResponse);
        }