using System; using System.Collections.Generic; using System.Linq; using NzbDrone.Common.Serializer; namespace NzbDrone.Common.Http { public class JsonRpcRequestBuilder : HttpRequestBuilder { public String Method { get; private set; } public List Parameters { get; private set; } public JsonRpcRequestBuilder(String baseUri, String method, IEnumerable parameters) : base (baseUri) { Method = method; Parameters = parameters.ToList(); } public override HttpRequest Build(String path) { var request = base.Build(path); request.Method = HttpMethod.POST; request.Headers.Accept = "application/json-rpc, application/json"; request.Headers.ContentType = "application/json-rpc"; var message = new Dictionary(); message["jsonrpc"] = "2.0"; message["method"] = Method; message["params"] = Parameters; message["id"] = CreateNextId(); request.Body = message.ToJson(); return request; } public String CreateNextId() { return Guid.NewGuid().ToString().Substring(0, 8); } } }