Files
Gardient 9583c1afb2 First actual commit
added sources to repository
2015-08-28 21:49:50 +03:00

85 lines
2.9 KiB
C#

using System.Collections.Generic;
using Newtonsoft.Json.Linq;
using System.Web;
using RedditSharp.Things;
namespace RedditSharp
{
public class SubredditStyle
{
private const string UploadImageUrl = "/api/upload_sr_img";
private const string UpdateCssUrl = "/api/subreddit_stylesheet";
private Reddit Reddit { get; set; }
private IWebAgent WebAgent { get; set; }
public SubredditStyle(Reddit reddit, Subreddit subreddit, IWebAgent webAgent)
{
Reddit = reddit;
Subreddit = subreddit;
WebAgent = webAgent;
}
public SubredditStyle(Reddit reddit, Subreddit subreddit, JToken json, IWebAgent webAgent) : this(reddit, subreddit, webAgent)
{
Images = new List<SubredditImage>();
var data = json["data"];
CSS = HttpUtility.HtmlDecode(data["stylesheet"].Value<string>());
foreach (var image in data["images"])
{
Images.Add(new SubredditImage(
Reddit, this, image["link"].Value<string>(),
image["name"].Value<string>(), image["url"].Value<string>(), WebAgent));
}
}
public string CSS { get; set; }
public List<SubredditImage> Images { get; set; }
public Subreddit Subreddit { get; set; }
public void UpdateCss()
{
var request = WebAgent.CreatePost(UpdateCssUrl);
var stream = request.GetRequestStream();
WebAgent.WritePostBody(stream, new
{
op = "save",
stylesheet_contents = CSS,
uh = Reddit.User.Modhash,
api_type = "json",
r = Subreddit.Name
});
stream.Close();
var response = request.GetResponse();
var data = WebAgent.GetResponseString(response.GetResponseStream());
var json = JToken.Parse(data);
}
public void UploadImage(string name, ImageType imageType, byte[] file)
{
var request = WebAgent.CreatePost(UploadImageUrl);
var formData = new MultipartFormBuilder(request);
formData.AddDynamic(new
{
name,
uh = Reddit.User.Modhash,
r = Subreddit.Name,
formid = "image-upload",
img_type = imageType == ImageType.PNG ? "png" : "jpg",
upload = ""
});
formData.AddFile("file", "foo.png", file, imageType == ImageType.PNG ? "image/png" : "image/jpeg");
formData.Finish();
var response = request.GetResponse();
var data = WebAgent.GetResponseString(response.GetResponseStream());
// TODO: Detect errors
}
}
public enum ImageType
{
PNG,
JPEG
}
}