Ejemplo n.º 1
0
        /// <summary>
        /// Handles the actual writing of the submitted data to the file system.
        /// </summary>
        /// <param name="transfer">The processed transfer.</param>
        /// <param name="dataBlock">A data block that contains a chunk of data
        /// which should be written to the file system.</param>
        protected override void WriteBufferedDataBlockImpl(TTransfer transfer, BufferedDataBlock dataBlock)
        {
            TempStream stream = GetCachedTempData(transfer, dataBlock.Offset);

            byte[] data = dataBlock.Data;
            stream.Write(data, 0, data.Length);
        }
Ejemplo n.º 2
0
        private bool parseImage()

        {
            _image = ImageIO.read(_is);

            _width  = _image.getWidth();
            _height = _image.getHeight();

            TempStream  ts = new TempStream();
            WriteStream os = new WriteStream(ts);

            try {
                ImageIO.write(_image, "jpeg", os);
            } finally {
                os.close();
            }

            /*
             * os = Vfs.openWrite("file:/tmp/caucho/qa/test.jpg");
             * try {
             * ImageIO.write(_image, "jpeg", os);
             * } finally {
             * os.close();
             * }
             *
             * os = Vfs.openWrite("file:/tmp/caucho/qa/test.png");
             * try {
             * ImageIO.write(_image, "png", os);
             * } finally {
             * os.close();
             * }
             */

            return(parseImageJpeg(ts.openRead()));
        }
Ejemplo n.º 3
0
        public Stream GetFileStream(object id, int offset = 0)
        {
            var file = GetFileById(id);

            if (file is SharePointFileErrorEntry)
            {
                return(null);
            }
            var fileInfo = File.OpenBinaryDirect(clientContext, (string)id);

            clientContext.ExecuteQuery();

            var tempBuffer = TempStream.Create();

            using (var str = fileInfo.Stream)
            {
                if (str != null)
                {
                    str.CopyTo(tempBuffer);
                    tempBuffer.Flush();
                    tempBuffer.Seek(offset, SeekOrigin.Begin);
                }
            }

            return(tempBuffer);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Handles the actual writing of the submitted data to the file system.
        /// </summary>
        /// <param name="transfer">The processed transfer.</param>
        /// <param name="dataBlock">A data block that provides a data stream that
        /// is written to the file system.</param>
        protected override void WriteStreamedDataBlockImpl(TTransfer transfer, StreamedDataBlock dataBlock)
        {
            TempStream stream = GetCachedTempData(transfer, dataBlock.Offset);

            //when it comes to reading from the source stream, make sure no limits (block or whole file size)
            //are exceeded
            if (!transfer.Token.MaxResourceSize.HasValue)
            {
                if (!transfer.Token.MaxBlockSize.HasValue)
                {
                    //just write the stream - there is no limit
                    dataBlock.WriteTo(stream);
                }
                else
                {
                    //the limit is the maximum block size
                    dataBlock.WriteTo(stream, transfer.Token.MaxBlockSize.Value);
                }
            }
            else
            {
                //first we need to make sure we won't go over the max resource size
                long maxSize = transfer.Token.MaxResourceSize.Value - dataBlock.Offset;

                if (transfer.Token.MaxBlockSize.HasValue)
                {
                    //the other limit is the block size - take whatever is smaller
                    maxSize = Math.Min(maxSize, transfer.Token.MaxBlockSize.Value);
                }

                //the limit is the maximum block size
                dataBlock.WriteTo(stream, maxSize);
            }
        }
Ejemplo n.º 5
0
        public override string SavePrivate(string domain, string path, System.IO.Stream stream, DateTime expires)
        {
            using var storage = GetStorage();

            var objectKey = MakePath(domain, path);
            var buffered  = TempStream.GetBuffered(stream);

            var uploadObjectOptions = new UploadObjectOptions
            {
                PredefinedAcl = PredefinedObjectAcl.BucketOwnerFullControl
            };

            buffered.Position = 0;

            var uploaded = storage.UploadObject(_bucket, MakePath(domain, path), "application/octet-stream", buffered, uploadObjectOptions, null);

            uploaded.CacheControl       = string.Format("public, maxage={0}", (int)TimeSpan.FromDays(5).TotalSeconds);
            uploaded.ContentDisposition = "attachment";

            if (uploaded.Metadata == null)
            {
                uploaded.Metadata = new Dictionary <string, string>();
            }

            uploaded.Metadata["Expires"] = DateTime.UtcNow.Add(TimeSpan.FromDays(5)).ToString("R");
            uploaded.Metadata.Add("private-expire", expires.ToFileTimeUtc().ToString(CultureInfo.InvariantCulture));

            storage.UpdateObject(uploaded);

            using var mStream = new MemoryStream(Encoding.UTF8.GetBytes(_json ?? ""));
            var preSignedURL = FromServiceAccountData(mStream).Sign(RequestTemplate.FromBucket(_bucket).WithObjectName(MakePath(domain, path)), UrlSigner.Options.FromExpiration(expires));

            //TODO: CNAME!
            return(preSignedURL);
        }
Ejemplo n.º 6
0
        public Stream DownloadStream(BoxFile file, int offset = 0)
        {
            if (file == null)
            {
                throw new ArgumentNullException("file");
            }

            if (offset > 0 && file.Size.HasValue)
            {
                return(_boxClient.FilesManager.DownloadAsync(file.Id, startOffsetInBytes: offset, endOffsetInBytes: (int)file.Size - 1).Result);
            }

            var str = _boxClient.FilesManager.DownloadAsync(file.Id).Result;

            if (offset == 0)
            {
                return(str);
            }

            var tempBuffer = TempStream.Create();

            if (str != null)
            {
                str.CopyTo(tempBuffer);
                tempBuffer.Flush();
                tempBuffer.Seek(offset, SeekOrigin.Begin);

                str.Dispose();
            }

            return(tempBuffer);
        }
Ejemplo n.º 7
0
        public Stream GetFileStream(File file, long offset)
        {
            var fileToDownload = GetFileById(file.ID);

            if (fileToDownload == null)
            {
                throw new ArgumentNullException("file", FilesCommonResource.ErrorMassage_FileNotFound);
            }
            if (fileToDownload is ErrorEntry)
            {
                throw new Exception(((ErrorEntry)fileToDownload).Error);
            }

            var fileStream = fileToDownload.GetDataTransferAccessor().GetDownloadStream();

            if (fileStream != null && offset > 0)
            {
                if (!fileStream.CanSeek)
                {
                    var tempBuffer = TempStream.Create();

                    fileStream.CopyTo(tempBuffer);
                    tempBuffer.Flush();
                    tempBuffer.Seek(offset, SeekOrigin.Begin);

                    fileStream.Dispose();
                    return(tempBuffer);
                }

                fileStream.Seek(offset, SeekOrigin.Begin);
            }

            return(fileStream);
        }
Ejemplo n.º 8
0
 public ZipWriteOperator(TempStream tempStream, string targetFile)
 {
     file             = new FileStream(targetFile, FileMode.Create);
     gZipOutputStream = new GZipOutputStream(file);
     tarOutputStream  = new TarOutputStream(gZipOutputStream, Encoding.UTF8);
     TempStream       = tempStream;
 }
Ejemplo n.º 9
0
        private bool parseImageJpeg(ReadStream is)

        {
            int ch = @is.read();

            if (ch != 0xff)
            {
                return(false);
            }

            if (@is.read() != 0xd8)
            {
                return(false);
            }

            TempStream ts = new TempStream();

            WriteStream ws = new WriteStream(ts);

            ws.write(0xff);
            ws.write(0xd8);
            @is.writeToStream(ws);
            ws.close();

            // XXX: issues with _jpegHead vs ts.openReadAndSaveBuffer()
            _jpegHead = ts.getHead();
            @is.close();

            _is = new ReadStream();
            ts.openRead(_is);

            parseJPEG();

            return(true);
        }
        /**
         * Closes the output buffer.
         */
        public void close()
        {
            _state |= OutputModule.PHP_OUTPUT_HANDLER_END;

            if (!callCallback())
            {
                // all data that has and ever will be written has now been processed
                _state = 0;

                doFlush();
            }

            WriteStream @out = _out;

            _out = null;

            TempStream tempStream = _tempStream;

            _tempStream = null;

            try {
                if (@out != null)
                {
                    @out.close();
                }
            } catch (IOException e) {
                log.log(Level.FINER, e.ToString(), e);
            }

            if (tempStream != null)
            {
                tempStream.destroy();
            }
        }
        public override void RunJob(DistributedTask _, CancellationToken cancellationToken)
        {
            base.RunJob(_, cancellationToken);

            using var scope = ThirdPartyOperation.CreateScope();
            var globalStore      = scope.ServiceProvider.GetService <GlobalStore>();
            var filesLinkUtility = scope.ServiceProvider.GetService <FilesLinkUtility>();

            using var stream = TempStream.Create();
            using (var zip = new ZipOutputStream(stream, true)
            {
                CompressionLevel = Ionic.Zlib.CompressionLevel.Level3,
                AlternateEncodingUsage = ZipOption.AsNecessary,
                AlternateEncoding = Encoding.UTF8,
            })
            {
                (ThirdPartyOperation as FileDownloadOperation <string>).CompressToZip(zip, stream, scope);
                (DaoOperation as FileDownloadOperation <int>).CompressToZip(zip, stream, scope);
            }

            if (stream != null)
            {
                stream.Position = 0;
                const string fileName = FileConstant.DownloadTitle + ".zip";
                var          store    = globalStore.GetStore();
                store.Save(
                    FileConstant.StorageDomainTmp,
                    string.Format(@"{0}\{1}", ((IAccount)Thread.CurrentPrincipal.Identity).ID, fileName),
                    stream,
                    "application/zip",
                    "attachment; filename=\"" + fileName + "\"");
                Status = string.Format("{0}?{1}=bulk", filesLinkUtility.FileHandlerPath, FilesLinkUtility.Action);
            }
        }
Ejemplo n.º 12
0
 /// <summary>
 /// Performs housekeeping code once a transfer is paused. This implementation
 /// closes an open file stream on the temporary file.
 /// </summary>
 /// <param name="transfer">The paused transfer.</param>
 protected override void PauseTransferImpl(TTransfer transfer)
 {
     if (fileCache.ContainsKey(transfer.TransferId))
     {
         TempStream tempStream = GetCachedTempData(transfer, null);
         tempStream.Pause();
     }
 }
Ejemplo n.º 13
0
 public static byte[] IronRead(this IDataStore store, string domain, string path, int tryCount)
 {
     using (var ms = TempStream.Create())
     {
         IronReadToStream(store, domain, path, tryCount, ms);
         return(ms.GetStreamBuffer());
     }
 }
Ejemplo n.º 14
0
    private const int BufferSize = 2048;//NOTE: set to 2048 to fit in minimum tcp window

    public static Stream IronReadStream(this IDataStore store, string domain, string path, int tryCount)
    {
        var ms = TempStream.Create();

        IronReadToStream(store, domain, path, tryCount, ms);
        ms.Seek(0, SeekOrigin.Begin);
        return(ms);
    }
Ejemplo n.º 15
0
 public GoogleCloudStorage(
     TempStream tempStream,
     TenantManager tenantManager,
     PathUtils pathUtils,
     EmailValidationKeyProvider emailValidationKeyProvider,
     IHttpContextAccessor httpContextAccessor,
     IOptionsMonitor <ILog> options) : base(tempStream, tenantManager, pathUtils, emailValidationKeyProvider, httpContextAccessor, options)
 {
 }
Ejemplo n.º 16
0
        private List <XElement> BackupDatabase(int tenant, ConnectionStringSettings connectionString, IDataWriteOperator writer)
        {
            var xml     = new List <XElement>();
            var errors  = 0;
            var timeout = TimeSpan.FromSeconds(1);

            using (var dbHelper = new DbHelper(connectionString))
            {
                var tables = dbHelper.GetTables();
                for (int i = 0; i < tables.Count; i++)
                {
                    var table = tables[i];
                    OnProgressChanged(table, (int)(i / (double)tables.Count * 100));

                    if (processedTables.Contains(table, StringComparer.InvariantCultureIgnoreCase))
                    {
                        continue;
                    }

                    xml.Add(new XElement(table));
                    DataTable dataTable = null;
                    while (true)
                    {
                        try
                        {
                            dataTable = dbHelper.GetTable(table, tenant);
                            break;
                        }
                        catch
                        {
                            errors++;
                            if (20 < errors)
                            {
                                throw;
                            }
                            Thread.Sleep(timeout);
                        }
                    }
                    foreach (DataColumn c in dataTable.Columns)
                    {
                        if (c.DataType == typeof(DateTime))
                        {
                            c.DateTimeMode = DataSetDateTime.Unspecified;
                        }
                    }

                    using (var file = TempStream.Create())
                    {
                        dataTable.WriteXml(file, XmlWriteMode.WriteSchema);
                        writer.WriteEntry(string.Format("{0}\\{1}\\{2}", Name, connectionString.Name, table).ToLower(), file);
                    }

                    processedTables.Add(table);
                }
            }
            return(xml);
        }
Ejemplo n.º 17
0
        protected void CopyFileOnFileSystem2(ZipFileItem sourceFile, ZipFileItem targetFile)
        {
            using (TempStream tempStream = Configuration.TempStreamFactory.CreateTempStream()) {
                sourceFile.Node.FileEntry.Extract(tempStream);
                tempStream.Position = 0;

                var zip = NodeRepository.ZipFile;
                NodeRepository.PerformWriteAction(() => zip.AddEntry(targetFile.QualifiedIdentifier, tempStream));
            }
        }
Ejemplo n.º 18
0
 public GoogleDriveStorage(
     ConsumerFactory consumerFactory,
     FileUtility fileUtility,
     IOptionsMonitor <ILog> monitor,
     TempStream tempStream)
 {
     ConsumerFactory = consumerFactory;
     FileUtility     = fileUtility;
     Log             = monitor.Get("ASC.Files");
     TempStream      = tempStream;
 }
Ejemplo n.º 19
0
        public File <string> SaveFile(File <string> file, Stream fileStream)
        {
            if (fileStream == null)
            {
                throw new ArgumentNullException("fileStream");
            }
            ICloudFileSystemEntry entry = null;

            if (file.ID != null)
            {
                entry = ProviderInfo.Storage.GetFile(MakePath(file.ID), null);
            }
            else if (file.FolderID != null)
            {
                var folder = GetFolderById(file.FolderID);
                file.Title = GetAvailableTitle(file.Title, folder, IsExist);
                entry      = ProviderInfo.Storage.CreateFile(folder, file.Title);
            }

            if (entry == null)
            {
                return(null);
            }

            try
            {
                entry.GetDataTransferAccessor().Transfer(TempStream.GetBuffered(fileStream), nTransferDirection.nUpload);
            }
            catch (SharpBoxException e)
            {
                var webException = (WebException)e.InnerException;
                if (webException != null)
                {
                    var response = ((HttpWebResponse)webException.Response);
                    if (response != null)
                    {
                        if (response.StatusCode == HttpStatusCode.Unauthorized || response.StatusCode == HttpStatusCode.Forbidden)
                        {
                            throw new SecurityException(FilesCommonResource.ErrorMassage_SecurityException_Create);
                        }
                    }
                    throw;
                }
            }

            if (file.ID != null && !entry.Name.Equals(file.Title))
            {
                file.Title = GetAvailableTitle(file.Title, entry.Parent, IsExist);
                ProviderInfo.Storage.RenameFileSystemEntry(entry, file.Title);
            }

            return(ToFile(entry));
        }
        OutputBuffer(OutputBuffer next, Env env, Callable callback,
                     int chunkSize, bool erase)
        {
            _next = next;

            if (_next != null)
            {
                _level = _next._level + 1;
            }
            else
            {
                _level = 1;
            }

            _erase     = erase;
            _chunkSize = chunkSize;

            _env      = env;
            _callback = callback;

            _tempStream = new TempStream();
            _out        = new WriteStream(_tempStream);

            _out.setNewlineString("\n");

            string encoding = env.getOutputEncoding();

            if (encoding != null)
            {
                try {
                    _out.setEncoding(encoding);
                }
                catch (UnsupportedEncodingException e) {
                    if (log.isLoggable(Level.WARNING))
                    {
                        log.log(Level.WARNING, e.ToString(), e);
                    }
                    try {
                        _out.setEncoding("UTF-8");
                    }
                    catch (UnsupportedEncodingException e2) {
                        if (log.isLoggable(Level.WARNING))
                        {
                            log.log(Level.WARNING, e.ToString(), e2);
                        }
                    }
                }
            }

            _state       = OutputModule.PHP_OUTPUT_HANDLER_START;
            _haveFlushed = false;
        }
Ejemplo n.º 21
0
        public Uri Save(string domain, string path, Stream stream, string contentType,
                        string contentDisposition, ACL acl, string contentEncoding = null, int cacheDays = 5)
        {
            var buffered = TempStream.GetBuffered(stream);

            if (QuotaController != null)
            {
                QuotaController.QuotaUsedCheck(buffered.Length);
            }

            var mime = string.IsNullOrEmpty(contentType)
                        ? MimeMapping.GetMimeMapping(Path.GetFileName(path))
                        : contentType;

            using var storage = GetStorage();

            var uploadObjectOptions = new UploadObjectOptions
            {
                PredefinedAcl = acl == ACL.Auto ? GetDomainACL(domain) : GetGoogleCloudAcl(acl)
            };

            buffered.Position = 0;

            var uploaded = storage.UploadObject(_bucket, MakePath(domain, path), mime, buffered, uploadObjectOptions, null);

            uploaded.ContentEncoding = contentEncoding;
            uploaded.CacheControl    = string.Format("public, maxage={0}", (int)TimeSpan.FromDays(cacheDays).TotalSeconds);

            if (uploaded.Metadata == null)
            {
                uploaded.Metadata = new Dictionary <string, string>();
            }

            uploaded.Metadata["Expires"] = DateTime.UtcNow.Add(TimeSpan.FromDays(cacheDays)).ToString("R");

            if (!string.IsNullOrEmpty(contentDisposition))
            {
                uploaded.ContentDisposition = contentDisposition;
            }
            else if (mime == "application/octet-stream")
            {
                uploaded.ContentDisposition = "attachment";
            }

            storage.UpdateObject(uploaded);

            //           InvalidateCloudFront(MakePath(domain, path));

            QuotaUsedAdd(domain, buffered.Length);

            return(GetUri(domain, path));
        }
Ejemplo n.º 22
0
 public SharePointProviderInfo(
     IOptionsMonitor <ILog> options,
     IServiceProvider serviceProvider,
     TenantUtil tenantUtil,
     SharePointProviderInfoHelper sharePointProviderInfoHelper,
     TempStream tempStream)
 {
     Log             = options.CurrentValue;
     ServiceProvider = serviceProvider;
     TenantUtil      = tenantUtil;
     SharePointProviderInfoHelper = sharePointProviderInfoHelper;
     TempStream = tempStream;
 }
Ejemplo n.º 23
0
        public ILiteRepository GetRepository()
        {
            if (_tempStream == null)
            {
                _tempStream = new TempStream("abremir.postcrossing.engine.tests.litedb");
            }

            var liteRepository = new LiteRepository(_tempStream);

            RepositoryService.SetupIndexes(liteRepository.Database);

            return(liteRepository);
        }
Ejemplo n.º 24
0
        public ILiteRepository GetRepository()
        {
            if (_tempStream is null)
            {
                _tempStream = new TempStream("abremir.AllMyBricks.Data.Tests.litedb");
            }

            var liteRepository = new LiteRepository(_tempStream);

            RepositoryService.RunMigrationsAndSetupIndexes(liteRepository.Database);

            return(liteRepository);
        }
Ejemplo n.º 25
0
 public RackspaceCloudStorage(
     TempPath tempPath,
     TempStream tempStream,
     TenantManager tenantManager,
     PathUtils pathUtils,
     EmailValidationKeyProvider emailValidationKeyProvider,
     IHttpContextAccessor httpContextAccessor,
     IOptionsMonitor <ILog> options)
     : base(tempStream, tenantManager, pathUtils, emailValidationKeyProvider, httpContextAccessor, options)
 {
     _logger  = options.Get("ASC.Data.Storage.Rackspace.RackspaceCloudStorage");
     TempPath = tempPath;
 }
Ejemplo n.º 26
0
        public override Uri Save(string domain, string path, Stream stream)
        {
            Log.Debug("Save " + path);
            var buffered = TempStream.GetBuffered(stream);

            if (QuotaController != null)
            {
                QuotaController.QuotaUsedCheck(buffered.Length);
            }

            if (path == null)
            {
                throw new ArgumentNullException("path");
            }
            if (buffered == null)
            {
                throw new ArgumentNullException("stream");
            }

            //Try seek to start
            if (buffered.CanSeek)
            {
                buffered.Seek(0, SeekOrigin.Begin);
            }
            //Lookup domain
            var target = GetTarget(domain, path);

            CreateDirectory(target);
            //Copy stream

            //optimaze disk file copy
            long fslen;

            if (buffered is FileStream fileStream)
            {
                File.Copy(fileStream.Name, target, true);
                fslen = fileStream.Length;
            }
            else
            {
                using var fs = File.Open(target, FileMode.Create);
                buffered.CopyTo(fs);
                fslen = fs.Length;
            }

            QuotaUsedAdd(domain, fslen);

            Crypt.EncryptFile(target);

            return(GetUri(domain, path));
        }
Ejemplo n.º 27
0
        public static void Site(string URL, long Size, string Word, long Amount)
        {
            CJ = new CookieContainer();
            HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(new Uri(URL));

            Request.ContentType     = "application/x-www-form-urlencoded";
            Request.Referer         = URL;
            Request.UserAgent       = GenerateRandomUserAgent();
            Request.CookieContainer = CJ;

            HttpWebResponse Response = (HttpWebResponse)Request.GetResponse();

            Thread.Sleep(1 * 1000);

            List <HttpWebRequest> ConnectionList = new List <HttpWebRequest>();

            Stream TempStream;
            Random RandomLength = new Random(DateTime.Now.Millisecond);

            for (int i = 0; i < Amount; i++)
            {
                HttpWebRequest TempRequest = (HttpWebRequest)WebRequest.Create(new Uri(URL));

                TempRequest.ContentType     = "application/x-www-form-urlencoded";
                TempRequest.UserAgent       = GenerateRandomUserAgent();
                TempRequest.CookieContainer = CJ;

                TempRequest.Method        = WebRequestMethods.Http.Post;
                TempRequest.KeepAlive     = true;
                TempRequest.ContentLength = RandomLength.Next(20000000, 100000000);
                TempRequest.ServicePoint.ConnectionLimit = 10000;

                ConnectionList.Add(TempRequest);
            }

            while (true)
            {
                for (int i = 0; i < Amount; i++)
                {
                    for (long j = 0; j < Size; j++)
                    {
                        TempStream = ConnectionList[i].GetRequestStream();
                        TempStream.Write(Encoding.Default.GetBytes(Word), 0, Encoding.Default.GetBytes(Word).Length);

                        Console.WriteLine((enUS.get(Global.Messages.WEB_SENDED)).Replace("[word]", Word).Replace("[url]", URL).Replace("[size]", "" + Size));
                    }
                }

                GC.Collect();
            }
        }
Ejemplo n.º 28
0
 public DiscDataStore(
     TempStream tempStream,
     TenantManager tenantManager,
     PathUtils pathUtils,
     EmailValidationKeyProvider emailValidationKeyProvider,
     IHttpContextAccessor httpContextAccessor,
     IOptionsMonitor <ILog> options,
     EncryptionSettingsHelper encryptionSettingsHelper,
     EncryptionFactory encryptionFactory)
     : base(tempStream, tenantManager, pathUtils, emailValidationKeyProvider, httpContextAccessor, options)
 {
     EncryptionSettingsHelper = encryptionSettingsHelper;
     EncryptionFactory        = encryptionFactory;
 }
Ejemplo n.º 29
0
    private const int BufferSize = 2048; //NOTE: set to 2048 to fit in minimum tcp window

    public static Stream GetBuffered(this Stream srcStream)
    {
        if (srcStream == null)
        {
            throw new ArgumentNullException("srcStream");
        }
        if (!srcStream.CanSeek || srcStream.CanTimeout)
        {
            //Buffer it
            var memStream = TempStream.Create();
            srcStream.StreamCopyTo(memStream);
            memStream.Position = 0;
            return(memStream);
        }
        return(srcStream);
    }
Ejemplo n.º 30
0
        public Stream DownloadStream(DriveFile file, int offset = 0)
        {
            if (file == null)
            {
                throw new ArgumentNullException("file");
            }

            var downloadArg = string.Format("{0}?alt=media", file.Id);

            var ext = MimeMapping.GetExtention(file.MimeType);

            if (GoogleLoginProvider.GoogleDriveExt.Contains(ext))
            {
                var internalExt      = FileUtility.GetGoogleDownloadableExtension(ext);
                var requiredMimeType = MimeMapping.GetMimeMapping(internalExt);

                downloadArg = string.Format("{0}/export?mimeType={1}",
                                            file.Id,
                                            HttpUtility.UrlEncode(requiredMimeType));
            }

            var request = WebRequest.Create(GoogleLoginProvider.GoogleUrlFile + downloadArg);

            request.Method = "GET";
            request.Headers.Add("Authorization", "Bearer " + AccessToken);

            var response = (HttpWebResponse)request.GetResponse();

            if (offset == 0 && file.Size.HasValue && file.Size > 0)
            {
                return(new ResponseStream(response.GetResponseStream(), file.Size.Value));
            }

            var tempBuffer = TempStream.Create();

            using (var str = response.GetResponseStream())
            {
                if (str != null)
                {
                    str.CopyTo(tempBuffer);
                    tempBuffer.Flush();
                    tempBuffer.Seek(offset, SeekOrigin.Begin);
                }
            }

            return(tempBuffer);
        }