public HttpResponseMessage <long> ImportSpreadsheetData([FromUri(Name = "config")] long importConfigId, [FromUri(Name = "file")] string fileToken, [FromUri(Name = "filename")] string fileName, [FromUri(Name = "testrun")] bool testRun = false) { if (importConfigId <= 0) { throw new WebArgumentException("importConfigId"); } if (string.IsNullOrEmpty(fileToken)) { throw new WebArgumentException("fileToken"); } string tzName = null; if (Request.Headers.Contains("tz")) { tzName = Request.Headers.GetValues("tz").FirstOrDefault( ); } ImportSettings importSettings = new ImportSettings { ImportConfigId = importConfigId, FileToken = fileToken, FileName = fileName, TimeZoneName = tzName, TestRun = testRun }; long importRunId = _spreadsheetImporter.StartImport(importSettings); return(new HttpResponseMessage <long>(importRunId, HttpStatusCode.OK)); }
/// <summary> /// Process the request. /// </summary> /// <remarks> /// Assumes that user context has already been set. /// </remarks> /// <param name="request"></param> /// <param name="endpoint"></param> /// <returns></returns> public ConnectorResponse HandleRequest(ConnectorRequest request, ApiSpreadsheetEndpoint endpoint) { if (request == null) { throw new ArgumentNullException("request"); } if (endpoint == null) { throw new ArgumentNullException("endpoint"); } if (request.Verb != ConnectorVerb.Post) { return(new ConnectorResponse(HttpStatusCode.MethodNotAllowed)); } long importConfigId; using (new SecurityBypassContext( )) { if (endpoint.EndpointImportConfig == null) { throw new ConnectorConfigException("Endpoint does not point to an import configuration."); } importConfigId = endpoint.EndpointImportConfig.Id; } ImportSettings settings = new ImportSettings { FileToken = request.FileUploadToken, ImportConfigId = importConfigId, TestRun = false, TimeZoneName = null, // Imports via WebAPI treat values as UTC (but should they?) SuppressSecurityCheckOnImportConfig = true }; // Start import try { _spreadsheetImporter.StartImport(settings); return(new ConnectorResponse(HttpStatusCode.OK)); } catch { return(new ConnectorResponse(HttpStatusCode.InternalServerError)); } }