Esempio n. 1
0
 private static void DownloadGoogleDriveFileFromUrl(string fileUrl)
 {
     using (GoogleDriveDownloader downloader = new GoogleDriveDownloader())
     {
         downloader.DownloadFile(fileUrl, serializationPath);
     }
 }
        /// <summary>
        /// Starts downloading process.
        /// </summary>
        /// <param name="targetDirectory">A directory where downloaded artifacts shall be stored.</param>
        /// <param name="authenticationControl">A control with filled authentication information.</param>
        /// <param name="selectedCapabilities">A list of capabilities that shall be downloaded.</param>
        /// <param name="cancellationToken">A token that allows to cancel an operation.</param>
        /// <returns>Downloaded data as protocol-specific object that can be analyzed and shown
        ///         via reflection.</returns>
        /// <exception cref="InternalErrorException">Incorrect authentication control for Google Drive protocol.
        /// </exception>
        /// <exception cref="OperationCanceledException">The token has had cancellation requested.</exception>
        public override async Task <object> Execute(
            string targetDirectory,
            Control authenticationControl,
            IList <string> selectedCapabilities,
            CancellationToken cancellationToken)
        {
            var downloader = new GoogleDriveDownloader(cancellationToken);

            this.AddDownloader(downloader);

            var consentScreenControl = authenticationControl as ConsentScreenControl;

            if (consentScreenControl == null)
            {
                throw new InternalErrorException("Incorrect authentication control for Google Drive protocol.");
            }

            var token    = consentScreenControl.RefreshToken;
            var settings = new DriveDownloaderSettings
            {
                RefreshToken    = token,
                TargetDirectory = targetDirectory + Path.DirectorySeparatorChar + "GoogleDrive",
                DoDownloadFiles = selectedCapabilities.Contains("Files from Google Drive")
            };

            this.Settings.SetProtocolSettings(this.GetType().FullName, settings);

            return(await downloader.Download(settings));
        }
Esempio n. 3
0
        public async Task <IHttpActionResult> ConfigureFromGoogleDrive(string documentId)
        {
            var downloader = new GoogleDriveDownloader();

            var content = await downloader.LastNedSpreadsheetFraGoogleDrive(documentId);

            _excelImport.LesInn(content);

            ClearCaching();

            return(Ok());
        }
        public override Control AuthenticationControl(string authenticationMethod)
        {
            switch (authenticationMethod)
            {
            case "Google Drive consent screen":
                return(new ConsentScreenControl(
                           token => GoogleDriveDownloader.AuthenticateManually(token, this.Log)));
            }

            Debug.Assert(false, "Unknown authentication method passed to protocol");
            return(null);
        }
        public async void ImportFrom_GoogleDocs()
        {
            var excelImport = RestApiApplication.CreateContainer().Resolve <Repository.Import.ExcelImport>();

            var downloader = new GoogleDriveDownloader();

            var documentId = Environment.GetEnvironmentVariable("BBR_GoogleDocId", EnvironmentVariableTarget.User);

            if (string.IsNullOrEmpty(documentId))
            {
                Assert.Fail("Cannot import if documentId is not set in environment variable");
            }

            var content = await downloader.LastNedSpreadsheetFraGoogleDrive(documentId);

            excelImport.LesInn(content);
        }
Esempio n. 6
0
        public async Task <HttpResponseMessage> ConvertMapToExcel(string documentId)
        {
            var downloader = new GoogleDriveDownloader();

            var content = await downloader.LastNedMapFraGoogleDrive(documentId);

            var poster = _kmlToExcelPoster.LesInn(content);

            _excelWriter.SkrivPoster(poster);
            var bytes = _excelWriter.GetAsByteArray();

            var result = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StreamContent(new MemoryStream(bytes))
            };

            result.Content.Headers.ContentType        = new MediaTypeHeaderValue("application/vnd.ms-excel");
            result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
            {
                FileName = "kml_poster.xlsx"
            };

            return(result);
        }
    public async Task SyncWithDropBox()
    {
        DropBoxDownloader d = new DropBoxDownloader();
        GoogleDriveDownloader g = new GoogleDriveDownloader();
        IEnumerable<DropboxRestAPI.Models.Core.MetaData> dropbox = (IEnumerable<DropboxRestAPI.Models.Core.MetaData>)d.Download();
        IEnumerable<Google.Apis.Drive.v2.Data.File> googledrive = (IEnumerable<Google.Apis.Drive.v2.Data.File>)g.Download();

        foreach (var dfile in dropbox)
        {
            bool found = false;
            string name = "";
            foreach (var gfile in googledrive)
            {
                name = gfile.Title;
                if (gfile.Title.Equals(dfile.Name))
                {
                    found = true;
                }
            }
            if (!found)
            {
                List<DropboxRestAPI.Models.Core.MetaData> list = new List<DropboxRestAPI.Models.Core.MetaData>();

                var rootFolder = await d.client.Core.Metadata.MetadataAsync("/", list: true);

                var file = rootFolder.contents.FirstOrDefault(x => x.Name.Contains(name));

                var tempFile = Path.GetTempFileName();
                using (var fileStream = System.IO.File.OpenWrite(tempFile))
                {
                    await d.client.Core.Metadata.FilesAsync(file.path, fileStream);
                }

                MemoryStream mem = new MemoryStream();
                using (var fileStream = System.IO.File.OpenRead(tempFile))
                {
                    fileStream.CopyTo(mem);
                    await g.Upload(file.Name, file.path);
                }
            }
        }
    }
Esempio n. 8
0
        public async Task <ActionResult> MakeEsignatureJob(IEnumerable <string> mottakere, int dokID, bool selfSign, string fornavn = null, string etternavn = null, HttpPostedFileBase arbeidsavtale = null, bool sendConfirmation = false)
        {
            if (Session["ansatt"] != null)
            {
                ViewBag.AnsattNr = GetAnsattFromSession().AnsattNr;
            }
            else
            {
                TempData["statusCode"] = (int)Codes.Code.ERROR;
                TempData["errorMsg"]   = StringConstants.ERROR_GENERIC;
                return(RedirectToAction("Index", "Signeringsportal", null));
            }

            Imposter.ImpersonateRobot();
            var currentPersonnr = ""; // ta vare på personnr i tilfelle en feil oppstår

            try
            {
                // hvis serveren ikke klarer å laste ned dokumentet fra drive (feil med robotpassord el.),
                // bruke lokale kopier
                var    fileName = _dokumentNavn[dokID];
                byte[] docBytes;

                if (dokID == 0 && arbeidsavtale != null)
                {
                    if (arbeidsavtale.ContentType.Equals("application/pdf"))
                    {
                        MemoryStream target = new MemoryStream();
                        arbeidsavtale.InputStream.CopyTo(target);
                        docBytes = target.ToArray();
                    }
                    else
                    {
                        var msg = $"Feil: Hoveddokumentet '{arbeidsavtale.FileName}' var ikke i pdf-format.";
                        ViewBag.Response = new Response <bool>(false, msg, Codes.Code.ERROR);
                        return(View());
                    }
                }
                else
                {
                    var res = GoogleDriveDownloader.DownloadDocs(_avtaleURLs[dokID], false);
                    if (res.Success)
                    {
                        docBytes = res.Get();
                    }
                    else
                    {
                        ViewBag.Response = new Response <bool>(false, res.Message, res.Code);
                        return(View());
                    }
                }
                var documentToSign = new Document(fileName, StringConstants.SIGN_REQUEST, FileType.Pdf, docBytes);
                var signers        = new List <Signer>();
                var hjelperfiler   = new Dictionary <string, string>(); // hjelpefiler som skal skrives til disk senere

                // legg til mottakere
                foreach (var personnr in mottakere)
                {
                    if (personnr.Equals(HRMHelper.HRM_FLAG))
                    {
                        // bruker en ansatt, fødselsnummer skal hentes fra HRM
                        var personnrResponse = HRMHelper.FinnPersonnrForAnsatt(GetAnsattFromSession());
                        if (personnrResponse.Success)
                        {
                            signers.Add(new Signer(new PersonalIdentificationNumber(personnrResponse.Get()), new NotificationsUsingLookup()
                            {
                                SmsIfAvailable = true
                            }));
                            continue;
                        }
                        else
                        {
                            ViewBag.Response = new Response <bool>(false, personnrResponse.Message, Codes.Code.ERROR);
                            return(View());
                        }
                    }

                    else if (fornavn != null && etternavn != null)
                    {
                        currentPersonnr = personnr;
                        signers.Add(new Signer(new PersonalIdentificationNumber(personnr), new NotificationsUsingLookup()
                        {
                            SmsIfAvailable = true
                        }));
                        hjelperfiler.Add(HelperFile.EMPLOYEE_NAME, $"{etternavn} {fornavn}");
                        hjelperfiler.Add(HelperFile.SSIN, personnr);

                        // innlogget bruker settes automatisk som nærmeste leder/saksbehandler i WebSak
                        hjelperfiler.Add(HelperFile.MANAGER_AD, GetUsername()); // hvis fødselsnummeret ikke er i HRM antas det at det er nærmeste leder som lastet opp, og AD settes til innlogget bruker
                    }
                    else
                    {
                        ViewBag.Response = new Response <bool>(false, StringConstants.ERROR_MISSING_NAME, Codes.Code.ERROR);
                        return(View());
                    }
                }

                // hvis bruker skal motta varsel på e-post når dokumentet har blitt signert og arkivert i WebSak
                if (sendConfirmation)
                {
                    hjelperfiler.Add(HelperFile.ARCHIVE_CONFIRMATION, "true");
                }

                // finn leders fødselsnummer hvis leder også skal signere
                // leder SKAL ALLTID signere på arbeidskontrakt
                if (selfSign || dokID == 0)
                {
                    var lederInfoResponse = ADHelper.GetAnsattInfoForLeder(GetUsername());
                    if (lederInfoResponse.Success)
                    {
                        var personnrResponse = HRMHelper.FinnPersonnrForAnsatt(lederInfoResponse.Get());

                        if (personnrResponse.Success)
                        {
                            // setter onBehalfOf.other for å ikke havne i leders private postkasse
                            signers.Add(new Signer(new PersonalIdentificationNumber(personnrResponse.Get()), new Notifications(new Email(lederInfoResponse.Get().AnsattEPost)))
                            {
                                OnBehalfOf = OnBehalfOf.Other
                            });
                        }
                        else
                        {
                            ViewBag.Response = new Response <bool>(false, personnrResponse.Message, Codes.Code.ERROR);
                            return(View());
                        }
                    }
                    else
                    {
                        ViewBag.Response = new Response <bool>(false, lederInfoResponse.Message, Codes.Code.ERROR);
                        return(View());
                    }
                }


                // lag en unik kø-id for dette signeringsoppdraget
                var queueID      = GetUsername() + DateTime.Now.ToShortDateString() + "." + DateTime.Now.ToLongTimeString();
                var portalClient = new CustomPortalClient(queueID, fileName);

                hjelperfiler.Add(HelperFile.SIGNATURE_STATUS, "false"); // hjelpefil som sier noe om status på signeringsoppdrag (false er usignert)
                // ta vare på referansen til dette signeringsoppdraget for å kunne polle senere
                hjelperfiler.Add(HelperFile.REFERENCE, portalClient.GetReference());

                // lagre filene til disk mens vi venter på signaturen
                var response = SaveFilesToDisk(new NotatFil(docBytes, fileName), null, fileName, $"{fileName}{Datotype.Signaturdato}", 1, false, hjelperfiler);

                if (response.Success)
                {
                    var portalJob = new Job(documentToSign, signers, queueID)
                    {
                        IdentifierInSignedDocuments = IdentifierInSignedDocuments.Name
                    };                                                                                                                            // fødselsnummer skal ikke vises i det signerte dokumentet

#if !DEBUG
                    await portalClient.Create(portalJob);
#endif
                    var responseString = string.Format(StringConstants.ESIGN_SUCCESS, signers.Count() + (signers.Count() == 1 ? " mottaker" : " mottakere"));
                    ViewBag.Response = new Response <bool>(true, responseString, Codes.Code.OK);
                }
                else
                {
                    ViewBag.Response = new Response <bool>(false, response.Message, Codes.Code.ERROR);
                }
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("The Pattern constraint failed"))
                {
                    ViewBag.Response = new Response <bool>(false, string.Format(StringConstants.INVALID_SSN, currentPersonnr), Codes.Code.ERROR);
                }
                else
                {
                    ViewBag.Response = new Response <bool>(false, ex.Message, Codes.Code.ERROR);
                }
            }
            Imposter.UndoImpersonation();

            return(View());
        }
 public BackgroundSync(TimeSpan interval, TimeSpan timeout, ICloudDrive g) : base("Background Synchronization", interval, timeout)
 {
     this.g = (GoogleDriveDownloader)g;
 }