Exemplo n.º 1
0
 /// <summary>
 /// Creates the note.
 /// </summary>
 /// <param name="title">The title.</param>
 /// <param name="content">The content.</param>
 /// <returns></returns>
 public static Note CreateNote(Drop drop, string title, string content)
 {
     return ServiceProxy.Instance.CreateNote(drop, title, content);
 }
Exemplo n.º 2
0
 /// <summary>
 /// Finds the specified asset name.
 /// </summary>
 /// <param name="assetUrl">The asset URL.</param>
 /// <returns></returns>
 public static Asset Find(Drop drop, string name)
 {
     return ServiceProxy.Instance.FindAsset(drop, name);
 }
Exemplo n.º 3
0
        /// <summary>
        /// Maps the asset.
        /// </summary>
        /// <param name="asset">The asset.</param>
        /// <param name="drop">The drop.</param>
        /// <param name="node">The node.</param>
        protected void MapAsset(Asset asset, Drop drop, XmlNode node)
        {
            asset.CreatedAt = this.ExtractDateTime(this.ExtractInnerText(node, "created_at"));
            asset.Filesize = this.ExtractInt(node, "filesize");
            asset.Status = (Status)Enum.Parse(typeof(Status), this.ExtractInnerText(node,"status"), true);
            asset.Name = this.ExtractInnerText(node, "name");
            asset.ThumbnailUrl = this.ExtractInnerText(node, "thumbnail");
            asset.FileUrl = this.ExtractInnerText(node, "file");
            asset.ConvertedFileUrl = this.ExtractInnerText(node, "converted");
            asset.Drop = drop;

            this.MapTypedData(asset, node);
        }
Exemplo n.º 4
0
 /// <summary>
 /// Creates the link.
 /// </summary>
 /// <param name="title">The title.</param>
 /// <param name="description">The description.</param>
 /// <param name="url">The URL.</param>
 /// <returns></returns>
 public static Link CreateLink(Drop drop, string title, string description, string url)
 {
     return ServiceProxy.Instance.CreateLink(drop, title, description, url);
 }
Exemplo n.º 5
0
 /// <summary>
 /// Finds the assets.
 /// </summary>
 /// <param name="drop">The drop.</param>
 /// <param name="page">The page.</param>
 /// <returns></returns>
 public List<Asset> FindAssets(Drop drop, int page)
 {
     return this.ServiceAdapter.FindAssets(drop, page);
 }
Exemplo n.º 6
0
 /// <summary>
 /// Updates the drop.
 /// </summary>
 /// <param name="drop">The drop.</param>
 /// <returns></returns>
 public bool UpdateDrop(Drop drop, string password, string adminPassword, string premiumCode)
 {
     return this.ServiceAdapter.UpdateDrop(drop, password, adminPassword, premiumCode);
 }
Exemplo n.º 7
0
 /// <summary>
 /// Generates the authenticated drop URL.
 /// </summary>
 /// <param name="drop">The drop.</param>
 /// <returns></returns>
 public string GenerateAuthenticatedDropUrl(Drop drop)
 {
     string unixTime = GenerateUnixTimestamp().ToString();
     string signature = GenerateSignature(drop, unixTime);
     StringBuilder sb = new StringBuilder();
     sb.Append(this.BaseUrl);
     sb.Append(drop.Name);
     sb.Append(FROM_API);
     sb.Append("?&signature=");
     sb.Append(signature);
     sb.Append("&expires=");
     sb.Append(unixTime);
     return sb.ToString();
 }
Exemplo n.º 8
0
 /// <summary>
 /// Deletes the drop.
 /// </summary>
 /// <param name="drop">The drop.</param>
 /// <returns></returns>
 public bool DeleteDrop(Drop drop)
 {
     return this.ServiceAdapter.DeleteDrop(drop);
 }
Exemplo n.º 9
0
        /// <summary>
        /// Finds the asset.
        /// </summary>
        /// <param name="dropUrl">The drop name.</param>
        /// <param name="name">The asset name.</param>
        /// <returns></returns>
        public Asset FindAsset(Drop drop, string name)
        {
            if (drop == null)
                throw new ArgumentNullException("drop", "The given drop can't be null");

            if (name == null)
                throw new ArgumentNullException("name", "The given drop name can't be null");

            Asset a = null;

            string token = string.IsNullOrEmpty(drop.AdminToken) ? drop.GuestToken : drop.AdminToken;

            HttpWebRequest request = this.CreateGetRequest(this.CreateAssetUrl(drop.Name, name), token);

            CompleteRequest(request, delegate(HttpWebResponse response)
            {
                ReadResponse(response, delegate(XmlDocument doc)
                {
                    XmlNodeList nodes = doc.SelectNodes("/asset");
                    a = this.CreateAndMapAsset(drop, nodes[0]);
                });
            });

            return a;
        }
Exemplo n.º 10
0
        /// <summary>
        /// Finds the assets for a given drop.
        /// </summary>
        /// <param name="drop">The drop.</param>
        /// <param name="page">The page.</param>
        /// <returns></returns>
        public List<Asset> FindAssets(Drop drop, int page)
        {
            if (drop == null)
                throw new ArgumentNullException("drop", "The given drop can't be null");

            List<Asset> assets = new List<Asset>();

            string token = string.IsNullOrEmpty(drop.AdminToken) ? drop.GuestToken : drop.AdminToken;
            NameValueCollection parameters = new NameValueCollection();
            parameters["token"] = token;
            parameters["page"] = page.ToString();
            HttpWebRequest request = this.CreateGetRequest(this.CreateAssetUrl(drop.Name, string.Empty), parameters);
            CompleteRequest(request, delegate(HttpWebResponse response)
            {
                ReadResponse(response, delegate(XmlDocument doc)
                {
                    XmlNodeList nodes = doc.SelectNodes("/assets/asset");

                    foreach (XmlNode node in nodes)
                    {
                        Asset a = this.CreateAndMapAsset(drop, node);
                        assets.Add(a);
                    }
                });
            });

            return assets;
        }
Exemplo n.º 11
0
        /// <summary>
        /// Deletes the drop.
        /// </summary>
        /// <param name="drop">The drop.</param>
        /// <returns></returns>
        public bool DeleteDrop(Drop drop)
        {
            if (drop == null)
                throw new ArgumentNullException("drop", "The given drop can't be null");

            bool destroyed = false;

            NameValueCollection parameters = new NameValueCollection();

            string token = string.IsNullOrEmpty(drop.AdminToken) ? drop.GuestToken : drop.AdminToken;
            parameters.Add("token", token);

            HttpWebRequest request = this.CreateDeleteRequest(this.CreateDropUrl(drop.Name), parameters);
            CompleteRequest(request, (HttpWebResponse response) => { destroyed = true; });

            return destroyed;
        }
Exemplo n.º 12
0
        /// <summary>
        /// Creates the note.
        /// </summary>
        /// <param name="drop">The drop.</param>
        /// <param name="title">The title.</param>
        /// <param name="contents">The contents.</param>
        /// <returns></returns>
        public Note CreateNote(Drop drop, string title, string contents)
        {
            if (drop == null)
                throw new ArgumentNullException("drop", "The given drop can't be null");

            Note a = null;

            NameValueCollection parameters = new NameValueCollection();

            string token = string.IsNullOrEmpty(drop.AdminToken) ? drop.GuestToken : drop.AdminToken;
            parameters.Add("token", token);
            parameters.Add("title", title);
            parameters.Add("contents", contents);

            HttpWebRequest request = this.CreatePostRequest(this.CreateAssetUrl(drop.Name, string.Empty), parameters);
            CompleteRequest(request, delegate(HttpWebResponse response)
            {
                ReadResponse(response, delegate(XmlDocument doc)
                {
                    XmlNodeList nodes = doc.SelectNodes("/asset");
                    a = this.CreateAndMapAsset(drop, nodes[0]) as Note;
                });
            });

            return a;
        }
Exemplo n.º 13
0
        /// <summary>
        /// Maps the drop.
        /// </summary>
        /// <param name="d">The d.</param>
        /// <param name="doc">The doc.</param>
        /// <returns></returns>
        protected void MapDrop(Drop d, XmlDocument doc)
        {
            XmlNode node = doc.SelectSingleNode("drop");
            d.Name = this.ExtractInnerText(node, "name");
            d.AdminToken = this.ExtractInnerText(node, "admin_token");
            d.GuestToken = this.ExtractInnerText(node, "guest_token");
            d.CurrentBytes = this.ExtractInt(node, "current_bytes");
            d.MaxBytes = this.ExtractInt(node, "max_bytes");
            d.Voicemail = this.ExtractInnerText(node, "voicemail");
            d.Fax = this.ExtractInnerText(node, "fax");
            d.Conference = this.ExtractInnerText(node, "conference");
            d.Email = this.ExtractInnerText(node, "email");
            d.Rss = this.ExtractInnerText(node, "rss");

            d.GuestsCanAdd = this.ExtractBoolean(node, "guests_can_add");
            d.GuestsCanComment = this.ExtractBoolean(node, "guests_can_comment");
            d.GuestsCanDelete = this.ExtractBoolean(node, "guests_can_delete");

            d.ExpirationLength = this.ExtractExpirationLength(this.ExtractInnerText(node, "expiration_length"));
        }
Exemplo n.º 14
0
 /// <summary>
 /// Creates the link.
 /// </summary>
 /// <param name="drop">The drop.</param>
 /// <param name="title">The title.</param>
 /// <param name="description">The description.</param>
 /// <param name="url">The url.</param>
 /// <returns></returns>
 public Link CreateLink(Drop drop, string title, string description, string url)
 {
     return this.ServiceAdapter.CreateLink(drop, title, description, url);
 }
Exemplo n.º 15
0
        /// <summary>
        /// Updates the drop.
        /// </summary>
        /// <param name="drop">The drop.</param>
        /// <returns></returns>
        public bool UpdateDrop(Drop drop, string password, string adminPassword, string premiumCode)
        {
            if (drop == null)
                throw new ArgumentNullException("drop", "The given drop can't be null");

            bool updated = false;

            NameValueCollection parameters = new NameValueCollection();

            string token = string.IsNullOrEmpty(drop.AdminToken) ? drop.GuestToken : drop.AdminToken;
            parameters.Add("token", token);
            parameters.Add("guests_can_add", drop.GuestsCanAdd.ToString());
            parameters.Add("guests_can_comment", drop.GuestsCanComment.ToString());
            parameters.Add("guests_can_delete", drop.GuestsCanDelete.ToString());
            parameters.Add("expiration_length", this.MapExpirationLength(drop.ExpirationLength));
            parameters.Add("password", password);
            parameters.Add("admin_password", adminPassword);
            parameters.Add("premium_code", premiumCode);

            HttpWebRequest request = this.CreatePutRequest(this.CreateDropUrl(drop.Name), parameters);
            CompleteRequest(request, delegate(HttpWebResponse response)
            {
                ReadResponse(response, (XmlDocument doc) => this.MapDrop(drop, doc));
                updated = true;
            });

            return updated;
        }
Exemplo n.º 16
0
 /// <summary>
 /// Creates the note.
 /// </summary>
 /// <param name="drop">The drop.</param>
 /// <param name="title">The title.</param>
 /// <param name="contents">The content.</param>
 /// <returns></returns>
 public Note CreateNote(Drop drop, string title, string contents)
 {
     return this.ServiceAdapter.CreateNote(drop, title, contents);
 }
Exemplo n.º 17
0
 /// <summary>
 /// Creates the and map asset.
 /// </summary>
 /// <param name="d">The d.</param>
 /// <param name="node">The node.</param>
 /// <returns></returns>
 protected Asset CreateAndMapAsset(Drop d, XmlNode node)
 {
     string displayType = this.ExtractInnerText(node, "type");
     Asset a = this.CreateTypedAsset(displayType);
     this.MapAsset(a, d, node);
     return a;
 }
Exemplo n.º 18
0
 /// <summary>
 /// Finds the asset.
 /// </summary>
 /// <param name="drop">The drop.</param>
 /// <param name="assetUrl">The asset name.</param>
 /// <returns></returns>
 public Asset FindAsset(Drop drop, string assetUrl)
 {
     return this.ServiceAdapter.FindAsset(drop, assetUrl);
 }
Exemplo n.º 19
0
 /// <summary>
 /// Creates and maps a drop.
 /// </summary>
 /// <param name="doc">The doc.</param>
 /// <returns></returns>
 protected Drop CreateAndMapDrop(XmlDocument doc)
 {
     Drop d = new Drop();
     this.MapDrop(d, doc);
     return d;
 }
Exemplo n.º 20
0
 /// <summary>
 /// Generates the authenticated drop URL.
 /// </summary>
 /// <param name="drop">The drop.</param>
 /// <returns></returns>
 public string GenerateAuthenticatedDropUrl(Drop drop)
 {
     return this.ServiceAdapter.GenerateAuthenticatedDropUrl(drop);
 }
Exemplo n.º 21
0
        /// <summary>
        /// Adds the file.
        /// </summary>
        /// <param name="drop">The drop.</param>
        /// <param name="file">The file.</param>
        /// <returns></returns>
        public Asset AddFile(Drop drop, string file)
        {
            string requestUrl = this.UploadUrl;

            NameValueCollection parameters = new NameValueCollection();

            string token = string.IsNullOrEmpty(drop.AdminToken) ? drop.GuestToken : drop.AdminToken;
            parameters.Add("token", token);

            HttpWebRequest request = HttpWebRequest.Create(requestUrl) as HttpWebRequest;
            string boundary = "DROPIO_MIME_" + DateTime.Now.ToString("yyyyMMddhhmmss");

            request.Method = "POST";
            request.KeepAlive = true;
            request.Timeout = 30000000;
            request.ContentType = "multipart/form-data; boundary=" + boundary + "";
            request.Expect = "";

            parameters["api_key"] = this.ApiKey;
            parameters["format"] = "xml";
            parameters["drop_name"] = drop.Name;
            parameters["version"] = VERSION;

            StringBuilder sb = new StringBuilder();
            string fileName = Path.GetFileName(file);

            foreach (string key in parameters.AllKeys)
            {
                sb.Append("--" + boundary + "\r\n");
                sb.Append("Content-Disposition: form-data; name=\"" + key + "\"\r\n");
                sb.Append("\r\n");
                sb.Append(parameters[key] + "\r\n");
            }

            // File
            sb.Append("--" + boundary + "\r\n");
            sb.Append("Content-Disposition: form-data; name=\"file\"; filename=\"" + fileName + "\"\r\n");
            sb.Append("Content-Type: " + this.GetMimeType(file) + "\r\n");
            sb.Append("\r\n");

            UTF8Encoding encoding = new UTF8Encoding();

            byte[] postContents = encoding.GetBytes(sb.ToString());

            Stream stream = File.OpenRead(file);

            byte[] fileContents = new byte[stream.Length];
            stream.Read(fileContents, 0, fileContents.Length);
            stream.Close();

            byte[] postFooter = encoding.GetBytes("\r\n--" + boundary + "--\r\n");

            byte[] dataBuffer = new byte[postContents.Length + fileContents.Length + postFooter.Length];
            Buffer.BlockCopy(postContents, 0, dataBuffer, 0, postContents.Length);
            Buffer.BlockCopy(fileContents, 0, dataBuffer, postContents.Length, fileContents.Length);
            Buffer.BlockCopy(postFooter, 0, dataBuffer, postContents.Length + fileContents.Length, postFooter.Length);

            request.ContentLength = dataBuffer.Length;

            Stream resStream = request.GetRequestStream();

            int j = 1;
            int uploadBit = Math.Max(dataBuffer.Length / 100, 50 * 1024);
            int uploadSoFar = 0;

            for (int i = 0; i < dataBuffer.Length; i = i + uploadBit)
            {
                int toUpload = Math.Min(uploadBit, dataBuffer.Length - i);
                uploadSoFar += toUpload;
                resStream.Write(dataBuffer, i, toUpload);

                if ((OnUploadProgress != null) && ((j++) % 5 == 0 || uploadSoFar == dataBuffer.Length))
                {
                    OnUploadProgress(this, new UploadProgressEventArgs(i + toUpload, uploadSoFar == dataBuffer.Length));
                }

            }

            resStream.Close();

            Asset a = null;

            CompleteRequest(request, delegate(HttpWebResponse response)
            {
                ReadResponse(response, delegate(XmlDocument doc)
                {
                    XmlNodeList nodes = doc.SelectNodes("/asset");
                    a = this.CreateAndMapAsset(drop, nodes[0]) as Asset;
                });
            });

            return a;
        }
Exemplo n.º 22
0
 /// <summary>
 /// Adds the file to the drop..
 /// </summary>
 /// <param name="drop">The drop.</param>
 /// <param name="file">The file.</param>
 /// <returns></returns>
 public Asset AddFile(Drop drop, string file)
 {
     return this.ServiceAdapter.AddFile(drop, file);
 }
Exemplo n.º 23
0
        /// <summary>
        /// Generates the signature.
        /// </summary>
        /// <param name="drop">The drop.</param>
        /// <param name="expires">The expires.</param>
        /// <returns></returns>
        protected string GenerateSignature(Drop drop, string expires)
        {
            string token = string.IsNullOrEmpty(drop.AdminToken) ? drop.GuestToken : drop.AdminToken;
            string before = expires + "+" + token + "+" + drop.Name;

            SHA1 sha1 = new SHA1CryptoServiceProvider();
            byte[] input = Encoding.UTF8.GetBytes(before);
            byte[] result = sha1.ComputeHash(input);
            string hex = BitConverter.ToString(result);
            hex = hex.Replace("-", "");

            return hex;
        }