Represents a file for uploading to cloudinary
        /// <summary>
        /// Uploads a file to cloudinary.
        /// </summary>
        /// <param name="resourceType">Resource type ("image", "raw", "video", "auto")</param>
        /// <param name="parameters">Upload parameters.</param>
        /// <param name="fileDescription">File description.</param>
        public RawUploadResult Upload(string resourceType, IDictionary<string, object> parameters, FileDescription fileDescription)
        {
            string uri = m_api.ApiUrlV.Action("upload").ResourceType(resourceType).BuildUrl();

            ResetInternalFileDescription(fileDescription);

            if (parameters == null)
                parameters = new SortedDictionary<string, object>();

            if (!(parameters is SortedDictionary<string, object>))
                parameters = new SortedDictionary<string, object>(parameters);

            using (HttpWebResponse response = m_api.Call(HttpMethod.POST, uri, (SortedDictionary<string, object>)parameters, fileDescription))
            {
                return RawUploadResult.Parse(response);
            }
        }
 private static void ResetInternalFileDescription(FileDescription file, int bufferSize = Int32.MaxValue)
 {
     file.BufferLength = bufferSize;
     file.EOF = false;
     file.BytesSent = 0;
 }
        public void TestUploadCustom()
        {
            var file = new FileDescription(m_testVideoPath);

            var uploadResult = m_cloudinary.Upload("video", null, file);

            Assert.NotNull(uploadResult);
            Assert.AreEqual("video", uploadResult.ResourceType);
        }
        public void TestListResourcesByTag()
        {
            // should allow listing resources by tag

            var file = new FileDescription(m_testImagePath);
            var tag = "teslistresourcesbytag1";
            m_cloudinary.DeleteResourcesByTag(tag);
            var uploadParams = new ImageUploadParams()
            {
                File = file,
                Tags = tag + ",beauty"
            };

            m_cloudinary.Upload(uploadParams);

            uploadParams = new ImageUploadParams()
            {
                File = file,
                Tags = tag
            };

            m_cloudinary.Upload(uploadParams);
            var result = m_cloudinary.ListResourcesByTag(tag);
            Assert.AreEqual(2, result.Resources.Count());
            m_cloudinary.DeleteResourcesByTag(tag);
        }
        public void TestListResourcesByTag()
        {
            // should allow listing resources by tag

            FileDescription file = new FileDescription(m_testImagePath);

            ImageUploadParams uploadParams = new ImageUploadParams()
            {
                File = file,
                Tags = "teslistresourcesbytag1,beauty"
            };

            m_cloudinary.Upload(uploadParams);

            uploadParams = new ImageUploadParams()
            {
                File = file,
                Tags = "teslistresourcesbytag1"
            };

            m_cloudinary.Upload(uploadParams);

            ListResourcesResult result = m_cloudinary.ListResourcesByTag("teslistresourcesbytag1", null);

            Assert.AreEqual(2, result.Resources.Count());
        }