Fixed XBMC JSON requests.

This commit is contained in:
Mark McDowall 2011-09-27 10:41:36 -07:00
parent 4eea6b8c6b
commit 5f0a95b2b1
3 changed files with 43 additions and 16 deletions

View File

@ -22,7 +22,7 @@ namespace NzbDrone.Core.Test
public class XbmcProviderTest : TestBase public class XbmcProviderTest : TestBase
{ {
[Test] [Test]
public void JsonEror_true() public void JsonError_true()
{ {
//Setup //Setup
var mocker = new AutoMoqer(); var mocker = new AutoMoqer();
@ -36,7 +36,21 @@ namespace NzbDrone.Core.Test
} }
[Test] [Test]
public void JsonEror_false() public void JsonError_true_empty_response()
{
//Setup
var mocker = new AutoMoqer();
var response = String.Empty;
//Act
var result = mocker.Resolve<XbmcProvider>().CheckForJsonError(response);
//Assert
Assert.AreEqual(true, result);
}
[Test]
public void JsonError_false()
{ {
//Setup //Setup
var mocker = new AutoMoqer(); var mocker = new AutoMoqer();

View File

@ -74,24 +74,31 @@ namespace NzbDrone.Core.Providers.Core
byte[] byteArray = Encoding.ASCII.GetBytes(command); byte[] byteArray = Encoding.ASCII.GetBytes(command);
var request = WebRequest.Create(address); var request = (HttpWebRequest)WebRequest.Create(address);
request.Method = "POST"; request.Method = "POST";
request.Credentials = new NetworkCredential(username, password); request.Credentials = new NetworkCredential(username, password);
request.ContentLength = byteArray.Length; request.ContentType = "application/json";
request.ContentType = "application/x-www-form-urlencoded"; request.Timeout = 2000;
var dataStream = request.GetRequestStream(); request.KeepAlive = false;
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
var response = request.GetResponse(); //Used to hold the JSON response
dataStream = response.GetResponseStream(); string responseFromServer;
var reader = new StreamReader(dataStream);
// Read the content.
string responseFromServer = reader.ReadToEnd();
reader.Close(); using (var requestStream = request.GetRequestStream())
dataStream.Close(); {
response.Close(); requestStream.Write(byteArray, 0, byteArray.Length);
using (var response = request.GetResponse())
{
using (var responseStream = response.GetResponseStream())
{
using (var reader = new StreamReader(responseStream))
{
responseFromServer = reader.ReadToEnd();
}
}
}
}
return responseFromServer.Replace("&nbsp;", " "); return responseFromServer.Replace("&nbsp;", " ");
} }

View File

@ -300,6 +300,12 @@ namespace NzbDrone.Core.Providers
return true; return true;
} }
if (String.IsNullOrWhiteSpace(response))
{
Logger.Debug("Invalid response from XBMC, the response is not valid JSON");
return true;
}
return false; return false;
} }