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)); }
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); }
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); } } } }
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; }