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));
        }
Exemplo n.º 2
0
        /// <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));
            }
        }