コード例 #1
0
        public Stream GetDownloadStream(File afile, long?start = null, long?end = null)
        {
            CustomDisposable <HttpWebResponse> ResponseGenerator(long instart, long inend, File file)
            {
                //var urldata = new YadGetResourceUrlRequest(HttpSettings, (YadWebAuth)Authent, file.FullPath)
                //    .MakeRequestAsync()
                //    .Result;

                var _ = new YaDCommonRequest(HttpSettings, (YadWebAuth)Authent)
                        .With(new YadGetResourceUrlPostModel(file.FullPath),
                              out YadResponseModel <ResourceUrlData, ResourceUrlParams> itemInfo)
                        .MakeRequestAsync().Result;

                var            url      = "https:" + itemInfo.Data.File;
                HttpWebRequest request  = new YadDownloadRequest(HttpSettings, (YadWebAuth)Authent, url, instart, inend);
                var            response = (HttpWebResponse)request.GetResponse();

                return(new CustomDisposable <HttpWebResponse>
                {
                    Value = response,
                    OnDispose = () => {}
                });
            }

            var stream = new DownloadStream(ResponseGenerator, afile, start, end);

            return(stream);
        }
コード例 #2
0
        private async Task <IEntry> MediaFolderInfo(string path)
        {
            var root = await MediaFolderRootInfo() as Folder;

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

            if (WebDavPath.PathEquals(path, YadMediaPath))
            {
                return(root);
            }

            string albumName = WebDavPath.Name(path);
            var    album     = root.Folders.FirstOrDefault(f => f.Name == albumName);

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

            _ = new YaDCommonRequest(HttpSettings, (YadWebAuth)Authent)
                .With(new YadFolderInfoPostModel(album.PublicLinks.First().Key, "/album"),
                      out YadResponseModel <YadFolderInfoRequestData, YadFolderInfoRequestParams> folderInfo)
                .MakeRequestAsync()
                .Result;

            var entry = folderInfo.Data.ToFolder(null, null, path, PublicBaseUrlDefault);

            return(entry);
        }
コード例 #3
0
        private HttpRequestMessage CreateUploadClientRequest(PushStreamContent content, File file)
        {
            var hash = (FileHashYad?)file.Hash;
            var _    = new YaDCommonRequest(HttpSettings, (YadWebAuth)Authent)
                       .With(new YadGetResourceUploadUrlPostModel(file.FullPath, file.OriginalSize,
                                                                  hash?.HashSha256.Value ?? string.Empty,
                                                                  hash?.HashMd5.Value ?? string.Empty),
                             out YadResponseModel <ResourceUploadUrlData, ResourceUploadUrlParams> itemInfo)
                       .MakeRequestAsync().Result;
            var url = itemInfo.Data.UploadUrl;

            var request = new HttpRequestMessage
            {
                RequestUri = new Uri(url),
                Method     = HttpMethod.Put
            };

            request.Headers.Add("Accept", "*/*");
            request.Headers.TryAddWithoutValidation("User-Agent", HttpSettings.UserAgent);

            request.Content = content;
            request.Content.Headers.ContentLength = file.OriginalSize;


            return(request);
        }
コード例 #4
0
        private HttpRequestMessage UploadClientRequest(PushStreamContent content, File file)
        {
            //var urldata =
            //    new YadGetResourceUploadUrlRequest(HttpSettings, (YadWebAuth)Authent, file.FullPath, file.OriginalSize)
            //        .MakeRequestAsync()
            //        .Result;
            //var url = urldata.Models[0].Data.UploadUrl;

            var _ = new YaDCommonRequest(HttpSettings, (YadWebAuth)Authent)
                    .With(new YadGetResourceUploadUrlPostModel(file.FullPath, file.OriginalSize),
                          out YadResponceModel <ResourceUploadUrlData, ResourceUploadUrlParams> itemInfo)
                    .MakeRequestAsync().Result;
            var url = itemInfo.Data.UploadUrl;

            var request = new HttpRequestMessage
            {
                RequestUri = new Uri(url),
                Method     = HttpMethod.Put
            };

            request.Headers.Add("Accept", "*/*");
            request.Headers.TryAddWithoutValidation("User-Agent", HttpSettings.UserAgent);

            request.Content = content;
            request.Content.Headers.ContentLength = file.OriginalSize;

            return(request);
        }
コード例 #5
0
        public async Task <AddFileResult> AddFile(string fileFullPath, IFileHash fileHash, FileSize fileSize, DateTime dateTime,
                                                  ConflictResolver?conflictResolver)
        {
            var hash = (FileHashYad?)fileHash;

            var _ = new YaDCommonRequest(HttpSettings, (YadWebAuth)Authent)
                    .With(new YadGetResourceUploadUrlPostModel(fileFullPath, fileSize, hash?.HashSha256.Value, hash?.HashMd5.Value),
                          out YadResponseModel <ResourceUploadUrlData, ResourceUploadUrlParams> itemInfo)
                    .MakeRequestAsync().Result;

            var res = new AddFileResult
            {
                Path    = fileFullPath,
                Success = itemInfo.Data.Status == "hardlinked"
            };

            return(await Task.FromResult(res));
        }