/// <summary> /// Finds the comments. /// </summary> /// <param name="asset">The asset.</param> /// <returns></returns> public List<Comment> FindComments(Asset asset) { return this.ServiceAdapter.FindComments(asset); }
/// <summary> /// Creates the and map comment. /// </summary> /// <param name="asset">The asset.</param> /// <param name="node">The node.</param> /// <returns></returns> protected Comment CreateAndMapComment(Asset asset, XmlNode node) { Comment c = new Comment(); this.MapComment(asset, c, node); return c; }
/// <summary> /// Deletes the asset. /// </summary> /// <param name="asset">The asset.</param> /// <returns></returns> public bool DeleteAsset(Asset asset) { return this.ServiceAdapter.DeleteAsset(asset); }
/// <summary> /// Maps the comment. /// </summary> /// <param name="asset">The asset.</param> /// <param name="c">The c.</param> /// <param name="node">The node.</param> protected void MapComment(Asset asset, Comment c, XmlNode node) { c.CreatedAt = this.ExtractDateTime(this.ExtractInnerText(node, "created_at")); c.Contents = this.ExtractInnerText(node, "contents"); c.Id = this.ExtractInt(node, "id"); c.Asset = asset; }
/// <summary> /// Updates the asset. /// </summary> /// <param name="asset">The asset.</param> /// <returns></returns> public bool UpdateAsset(Asset asset) { if (asset == null) throw new ArgumentNullException("asset", "The given asset can't be null"); bool updated = false; Drop drop = asset.Drop; NameValueCollection parameters = new NameValueCollection(); string token = string.IsNullOrEmpty(drop.AdminToken) ? drop.GuestToken : drop.AdminToken; parameters.Add("token", token); parameters.Add("name", asset.Name); this.AddTypedProperties(parameters, asset); HttpWebRequest request = this.CreatePutRequest(this.CreateAssetUrl(drop.Name, asset.Name), parameters); CompleteRequest(request, delegate(HttpWebResponse response) { ReadResponse(response, delegate(XmlDocument doc) { XmlNodeList nodes = doc.SelectNodes("/asset"); this.MapAsset(asset, drop, nodes[0]); updated = true; }); }); return updated; }
/// <summary> /// Sends to emails. /// </summary> /// <param name="asset">The asset.</param> /// <param name="emails">The emails.</param> /// <param name="message">The message.</param> public void SendToEmails(Asset asset, List<string> emails, string message) { this.ServiceAdapter.SendToEmails(asset, emails, message); }
/// <summary> /// Saves the asset. /// </summary> /// <param name="asset">The asset.</param> /// <returns></returns> public bool UpdateAsset(Asset asset) { return this.ServiceAdapter.UpdateAsset(asset); }
/// <summary> /// Finds the comments. /// </summary> /// <param name="asset">The asset.</param> /// <returns></returns> public List<Comment> FindComments(Asset asset) { if (asset == null) throw new ArgumentNullException("asset", "The given asset can't be null"); List<Comment> comments = new List<Comment>(); Drop drop = asset.Drop; string token = string.IsNullOrEmpty(drop.AdminToken) ? drop.GuestToken : drop.AdminToken; HttpWebRequest request = this.CreateGetRequest(this.CreateCommentUrl(drop.Name, asset.Name), token); CompleteRequest(request, delegate(HttpWebResponse response) { ReadResponse(response, delegate(XmlDocument doc) { XmlNodeList nodes = doc.SelectNodes("/comments/comment"); foreach (XmlNode node in nodes) { Comment c = this.CreateAndMapComment(asset, node); comments.Add(c); } }); }); return comments; }
/// <summary> /// Generates the authenticated asset URL. /// </summary> /// <param name="asset">The asset.</param> /// <returns></returns> public string GenerateAuthenticatedAssetUrl(Asset asset) { string unixTime = GenerateUnixTimestamp().ToString(); string signature = GenerateSignature(asset.Drop, unixTime); StringBuilder sb = new StringBuilder(); sb.Append(this.BaseUrl); sb.Append(asset.Drop.Name); sb.Append("/asset/"); sb.Append(asset.Name); sb.Append(FROM_API); sb.Append("?&signature="); sb.Append(signature); sb.Append("&expires="); sb.Append(unixTime); return sb.ToString(); }
/// <summary> /// Creates the comment. /// </summary> /// <param name="asset">The asset.</param> /// <param name="contents">The contents.</param> /// <returns></returns> public Comment CreateComment(Asset asset, string contents) { if (asset == null) throw new ArgumentNullException("asset", "The given asset can't be null"); Comment c = null; Drop drop = asset.Drop; NameValueCollection parameters = new NameValueCollection(); string token = string.IsNullOrEmpty(drop.AdminToken) ? drop.GuestToken : drop.AdminToken; parameters.Add("token", token); parameters.Add("contents", contents); HttpWebRequest request = this.CreatePostRequest(this.CreateCommentUrl(drop.Name, asset.Name), parameters); CompleteRequest(request, delegate(HttpWebResponse response) { ReadResponse(response, delegate(XmlDocument doc) { XmlNodeList nodes = doc.SelectNodes("/comment"); c = this.CreateAndMapComment(asset, nodes[0]); }); }); return c; }
/// <summary> /// Deletes the asset. /// </summary> /// <param name="asset">The asset.</param> /// <returns></returns> public bool DeleteAsset(Asset asset) { if (asset == null) throw new ArgumentNullException("asset", "The given asset can't be null"); bool destroyed = false; Drop drop = asset.Drop; NameValueCollection parameters = new NameValueCollection(); string token = string.IsNullOrEmpty(drop.AdminToken) ? drop.GuestToken : drop.AdminToken; parameters.Add("token", token); HttpWebRequest request = this.CreateDeleteRequest(this.CreateAssetUrl(drop.Name, asset.Name), parameters); CompleteRequest(request, (HttpWebResponse response) => { destroyed = true; }); return destroyed; }
/// <summary> /// Adds the typed properties. /// </summary> /// <param name="parameters">The parameters.</param> /// <param name="asset">The asset.</param> private void AddTypedProperties(NameValueCollection parameters, Asset asset) { switch (asset.DisplayType) { case "Link": parameters.Add("title", ((Link)asset).Title); parameters.Add("description", ((Link)asset).Description); parameters.Add("url", ((Link)asset).Url); break; case "Note": parameters.Add("title", ((Note)asset).Title); parameters.Add("contents", ((Note)asset).Contents); break; } }
/// <summary> /// Sends the specified parameters. /// </summary> /// <param name="parameters">The parameters.</param> protected void Send(Asset a, NameValueCollection parameters) { if (a == null) throw new ArgumentNullException("a", "The given asset can't be null"); Drop drop = a.Drop; string token = string.IsNullOrEmpty(drop.AdminToken) ? drop.GuestToken : drop.AdminToken; parameters.Add("token", token); HttpWebRequest request = this.CreatePostRequest(this.CreateSendToUrl(drop.Name, a.Name), parameters); CompleteRequest(request, null); }
/// <summary> /// Maps the typed data. /// </summary> /// <param name="asset">The asset.</param> /// <param name="node">The node.</param> protected void MapTypedData(Asset asset, XmlNode node) { switch (asset.DisplayType) { case "Audio": Audio a = asset as Audio; a.Artist = this.ExtractInnerText(node, "artist"); a.Title = this.ExtractInnerText(node, "title"); a.Duration = this.ExtractInt(node, "duration"); break; case "Document": Document d = asset as Document; d.Pages = this.ExtractInt(node, "pages"); break; case "Note": Note n = asset as Note; n.Title = this.ExtractInnerText(node, "title"); n.Contents = this.ExtractInnerText(node, "contents"); break; case "Image": Image i = asset as Image; i.Height = this.ExtractInt(node, "height"); i.Width = this.ExtractInt(node, "width"); break; case "Movie": Movie m = asset as Movie; m.Duration = this.ExtractInt(node, "duration"); break; case "Link": Link l = asset as Link; l.Title = this.ExtractInnerText(node, "title"); l.Description = this.ExtractInnerText(node, "description"); l.Url = this.ExtractInnerText(node, "url"); break; } }
/// <summary> /// Generates the authenticated asset URL. /// </summary> /// <param name="asset">The asset.</param> /// <returns></returns> public string GenerateAuthenticatedAssetUrl(Asset asset) { return this.ServiceAdapter.GenerateAuthenticatedAssetUrl(asset); }
/// <summary> /// Sends to drop. /// </summary> /// <param name="asset">The asset.</param> /// <param name="dropName">Name of the drop.</param> public void SendToDrop(Asset asset, string dropName) { NameValueCollection parameters = new NameValueCollection(); parameters.Add("medium", "drop"); parameters.Add("drop_name", dropName); this.Send(asset, parameters); }
/// <summary> /// Sends to drop. /// </summary> /// <param name="asset">The asset.</param> /// <param name="dropName">Name of the drop.</param> public void SendToDrop(Asset asset, string dropName) { this.ServiceAdapter.SendToDrop(asset, dropName); }
/// <summary> /// Sends to emails. /// </summary> /// <param name="asset">The asset.</param> /// <param name="emails">The emails.</param> /// <param name="message">The message.</param> public void SendToEmails(Asset asset, List<string> emails, string message) { NameValueCollection parameters = new NameValueCollection(); parameters.Add("medium", "email"); StringBuilder emailList = new StringBuilder(); foreach (string email in emails) { emailList.Append(email + ","); } parameters.Add("emails", emailList.ToString()); parameters.Add("message", message); this.Send(asset, parameters); }
/// <summary> /// Sends to fax. /// </summary> /// <param name="asset">The asset.</param> /// <param name="faxNumber">The fax number.</param> public void SendToFax(Asset asset, string faxNumber) { this.ServiceAdapter.SendToFax(asset, faxNumber); }
/// <summary> /// Sends to fax. /// </summary> /// <param name="asset">The asset.</param> /// <param name="faxNumber">The fax number.</param> public void SendToFax(Asset asset, string faxNumber) { NameValueCollection parameters = new NameValueCollection(); parameters.Add("medium", "fax"); parameters.Add("fax_number", faxNumber); this.Send(asset, parameters); }
/// <summary> /// Creates the comment. /// </summary> /// <param name="asset">The asset.</param> /// <param name="contents">The contents.</param> /// <returns></returns> public Comment CreateComment(Asset asset, string contents) { return this.ServiceAdapter.CreateComment(asset, contents); }
/// <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); }