예제 #1
0
        public void CreatePackage(HttpContextBase context)
        {
            var request = context.Request;

            // Get the api key from the header
            var apiKey = request.Headers[ApiKeyHeader];

            // Get the package from the request body
            // ReSharper disable once PossibleNullReferenceException
            var stream = request.Files.Count > 0
                ? request.Files[0].InputStream
                : request.InputStream;

            // Copy the package to a temporary file
            var temporaryFile = Path.GetTempFileName();

            using (var temporaryFileStream = File.Open(temporaryFile, FileMode.OpenOrCreate, FileAccess.ReadWrite))
            {
                stream.CopyTo(temporaryFileStream);
            }

            var package = new OptimizedZipPackage(temporaryFile);

            // Make sure the user can access this package
            if (Authenticate(context, apiKey, package.Id))
            {
                try
                {
                    _serverRepository.AddPackage(package);

                    WriteStatus(context, HttpStatusCode.Created, "");
                }
                catch (InvalidOperationException ex)
                {
                    WriteStatus(context, HttpStatusCode.InternalServerError, ex.Message);
                }
            }

            package = null;
            try
            {
                File.Delete(temporaryFile);
            }
            catch (Exception)
            {
                WriteStatus(context, HttpStatusCode.InternalServerError, "Could not remove temporary upload file.");
            }
        }
        public void CreatePackage(HttpContextBase context)
        {
            var request = context.Request;

            // Get the api key from the header
            string apiKey = request.Headers[ApiKeyHeader];

            // Get the package from the request body
            Stream stream = request.Files.Count > 0 ? request.Files[0].InputStream : request.InputStream;

            var package = new ZipPackage(stream);

            // Make sure they can access this package
            if (Authenticate(context, apiKey, package.Id))
            {
                try
                {
                    _serverRepository.AddPackage(package);
                    WriteStatus(context, HttpStatusCode.Created, "");
                }
                catch (InvalidOperationException ex)
                {
                    WriteStatus(context, HttpStatusCode.InternalServerError, ex.Message);
                }
            }
        }
        public void CreatePackage(HttpContextBase context)
        {
            RouteData routeData = GetRouteData(context);
            var       request   = context.Request;

            // Get the api key from the header
            string apiKey = request.Headers[ApiKeyHeader];

            // Get the package from the request body
            Stream stream = request.Files.Count > 0 ? request.Files[0].InputStream : request.InputStream;

            var package = new ZipPackage(stream);

            // Make sure they can access this package
            Authenticate(context, apiKey, package.Id,
                         () => _serverRepository.AddPackage(package));

            WriteStatus(context, HttpStatusCode.Created, "");
        }