SabProvider now gets JSON instead of XML for history and queue.
This commit is contained in:
parent
26c4240a6b
commit
b4eed1a657
|
@ -0,0 +1,72 @@
|
||||||
|
{
|
||||||
|
"total_size": "40.30 GB",
|
||||||
|
"month_size": "20.23 GB",
|
||||||
|
"week_size": "5.12 GB",
|
||||||
|
"cache_limit":"-1",
|
||||||
|
"paused":true,
|
||||||
|
"new_rel_url":"",
|
||||||
|
"restart_req":false,
|
||||||
|
"slots":[
|
||||||
|
{
|
||||||
|
"action_line":"",
|
||||||
|
"show_details":"True",
|
||||||
|
"script_log":"",
|
||||||
|
"meta":null,
|
||||||
|
"fail_message":"",
|
||||||
|
"loaded":false,
|
||||||
|
"id":605,
|
||||||
|
"size":"778.1 MB",
|
||||||
|
"category":"Apps",
|
||||||
|
"pp":"D",
|
||||||
|
"completeness":0,
|
||||||
|
"script":"",
|
||||||
|
"nzb_name":"Ubuntu.nzb",
|
||||||
|
"download_time":567,
|
||||||
|
"storage":"X:\\Apps\\Ubuntu",
|
||||||
|
"status":"Completed",
|
||||||
|
"script_line":"",
|
||||||
|
"completed":1236646078,
|
||||||
|
"nzo_id":"SABnzbd_nzo_ipet0h",
|
||||||
|
"downloaded":815878352,
|
||||||
|
"report":"000000",
|
||||||
|
"path":"Ubuntu",
|
||||||
|
"postproc_time":368,
|
||||||
|
"name":"Ubuntu",
|
||||||
|
"url":"https://newzbin.com/browse/post/000000/",
|
||||||
|
"bytes":815878352,
|
||||||
|
"url_info":"http://google.com",
|
||||||
|
"stage_log":[
|
||||||
|
{"name":"download","actions":["Downloaded in 9 minutes 27 seconds at an average of 1404kB/s"]},
|
||||||
|
{"name":"repair","actions":["[ubuntu] Repaired in 4 minutes 24 seconds","[ubuntu.sample] Quick Check OK"]},
|
||||||
|
{"name":"unpack","actions":["[ubuntu] Unpacked 1 file/folder in 36 seconds"]}
|
||||||
|
]
|
||||||
|
}],
|
||||||
|
"helpuri":"http://wiki.sabnzbd.org/",
|
||||||
|
"uptime":"12m",
|
||||||
|
"version":"trunk",
|
||||||
|
"diskspacetotal2":"503.32",
|
||||||
|
"color_scheme":"",
|
||||||
|
"darwin":false,
|
||||||
|
"nt":true,
|
||||||
|
"status":"Paused",
|
||||||
|
"last_warning":"",
|
||||||
|
"have_warnings":"0",
|
||||||
|
"cache_art":"0",
|
||||||
|
"finishaction":null,
|
||||||
|
"noofslots":516,
|
||||||
|
"cache_size":"0",
|
||||||
|
"new_release":"",
|
||||||
|
"pause_int":"0",
|
||||||
|
"mbleft":"785.89",
|
||||||
|
"diskspace2":"25.08",
|
||||||
|
"diskspace1":"25.08",
|
||||||
|
"diskspacetotal1":"503.32",
|
||||||
|
"timeleft":"0:00:00",
|
||||||
|
"mb":"785.89",
|
||||||
|
"eta":"unknown",
|
||||||
|
"nzb_quota":"",
|
||||||
|
"loadavg":"",
|
||||||
|
"kbpersec":"0.00",
|
||||||
|
"speedlimit":"0",
|
||||||
|
"webdir":"path\\to\\templates"
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,38 @@
|
||||||
|
{
|
||||||
|
"total_size": "40.30 GB",
|
||||||
|
"month_size": "20.23 GB",
|
||||||
|
"week_size": "5.12 GB",
|
||||||
|
"cache_limit":"-1",
|
||||||
|
"paused":true,
|
||||||
|
"new_rel_url":"",
|
||||||
|
"restart_req":false,
|
||||||
|
"slots":[ ],
|
||||||
|
"helpuri":"http://wiki.sabnzbd.org/",
|
||||||
|
"uptime":"12m",
|
||||||
|
"version":"trunk",
|
||||||
|
"diskspacetotal2":"503.32",
|
||||||
|
"color_scheme":"",
|
||||||
|
"darwin":false,
|
||||||
|
"nt":true,
|
||||||
|
"status":"Paused",
|
||||||
|
"last_warning":"",
|
||||||
|
"have_warnings":"0",
|
||||||
|
"cache_art":"0",
|
||||||
|
"finishaction":null,
|
||||||
|
"noofslots":516,
|
||||||
|
"cache_size":"0",
|
||||||
|
"new_release":"",
|
||||||
|
"pause_int":"0",
|
||||||
|
"mbleft":"785.89",
|
||||||
|
"diskspace2":"25.08",
|
||||||
|
"diskspace1":"25.08",
|
||||||
|
"diskspacetotal1":"503.32",
|
||||||
|
"timeleft":"0:00:00",
|
||||||
|
"mb":"785.89",
|
||||||
|
"eta":"unknown",
|
||||||
|
"nzb_quota":"",
|
||||||
|
"loadavg":"",
|
||||||
|
"kbpersec":"0.00",
|
||||||
|
"speedlimit":"0",
|
||||||
|
"webdir":"path\\to\\templates"
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"status": false,
|
||||||
|
"error": "API Key Incorrect"
|
||||||
|
}
|
|
@ -0,0 +1,97 @@
|
||||||
|
{
|
||||||
|
"cache_limit":"-1",
|
||||||
|
"categories":[
|
||||||
|
"None",
|
||||||
|
"apps",
|
||||||
|
"books",
|
||||||
|
"consoles",
|
||||||
|
"emulation",
|
||||||
|
"games",
|
||||||
|
"misc",
|
||||||
|
"movies",
|
||||||
|
"music",
|
||||||
|
"pda",
|
||||||
|
"resources",
|
||||||
|
"tv"
|
||||||
|
],
|
||||||
|
"scripts":[
|
||||||
|
"None"
|
||||||
|
],
|
||||||
|
"paused":true,
|
||||||
|
"new_rel_url":"",
|
||||||
|
"restart_req":false,
|
||||||
|
"slots":[
|
||||||
|
{
|
||||||
|
"status":"Queued",
|
||||||
|
"index":0,
|
||||||
|
"eta":"unknown",
|
||||||
|
"timeleft":"0:00:00",
|
||||||
|
"avg_age":"43d",
|
||||||
|
"script":"None",
|
||||||
|
"msgid":"4295398",
|
||||||
|
"verbosity":"",
|
||||||
|
"mb":"785.89",
|
||||||
|
"filename":"30 Rock - 1x05 - Title [SDTV]",
|
||||||
|
"priority":"High",
|
||||||
|
"cat":"Apps",
|
||||||
|
"mbleft":"785.89",
|
||||||
|
"percentage":"0",
|
||||||
|
"nzo_id":"SABnzbd_nzo_wgmb1m",
|
||||||
|
"unpackopts":"3",
|
||||||
|
"size":"785.9 MB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"status":"Queued",
|
||||||
|
"index":0,
|
||||||
|
"eta":"unknown",
|
||||||
|
"timeleft":"0:00:00",
|
||||||
|
"avg_age":"43d",
|
||||||
|
"script":"None",
|
||||||
|
"msgid":"4295398",
|
||||||
|
"verbosity":"",
|
||||||
|
"mb":"785.89",
|
||||||
|
"filename":"The Office (US) - 1x05 - Title [WEBDL]",
|
||||||
|
"priority":"High",
|
||||||
|
"cat":"Apps",
|
||||||
|
"mbleft":"785.89",
|
||||||
|
"percentage":"0",
|
||||||
|
"nzo_id":"SABnzbd_nzo_wgmb1m",
|
||||||
|
"unpackopts":"3",
|
||||||
|
"size":"785.9 MB"
|
||||||
|
}],
|
||||||
|
"helpuri":"http://wiki.sabnzbd.org/",
|
||||||
|
"uptime":"6m",
|
||||||
|
"refresh_rate":"",
|
||||||
|
"isverbose":false,
|
||||||
|
"start":0,
|
||||||
|
"version":"trunk",
|
||||||
|
"diskspacetotal2":"503.32",
|
||||||
|
"color_scheme":"",
|
||||||
|
"darwin":false,
|
||||||
|
"nt":true,
|
||||||
|
"status":"Paused",
|
||||||
|
"last_warning":"",
|
||||||
|
"have_warnings":"0",
|
||||||
|
"cache_art":"0",
|
||||||
|
"finishaction":null,
|
||||||
|
"noofslots":1,
|
||||||
|
"cache_size":"0",
|
||||||
|
"finish":0,
|
||||||
|
"new_release":"",
|
||||||
|
"pause_int":"0"
|
||||||
|
,"mbleft":"785.89",
|
||||||
|
"diskspace2":"25.08",
|
||||||
|
"diskspace1":"25.08",
|
||||||
|
"diskspacetotal1":"503.32",
|
||||||
|
"timeleft":"0:00:00",
|
||||||
|
"mb":"785.89",
|
||||||
|
"newzbinDetails":true,
|
||||||
|
"eta":"unknown",
|
||||||
|
"nzb_quota":"",
|
||||||
|
"loadavg":"",
|
||||||
|
"limit":0,
|
||||||
|
"kbpersec":"0.00",
|
||||||
|
"speedlimit":"0",
|
||||||
|
"webdir":"path\\to\\templates",
|
||||||
|
"queue_details":"0"
|
||||||
|
}
|
|
@ -1,142 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
|
||||||
<queue>
|
|
||||||
<active_lang>us-en</active_lang>
|
|
||||||
<session>5c770e3197e4fe763423ee7c392c25d1</session>
|
|
||||||
<slots>
|
|
||||||
<slot>
|
|
||||||
<status>Queued</status>
|
|
||||||
<index>0</index>
|
|
||||||
<eta>unknown</eta>
|
|
||||||
<timeleft>0:00:00</timeleft>
|
|
||||||
<avg_age>11h</avg_age>
|
|
||||||
<script>None</script>
|
|
||||||
|
|
||||||
<msgid></msgid>
|
|
||||||
<verbosity></verbosity>
|
|
||||||
<mb>770.96</mb>
|
|
||||||
<sizeleft>770.96 MB</sizeleft>
|
|
||||||
<filename>30 Rock - 1x05 - Title [SDTV]</filename>
|
|
||||||
<priority>Normal</priority>
|
|
||||||
<cat>None</cat>
|
|
||||||
<mbleft>770.96</mbleft>
|
|
||||||
<percentage>0</percentage>
|
|
||||||
<nzo_id>SABnzbd_nzo_xyr5ak</nzo_id>
|
|
||||||
|
|
||||||
<unpackopts>3</unpackopts>
|
|
||||||
<size>770.96 MB</size>
|
|
||||||
</slot>
|
|
||||||
<slot>
|
|
||||||
<status>Queued</status>
|
|
||||||
<index>0</index>
|
|
||||||
<eta>unknown</eta>
|
|
||||||
<timeleft>0:00:00</timeleft>
|
|
||||||
<avg_age>11h</avg_age>
|
|
||||||
<script>None</script>
|
|
||||||
|
|
||||||
<msgid></msgid>
|
|
||||||
<verbosity></verbosity>
|
|
||||||
<mb>770.96</mb>
|
|
||||||
<sizeleft>770.96 MB</sizeleft>
|
|
||||||
<filename>The Office (US) - 1x05 - Title [WEBDL]</filename>
|
|
||||||
<priority>Normal</priority>
|
|
||||||
<cat>None</cat>
|
|
||||||
<mbleft>770.96</mbleft>
|
|
||||||
<percentage>0</percentage>
|
|
||||||
<nzo_id>SABnzbd_nzo_kqr9gl</nzo_id>
|
|
||||||
|
|
||||||
<unpackopts>3</unpackopts>
|
|
||||||
<size>770.96 MB</size>
|
|
||||||
</slot>
|
|
||||||
</slots>
|
|
||||||
<speed>0 </speed>
|
|
||||||
<size>770.96 MB</size>
|
|
||||||
<limit>0</limit>
|
|
||||||
<start>0</start>
|
|
||||||
<diskspacetotal2>259.45</diskspacetotal2>
|
|
||||||
<darwin>False</darwin>
|
|
||||||
|
|
||||||
<last_warning></last_warning>
|
|
||||||
<have_warnings>0</have_warnings>
|
|
||||||
<noofslots>1</noofslots>
|
|
||||||
<pause_int>0</pause_int>
|
|
||||||
<categories>
|
|
||||||
<category>None</category>
|
|
||||||
<category>anime</category>
|
|
||||||
<category>apps</category>
|
|
||||||
<category>books</category>
|
|
||||||
<category>consoles</category>
|
|
||||||
|
|
||||||
<category>ds-games</category>
|
|
||||||
<category>emulation</category>
|
|
||||||
<category>games</category>
|
|
||||||
<category>misc</category>
|
|
||||||
<category>movies</category>
|
|
||||||
<category>music</category>
|
|
||||||
<category>pda</category>
|
|
||||||
<category>resources</category>
|
|
||||||
<category>test</category>
|
|
||||||
|
|
||||||
<category>tv</category>
|
|
||||||
<category>tv-dvd</category>
|
|
||||||
<category>unknown</category>
|
|
||||||
<category>wii-games</category>
|
|
||||||
<category>xbox-dlc</category>
|
|
||||||
<category>xbox-xbla</category>
|
|
||||||
</categories>
|
|
||||||
<diskspacetotal1>259.45</diskspacetotal1>
|
|
||||||
<mb>770.96</mb>
|
|
||||||
|
|
||||||
<loadavg></loadavg>
|
|
||||||
<cache_max>157286400</cache_max>
|
|
||||||
<speedlimit></speedlimit>
|
|
||||||
<webdir>C:\Program Files\SABnzbd\interfaces\Plush\templates</webdir>
|
|
||||||
<paused>True</paused>
|
|
||||||
<isverbose>False</isverbose>
|
|
||||||
<restart_req>False</restart_req>
|
|
||||||
<power_options>True</power_options>
|
|
||||||
<helpuri>http://wiki.sabnzbd.org/</helpuri>
|
|
||||||
<uptime>4d</uptime>
|
|
||||||
|
|
||||||
<refresh_rate></refresh_rate>
|
|
||||||
<version>0.6.x</version>
|
|
||||||
<color_scheme></color_scheme>
|
|
||||||
<new_release></new_release>
|
|
||||||
<nt>True</nt>
|
|
||||||
<status>Paused</status>
|
|
||||||
<finish>0</finish>
|
|
||||||
<cache_art>0</cache_art>
|
|
||||||
<paused_all>False</paused_all>
|
|
||||||
<finishaction></finishaction>
|
|
||||||
<sizeleft>770.96 MB</sizeleft>
|
|
||||||
|
|
||||||
<cache_size>0B</cache_size>
|
|
||||||
<mbleft>770.96</mbleft>
|
|
||||||
<diskspace2>1177.64</diskspace2>
|
|
||||||
<diskspace1>1177.64</diskspace1>
|
|
||||||
<scripts>
|
|
||||||
<script>None</script>
|
|
||||||
<script>Alias.config</script>
|
|
||||||
<script>ConsoleCategories.config</script>
|
|
||||||
<script>exiso.exe</script>
|
|
||||||
<script>Movies.exe</script>
|
|
||||||
|
|
||||||
<script>Movies.exe.config</script>
|
|
||||||
<script>Movies.pdb</script>
|
|
||||||
<script>PreQueue.exe</script>
|
|
||||||
<script>PreQueue.exe.config</script>
|
|
||||||
<script>PreQueue.pdb</script>
|
|
||||||
<script>SABTest.exe</script>
|
|
||||||
<script>TVMove.exe</script>
|
|
||||||
<script>TVMove.exe.config</script>
|
|
||||||
<script>TVMove_0.4.1.exe</script>
|
|
||||||
|
|
||||||
<script>XBox360.exe</script>
|
|
||||||
<script>XBox360.exe.config</script>
|
|
||||||
</scripts>
|
|
||||||
<timeleft>0:00:00</timeleft>
|
|
||||||
<nzb_quota></nzb_quota>
|
|
||||||
<eta>unknown</eta>
|
|
||||||
<kbpersec>0.00</kbpersec>
|
|
||||||
<new_rel_url></new_rel_url>
|
|
||||||
<queue_details>0</queue_details>
|
|
||||||
</queue>
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
{
|
||||||
|
"cache_limit":"-1",
|
||||||
|
"categories":[
|
||||||
|
"None",
|
||||||
|
"apps",
|
||||||
|
"books",
|
||||||
|
"consoles",
|
||||||
|
"emulation",
|
||||||
|
"games",
|
||||||
|
"misc",
|
||||||
|
"movies",
|
||||||
|
"music",
|
||||||
|
"pda",
|
||||||
|
"resources",
|
||||||
|
"tv"
|
||||||
|
],
|
||||||
|
"scripts":[
|
||||||
|
"None"
|
||||||
|
],
|
||||||
|
"paused":true,
|
||||||
|
"new_rel_url":"",
|
||||||
|
"restart_req":false,
|
||||||
|
"slots":[ ],
|
||||||
|
"helpuri":"http://wiki.sabnzbd.org/",
|
||||||
|
"uptime":"6m",
|
||||||
|
"refresh_rate":"",
|
||||||
|
"isverbose":false,
|
||||||
|
"start":0,
|
||||||
|
"version":"trunk",
|
||||||
|
"diskspacetotal2":"503.32",
|
||||||
|
"color_scheme":"",
|
||||||
|
"darwin":false,
|
||||||
|
"nt":true,
|
||||||
|
"status":"Paused",
|
||||||
|
"last_warning":"",
|
||||||
|
"have_warnings":"0",
|
||||||
|
"cache_art":"0",
|
||||||
|
"finishaction":null,
|
||||||
|
"noofslots":1,
|
||||||
|
"cache_size":"0",
|
||||||
|
"finish":0,
|
||||||
|
"new_release":"",
|
||||||
|
"pause_int":"0"
|
||||||
|
,"mbleft":"785.89",
|
||||||
|
"diskspace2":"25.08",
|
||||||
|
"diskspace1":"25.08",
|
||||||
|
"diskspacetotal1":"503.32",
|
||||||
|
"timeleft":"0:00:00",
|
||||||
|
"mb":"785.89",
|
||||||
|
"newzbinDetails":true,
|
||||||
|
"eta":"unknown",
|
||||||
|
"nzb_quota":"",
|
||||||
|
"loadavg":"",
|
||||||
|
"limit":0,
|
||||||
|
"kbpersec":"0.00",
|
||||||
|
"speedlimit":"0",
|
||||||
|
"webdir":"path\\to\\templates",
|
||||||
|
"queue_details":"0"
|
||||||
|
}
|
|
@ -1,94 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
|
||||||
<queue><active_lang>us-en</active_lang>
|
|
||||||
<session>5c770e3197e4fe763423ee7c392c25d1</session>
|
|
||||||
<slots></slots>
|
|
||||||
<speed>0 </speed>
|
|
||||||
<size>0B</size>
|
|
||||||
<limit>0</limit>
|
|
||||||
<start>0</start>
|
|
||||||
<diskspacetotal2>259.45</diskspacetotal2>
|
|
||||||
<darwin>False</darwin>
|
|
||||||
|
|
||||||
<last_warning></last_warning>
|
|
||||||
<have_warnings>0</have_warnings>
|
|
||||||
<noofslots>0</noofslots>
|
|
||||||
<pause_int>0</pause_int>
|
|
||||||
<categories><category>None</category>
|
|
||||||
<category>anime</category>
|
|
||||||
<category>apps</category>
|
|
||||||
<category>books</category>
|
|
||||||
<category>consoles</category>
|
|
||||||
|
|
||||||
<category>ds-games</category>
|
|
||||||
<category>emulation</category>
|
|
||||||
<category>games</category>
|
|
||||||
<category>misc</category>
|
|
||||||
<category>movies</category>
|
|
||||||
<category>music</category>
|
|
||||||
<category>pda</category>
|
|
||||||
<category>resources</category>
|
|
||||||
<category>test</category>
|
|
||||||
|
|
||||||
<category>tv</category>
|
|
||||||
<category>tv-dvd</category>
|
|
||||||
<category>unknown</category>
|
|
||||||
<category>wii-games</category>
|
|
||||||
<category>xbox-dlc</category>
|
|
||||||
<category>xbox-xbla</category>
|
|
||||||
</categories>
|
|
||||||
<diskspacetotal1>259.45</diskspacetotal1>
|
|
||||||
<mb>0.00</mb>
|
|
||||||
|
|
||||||
<loadavg></loadavg>
|
|
||||||
<cache_max>157286400</cache_max>
|
|
||||||
<speedlimit></speedlimit>
|
|
||||||
<webdir>C:\Program Files\SABnzbd\interfaces\Plush\templates</webdir>
|
|
||||||
<paused>False</paused>
|
|
||||||
<isverbose>False</isverbose>
|
|
||||||
<restart_req>False</restart_req>
|
|
||||||
<power_options>True</power_options>
|
|
||||||
<helpuri>http://wiki.sabnzbd.org/</helpuri>
|
|
||||||
<uptime>4d</uptime>
|
|
||||||
|
|
||||||
<refresh_rate></refresh_rate>
|
|
||||||
<version>0.6.x</version>
|
|
||||||
<color_scheme></color_scheme>
|
|
||||||
<new_release></new_release>
|
|
||||||
<nt>True</nt>
|
|
||||||
<status>Idle</status>
|
|
||||||
<finish>0</finish>
|
|
||||||
<cache_art>0</cache_art>
|
|
||||||
<paused_all>False</paused_all>
|
|
||||||
<finishaction></finishaction>
|
|
||||||
<sizeleft>0B</sizeleft>
|
|
||||||
|
|
||||||
<cache_size>0B</cache_size>
|
|
||||||
<mbleft>0.00</mbleft>
|
|
||||||
<diskspace2>1177.64</diskspace2>
|
|
||||||
<diskspace1>1177.64</diskspace1>
|
|
||||||
<scripts><script>None</script>
|
|
||||||
<script>Alias.config</script>
|
|
||||||
<script>ConsoleCategories.config</script>
|
|
||||||
<script>exiso.exe</script>
|
|
||||||
<script>Movies.exe</script>
|
|
||||||
|
|
||||||
<script>Movies.exe.config</script>
|
|
||||||
<script>Movies.pdb</script>
|
|
||||||
<script>PreQueue.exe</script>
|
|
||||||
<script>PreQueue.exe.config</script>
|
|
||||||
<script>PreQueue.pdb</script>
|
|
||||||
<script>SABTest.exe</script>
|
|
||||||
<script>TVMove.exe</script>
|
|
||||||
<script>TVMove.exe.config</script>
|
|
||||||
<script>TVMove_0.4.1.exe</script>
|
|
||||||
|
|
||||||
<script>XBox360.exe</script>
|
|
||||||
<script>XBox360.exe.config</script>
|
|
||||||
</scripts>
|
|
||||||
<timeleft>0:00:00</timeleft>
|
|
||||||
<nzb_quota></nzb_quota>
|
|
||||||
<eta>unknown</eta>
|
|
||||||
<kbpersec>0.00</kbpersec>
|
|
||||||
<new_rel_url></new_rel_url>
|
|
||||||
<queue_details>0</queue_details>
|
|
||||||
</queue>
|
|
|
@ -1,4 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
|
||||||
<result><status>False</status>
|
|
||||||
<error>API Key Incorrect</error>
|
|
||||||
</result>
|
|
|
@ -183,7 +183,18 @@
|
||||||
<Content Include="App_Data\Config.xml">
|
<Content Include="App_Data\Config.xml">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Include="Files\History.xml" />
|
<Content Include="Files\HistoryEmpty.txt">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
<Content Include="Files\Queue.txt">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
<Content Include="Files\History.txt">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
<Content Include="Files\JsonError.txt">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
<Content Include="Files\RSS\newbin_none_english.xml">
|
<Content Include="Files\RSS\newbin_none_english.xml">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
|
@ -217,14 +228,7 @@
|
||||||
<Content Include="Files\RSS\nzbsorg.xml">
|
<Content Include="Files\RSS\nzbsorg.xml">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Include="Files\Queue.xml">
|
<Content Include="Files\QueueEmpty.txt">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</Content>
|
|
||||||
<Content Include="Files\QueueEmpty.xml">
|
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<Content Include="Files\QueueError.xml">
|
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
@ -9,6 +9,7 @@ using FluentAssertions;
|
||||||
using Moq;
|
using Moq;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using NzbDrone.Core.Model;
|
using NzbDrone.Core.Model;
|
||||||
|
using NzbDrone.Core.Model.Sabnzbd;
|
||||||
using NzbDrone.Core.Providers;
|
using NzbDrone.Core.Providers;
|
||||||
using NzbDrone.Core.Providers.Core;
|
using NzbDrone.Core.Providers.Core;
|
||||||
using NzbDrone.Core.Repository;
|
using NzbDrone.Core.Repository;
|
||||||
|
@ -54,7 +55,7 @@ namespace NzbDrone.Core.Test.ProviderTests
|
||||||
const string apikey = "5c770e3197e4fe763423ee7c392c25d1";
|
const string apikey = "5c770e3197e4fe763423ee7c392c25d1";
|
||||||
const string username = "admin";
|
const string username = "admin";
|
||||||
const string password = "pass";
|
const string password = "pass";
|
||||||
const SabnzbdPriorityType priority = SabnzbdPriorityType.Normal;
|
const SabPriorityType priority = SabPriorityType.Normal;
|
||||||
const string category = "tv";
|
const string category = "tv";
|
||||||
|
|
||||||
|
|
||||||
|
@ -101,7 +102,7 @@ namespace NzbDrone.Core.Test.ProviderTests
|
||||||
const string apikey = "5c770e3197e4fe763423ee7c392c25d1";
|
const string apikey = "5c770e3197e4fe763423ee7c392c25d1";
|
||||||
const string username = "admin";
|
const string username = "admin";
|
||||||
const string password = "pass";
|
const string password = "pass";
|
||||||
const SabnzbdPriorityType priority = SabnzbdPriorityType.Normal;
|
const SabPriorityType priority = SabPriorityType.Normal;
|
||||||
const string category = "tv";
|
const string category = "tv";
|
||||||
|
|
||||||
|
|
||||||
|
@ -147,7 +148,7 @@ namespace NzbDrone.Core.Test.ProviderTests
|
||||||
string apikey = "5c770e3197e4fe763423ee7c392c25d1";
|
string apikey = "5c770e3197e4fe763423ee7c392c25d1";
|
||||||
string username = "admin";
|
string username = "admin";
|
||||||
string password = "pass";
|
string password = "pass";
|
||||||
var priority = SabnzbdPriorityType.Normal;
|
var priority = SabPriorityType.Normal;
|
||||||
string category = "tv";
|
string category = "tv";
|
||||||
|
|
||||||
|
|
||||||
|
@ -180,108 +181,6 @@ namespace NzbDrone.Core.Test.ProviderTests
|
||||||
ExceptionVerification.ExpectedWarns(1);
|
ExceptionVerification.ExpectedWarns(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void IsInQueue_True()
|
|
||||||
{
|
|
||||||
//Setup
|
|
||||||
string sabHost = "192.168.5.55";
|
|
||||||
int sabPort = 2222;
|
|
||||||
string apikey = "5c770e3197e4fe763423ee7c392c25d1";
|
|
||||||
string username = "admin";
|
|
||||||
string password = "pass";
|
|
||||||
|
|
||||||
var fakeConfig = Mocker.GetMock<ConfigProvider>();
|
|
||||||
fakeConfig.SetupGet(c => c.SabHost)
|
|
||||||
.Returns(sabHost);
|
|
||||||
fakeConfig.SetupGet(c => c.SabPort)
|
|
||||||
.Returns(sabPort);
|
|
||||||
fakeConfig.SetupGet(c => c.SabApiKey)
|
|
||||||
.Returns(apikey);
|
|
||||||
fakeConfig.SetupGet(c => c.SabUsername)
|
|
||||||
.Returns(username);
|
|
||||||
fakeConfig.SetupGet(c => c.SabPassword)
|
|
||||||
.Returns(password);
|
|
||||||
|
|
||||||
Mocker.GetMock<HttpProvider>(MockBehavior.Strict)
|
|
||||||
.Setup(s => s.DownloadString("http://192.168.5.55:2222/api?mode=queue&output=xml&apikey=5c770e3197e4fe763423ee7c392c25d1&ma_username=admin&ma_password=pass"))
|
|
||||||
.Returns(File.ReadAllText(@".\Files\Queue.xml"));
|
|
||||||
|
|
||||||
//Act
|
|
||||||
bool result = Mocker.Resolve<SabProvider>().IsInQueue("30 Rock - 1x05 - Title [SDTV]");
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
result.Should().BeTrue();
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void IsInQueue_False_Empty()
|
|
||||||
{
|
|
||||||
//Setup
|
|
||||||
string sabHost = "192.168.5.55";
|
|
||||||
int sabPort = 2222;
|
|
||||||
string apikey = "5c770e3197e4fe763423ee7c392c25d1";
|
|
||||||
string username = "admin";
|
|
||||||
string password = "pass";
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var fakeConfig = Mocker.GetMock<ConfigProvider>();
|
|
||||||
fakeConfig.SetupGet(c => c.SabHost)
|
|
||||||
.Returns(sabHost);
|
|
||||||
fakeConfig.SetupGet(c => c.SabPort)
|
|
||||||
.Returns(sabPort);
|
|
||||||
fakeConfig.SetupGet(c => c.SabApiKey)
|
|
||||||
.Returns(apikey);
|
|
||||||
fakeConfig.SetupGet(c => c.SabUsername)
|
|
||||||
.Returns(username);
|
|
||||||
fakeConfig.SetupGet(c => c.SabPassword)
|
|
||||||
.Returns(password);
|
|
||||||
|
|
||||||
Mocker.GetMock<HttpProvider>(MockBehavior.Strict)
|
|
||||||
.Setup(s => s.DownloadString("http://192.168.5.55:2222/api?mode=queue&output=xml&apikey=5c770e3197e4fe763423ee7c392c25d1&ma_username=admin&ma_password=pass"))
|
|
||||||
.Returns(File.ReadAllText(@".\Files\QueueEmpty.xml"));
|
|
||||||
|
|
||||||
//Act
|
|
||||||
bool result = Mocker.Resolve<SabProvider>().IsInQueue(String.Empty);
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
Assert.IsFalse(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
[ExpectedException(typeof(ApplicationException), ExpectedMessage = "API Key Incorrect")]
|
|
||||||
public void IsInQueue_False_Error()
|
|
||||||
{
|
|
||||||
//Setup
|
|
||||||
string sabHost = "192.168.5.55";
|
|
||||||
int sabPort = 2222;
|
|
||||||
string apikey = "5c770e3197e4fe763423ee7c392c25d1";
|
|
||||||
string username = "admin";
|
|
||||||
string password = "pass";
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var fakeConfig = Mocker.GetMock<ConfigProvider>();
|
|
||||||
fakeConfig.SetupGet(c => c.SabHost)
|
|
||||||
.Returns(sabHost);
|
|
||||||
fakeConfig.SetupGet(c => c.SabPort)
|
|
||||||
.Returns(sabPort);
|
|
||||||
fakeConfig.SetupGet(c => c.SabApiKey)
|
|
||||||
.Returns(apikey);
|
|
||||||
fakeConfig.SetupGet(c => c.SabUsername)
|
|
||||||
.Returns(username);
|
|
||||||
fakeConfig.SetupGet(c => c.SabPassword)
|
|
||||||
.Returns(password);
|
|
||||||
|
|
||||||
Mocker.GetMock<HttpProvider>(MockBehavior.Strict)
|
|
||||||
.Setup(s => s.DownloadString("http://192.168.5.55:2222/api?mode=queue&output=xml&apikey=5c770e3197e4fe763423ee7c392c25d1&ma_username=admin&ma_password=pass"))
|
|
||||||
.Returns(File.ReadAllText(@".\Files\QueueError.xml"));
|
|
||||||
|
|
||||||
|
|
||||||
//Act
|
|
||||||
Mocker.Resolve<SabProvider>().IsInQueue(String.Empty);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
[TestCase(1, new[] { 2 }, "My Episode Title", QualityTypes.DVD, false, "My Series Name - 1x2 - My Episode Title [DVD]")]
|
[TestCase(1, new[] { 2 }, "My Episode Title", QualityTypes.DVD, false, "My Series Name - 1x2 - My Episode Title [DVD]")]
|
||||||
[TestCase(1, new[] { 2 }, "My Episode Title", QualityTypes.DVD, true, "My Series Name - 1x2 - My Episode Title [DVD] [Proper]")]
|
[TestCase(1, new[] { 2 }, "My Episode Title", QualityTypes.DVD, true, "My Series Name - 1x2 - My Episode Title [DVD] [Proper]")]
|
||||||
|
@ -373,7 +272,7 @@ namespace NzbDrone.Core.Test.ProviderTests
|
||||||
const string apikey = "f37dc33baec2e5566f5aec666287870d";
|
const string apikey = "f37dc33baec2e5566f5aec666287870d";
|
||||||
const string username = "root";
|
const string username = "root";
|
||||||
const string password = "*************";
|
const string password = "*************";
|
||||||
const SabnzbdPriorityType priority = SabnzbdPriorityType.Normal;
|
const SabPriorityType priority = SabPriorityType.Normal;
|
||||||
const string category = "tv";
|
const string category = "tv";
|
||||||
|
|
||||||
|
|
||||||
|
@ -472,8 +371,8 @@ namespace NzbDrone.Core.Test.ProviderTests
|
||||||
WithSabConfigValues();
|
WithSabConfigValues();
|
||||||
|
|
||||||
Mocker.GetMock<HttpProvider>()
|
Mocker.GetMock<HttpProvider>()
|
||||||
.Setup(s => s.DownloadString("http://192.168.5.55:2222/api?mode=queue&output=xml&apikey=5c770e3197e4fe763423ee7c392c25d1&ma_username=admin&ma_password=pass"))
|
.Setup(s => s.DownloadString("http://192.168.5.55:2222/api?mode=queue&output=json&start=0&limit=0&apikey=5c770e3197e4fe763423ee7c392c25d1&ma_username=admin&ma_password=pass"))
|
||||||
.Returns(File.ReadAllText(@".\Files\QueueEmpty.xml"));
|
.Returns(File.ReadAllText(@".\Files\QueueEmpty.txt"));
|
||||||
|
|
||||||
//Act
|
//Act
|
||||||
var result = Mocker.Resolve<SabProvider>().GetQueue();
|
var result = Mocker.Resolve<SabProvider>().GetQueue();
|
||||||
|
@ -489,8 +388,8 @@ namespace NzbDrone.Core.Test.ProviderTests
|
||||||
WithSabConfigValues();
|
WithSabConfigValues();
|
||||||
|
|
||||||
Mocker.GetMock<HttpProvider>()
|
Mocker.GetMock<HttpProvider>()
|
||||||
.Setup(s => s.DownloadString("http://192.168.5.55:2222/api?mode=queue&output=xml&apikey=5c770e3197e4fe763423ee7c392c25d1&ma_username=admin&ma_password=pass"))
|
.Setup(s => s.DownloadString("http://192.168.5.55:2222/api?mode=queue&output=json&start=0&limit=0&apikey=5c770e3197e4fe763423ee7c392c25d1&ma_username=admin&ma_password=pass"))
|
||||||
.Returns(File.ReadAllText(@".\Files\QueueError.xml"));
|
.Returns(File.ReadAllText(@".\Files\JsonError.txt"));
|
||||||
|
|
||||||
//Act
|
//Act
|
||||||
var result = Mocker.Resolve<SabProvider>().GetQueue();
|
var result = Mocker.Resolve<SabProvider>().GetQueue();
|
||||||
|
@ -505,8 +404,8 @@ namespace NzbDrone.Core.Test.ProviderTests
|
||||||
WithSabConfigValues();
|
WithSabConfigValues();
|
||||||
|
|
||||||
Mocker.GetMock<HttpProvider>()
|
Mocker.GetMock<HttpProvider>()
|
||||||
.Setup(s => s.DownloadString("http://192.168.5.55:2222/api?mode=queue&output=xml&apikey=5c770e3197e4fe763423ee7c392c25d1&ma_username=admin&ma_password=pass"))
|
.Setup(s => s.DownloadString("http://192.168.5.55:2222/api?mode=queue&output=json&start=0&limit=0&apikey=5c770e3197e4fe763423ee7c392c25d1&ma_username=admin&ma_password=pass"))
|
||||||
.Returns(File.ReadAllText(@".\Files\Queue.xml"));
|
.Returns(File.ReadAllText(@".\Files\Queue.txt"));
|
||||||
|
|
||||||
//Act
|
//Act
|
||||||
var result = Mocker.Resolve<SabProvider>().GetQueue();
|
var result = Mocker.Resolve<SabProvider>().GetQueue();
|
||||||
|
@ -514,5 +413,54 @@ namespace NzbDrone.Core.Test.ProviderTests
|
||||||
//Assert
|
//Assert
|
||||||
result.Should().HaveCount(2);
|
result.Should().HaveCount(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void GetHistory_should_return_a_list_with_items_when_the_history_has_items()
|
||||||
|
{
|
||||||
|
WithSabConfigValues();
|
||||||
|
|
||||||
|
Mocker.GetMock<HttpProvider>()
|
||||||
|
.Setup(s => s.DownloadString("http://192.168.5.55:2222/api?mode=history&output=json&start=0&limit=0&apikey=5c770e3197e4fe763423ee7c392c25d1&ma_username=admin&ma_password=pass"))
|
||||||
|
.Returns(File.ReadAllText(@".\Files\History.txt"));
|
||||||
|
|
||||||
|
//Act
|
||||||
|
var result = Mocker.Resolve<SabProvider>().GetHistory();
|
||||||
|
|
||||||
|
//Assert
|
||||||
|
result.Should().HaveCount(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void GetHistory_should_return_an_empty_list_when_the_queue_is_empty()
|
||||||
|
{
|
||||||
|
WithSabConfigValues();
|
||||||
|
|
||||||
|
Mocker.GetMock<HttpProvider>()
|
||||||
|
.Setup(s => s.DownloadString("http://192.168.5.55:2222/api?mode=history&output=json&start=0&limit=0&apikey=5c770e3197e4fe763423ee7c392c25d1&ma_username=admin&ma_password=pass"))
|
||||||
|
.Returns(File.ReadAllText(@".\Files\HistoryEmpty.txt"));
|
||||||
|
|
||||||
|
//Act
|
||||||
|
var result = Mocker.Resolve<SabProvider>().GetHistory();
|
||||||
|
|
||||||
|
//Assert
|
||||||
|
result.Should().BeEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
[ExpectedException(typeof(ApplicationException), ExpectedMessage = "API Key Incorrect")]
|
||||||
|
public void GetHistory_should_return_an_empty_list_when_there_is_an_error_getting_the_queue()
|
||||||
|
{
|
||||||
|
WithSabConfigValues();
|
||||||
|
|
||||||
|
Mocker.GetMock<HttpProvider>()
|
||||||
|
.Setup(s => s.DownloadString("http://192.168.5.55:2222/api?mode=history&output=json&start=0&limit=0&apikey=5c770e3197e4fe763423ee7c392c25d1&ma_username=admin&ma_password=pass"))
|
||||||
|
.Returns(File.ReadAllText(@".\Files\JsonError.txt"));
|
||||||
|
|
||||||
|
//Act
|
||||||
|
var result = Mocker.Resolve<SabProvider>().GetHistory();
|
||||||
|
|
||||||
|
//Assert
|
||||||
|
result.Should().BeEmpty();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,13 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace NzbDrone.Core.Model
|
|
||||||
{
|
|
||||||
public class SabQueueItem
|
|
||||||
{
|
|
||||||
public string Id { get; set; }
|
|
||||||
public string Title { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -2,9 +2,9 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace NzbDrone.Core.Model
|
namespace NzbDrone.Core.Model.Sabnzbd
|
||||||
{
|
{
|
||||||
public class SabnzbdCategoryModel
|
public class SabCategoryModel
|
||||||
{
|
{
|
||||||
public List<string> categories { get; set; }
|
public List<string> categories { get; set; }
|
||||||
}
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Model.Sabnzbd
|
||||||
|
{
|
||||||
|
public class SabHistory
|
||||||
|
{
|
||||||
|
public bool Paused { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(PropertyName = "slots")]
|
||||||
|
public List<SabHistoryItem> Items { get; set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Model.Sabnzbd
|
||||||
|
{
|
||||||
|
public class SabHistoryItem
|
||||||
|
{
|
||||||
|
[JsonProperty(PropertyName = "fail_message")]
|
||||||
|
public string FailMessage { get; set; }
|
||||||
|
|
||||||
|
public string Size { get; set; }
|
||||||
|
public string Category { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(PropertyName = "nzb_name")]
|
||||||
|
public string NzbName { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(PropertyName = "download_time")]
|
||||||
|
public int DownloadTime { get; set; }
|
||||||
|
|
||||||
|
public string Storage { get; set; }
|
||||||
|
public string Status { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(PropertyName = "nzo_id")]
|
||||||
|
public string Id { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(PropertyName = "name")]
|
||||||
|
public string Title { get; set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Model.Sabnzbd
|
||||||
|
{
|
||||||
|
public class SabJsonError
|
||||||
|
{
|
||||||
|
public string Status { get; set; }
|
||||||
|
public string Error { get; set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
namespace NzbDrone.Core.Model
|
namespace NzbDrone.Core.Model.Sabnzbd
|
||||||
{
|
{
|
||||||
public class SabnzbdInfoModel
|
public class SabModel
|
||||||
{
|
{
|
||||||
public string Host { get; set; }
|
public string Host { get; set; }
|
||||||
public int Port { get; set; }
|
public int Port { get; set; }
|
|
@ -1,6 +1,6 @@
|
||||||
namespace NzbDrone.Core.Model
|
namespace NzbDrone.Core.Model.Sabnzbd
|
||||||
{
|
{
|
||||||
public enum SabnzbdPriorityType
|
public enum SabPriorityType
|
||||||
{
|
{
|
||||||
Default = -100,
|
Default = -100,
|
||||||
Paused = -2,
|
Paused = -2,
|
|
@ -0,0 +1,16 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Model.Sabnzbd
|
||||||
|
{
|
||||||
|
public class SabQueue
|
||||||
|
{
|
||||||
|
public bool Paused { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(PropertyName = "slots")]
|
||||||
|
public List<SabQueueItem> Items { get; set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Model.Sabnzbd
|
||||||
|
{
|
||||||
|
public class SabQueueItem
|
||||||
|
{
|
||||||
|
public string Status { get; set; }
|
||||||
|
public int Index { get; set; }
|
||||||
|
public TimeSpan Timeleft { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(PropertyName = "mb")]
|
||||||
|
public decimal Size { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(PropertyName = "filename")]
|
||||||
|
public string Title { get; set; }
|
||||||
|
|
||||||
|
public SabPriorityType Priority { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(PropertyName = "cat")]
|
||||||
|
public string Category { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(PropertyName = "mbleft")]
|
||||||
|
public decimal SizeLeft { get; set; }
|
||||||
|
|
||||||
|
public int Percentage { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(PropertyName = "nzo_id")]
|
||||||
|
public string Id { get; set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -232,9 +232,13 @@
|
||||||
<Compile Include="Model\LanguageType.cs" />
|
<Compile Include="Model\LanguageType.cs" />
|
||||||
<Compile Include="Model\MisnamedEpisodeModel.cs" />
|
<Compile Include="Model\MisnamedEpisodeModel.cs" />
|
||||||
<Compile Include="Model\Quality.cs" />
|
<Compile Include="Model\Quality.cs" />
|
||||||
<Compile Include="Model\SabnzbdCategoryModel.cs" />
|
<Compile Include="Model\Sabnzbd\SabHistoryItem.cs" />
|
||||||
<Compile Include="Model\SabnzbdInfoModel.cs" />
|
<Compile Include="Model\Sabnzbd\SabHistory.cs" />
|
||||||
<Compile Include="Model\SabQueueItem.cs" />
|
<Compile Include="Model\Sabnzbd\SabJsonError.cs" />
|
||||||
|
<Compile Include="Model\Sabnzbd\SabQueue.cs" />
|
||||||
|
<Compile Include="Model\Sabnzbd\SabCategoryModel.cs" />
|
||||||
|
<Compile Include="Model\Sabnzbd\SabModel.cs" />
|
||||||
|
<Compile Include="Model\Sabnzbd\SabQueueItem.cs" />
|
||||||
<Compile Include="Model\Twitter\TwitterAuthorizationModel.cs" />
|
<Compile Include="Model\Twitter\TwitterAuthorizationModel.cs" />
|
||||||
<Compile Include="Model\UpdatePackage.cs" />
|
<Compile Include="Model\UpdatePackage.cs" />
|
||||||
<Compile Include="Model\Xbmc\ActionType.cs" />
|
<Compile Include="Model\Xbmc\ActionType.cs" />
|
||||||
|
@ -306,7 +310,7 @@
|
||||||
<Compile Include="Model\EpisodeParseResult.cs" />
|
<Compile Include="Model\EpisodeParseResult.cs" />
|
||||||
<Compile Include="Model\EpisodeSortingType.cs" />
|
<Compile Include="Model\EpisodeSortingType.cs" />
|
||||||
<Compile Include="Model\EpisodeStatusType.cs" />
|
<Compile Include="Model\EpisodeStatusType.cs" />
|
||||||
<Compile Include="Model\SabnzbdPriorityType.cs" />
|
<Compile Include="Model\Sabnzbd\SabPriorityType.cs" />
|
||||||
<Compile Include="Model\SeasonParseResult.cs" />
|
<Compile Include="Model\SeasonParseResult.cs" />
|
||||||
<Compile Include="Model\UpcomingEpisodesModel.cs" />
|
<Compile Include="Model\UpcomingEpisodesModel.cs" />
|
||||||
<Compile Include="Providers\Indexer\IndexerBase.cs" />
|
<Compile Include="Providers\Indexer\IndexerBase.cs" />
|
||||||
|
|
|
@ -7,6 +7,7 @@ using System.Net.NetworkInformation;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using NLog;
|
using NLog;
|
||||||
using NzbDrone.Core.Model;
|
using NzbDrone.Core.Model;
|
||||||
|
using NzbDrone.Core.Model.Sabnzbd;
|
||||||
|
|
||||||
namespace NzbDrone.Core.Providers
|
namespace NzbDrone.Core.Providers
|
||||||
{
|
{
|
||||||
|
@ -14,7 +15,7 @@ namespace NzbDrone.Core.Providers
|
||||||
{
|
{
|
||||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||||
|
|
||||||
public SabnzbdInfoModel AutoConfigureSab()
|
public SabModel AutoConfigureSab()
|
||||||
{
|
{
|
||||||
var info = GetConnectionList();
|
var info = GetConnectionList();
|
||||||
return FindApiKey(info);
|
return FindApiKey(info);
|
||||||
|
@ -41,13 +42,13 @@ namespace NzbDrone.Core.Providers
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
private SabnzbdInfoModel FindApiKey(List<ConnectionInfoModel> info)
|
private SabModel FindApiKey(List<ConnectionInfoModel> info)
|
||||||
{
|
{
|
||||||
foreach (var connection in info)
|
foreach (var connection in info)
|
||||||
{
|
{
|
||||||
var apiKey = GetApiKey(connection.Address, connection.Port);
|
var apiKey = GetApiKey(connection.Address, connection.Port);
|
||||||
if (!String.IsNullOrEmpty(apiKey))
|
if (!String.IsNullOrEmpty(apiKey))
|
||||||
return new SabnzbdInfoModel
|
return new SabModel
|
||||||
{
|
{
|
||||||
Host = connection.Address,
|
Host = connection.Address,
|
||||||
Port = connection.Port,
|
Port = connection.Port,
|
||||||
|
|
|
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||||
using Ninject;
|
using Ninject;
|
||||||
using NLog;
|
using NLog;
|
||||||
using NzbDrone.Core.Model;
|
using NzbDrone.Core.Model;
|
||||||
|
using NzbDrone.Core.Model.Sabnzbd;
|
||||||
using NzbDrone.Core.Repository;
|
using NzbDrone.Core.Repository;
|
||||||
using PetaPoco;
|
using PetaPoco;
|
||||||
|
|
||||||
|
@ -126,9 +127,9 @@ namespace NzbDrone.Core.Providers.Core
|
||||||
set { SetValue("SabTvCategory", value); }
|
set { SetValue("SabTvCategory", value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual SabnzbdPriorityType SabTvPriority
|
public virtual SabPriorityType SabTvPriority
|
||||||
{
|
{
|
||||||
get { return (SabnzbdPriorityType)GetValueInt("SabTvPriority"); }
|
get { return (SabPriorityType)GetValueInt("SabTvPriority"); }
|
||||||
|
|
||||||
set { SetValue("SabTvPriority", (int)value); }
|
set { SetValue("SabTvPriority", (int)value); }
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,9 +6,11 @@ using System.Text.RegularExpressions;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
using System.Web.Script.Serialization;
|
using System.Web.Script.Serialization;
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
|
using Newtonsoft.Json;
|
||||||
using Ninject;
|
using Ninject;
|
||||||
using NLog;
|
using NLog;
|
||||||
using NzbDrone.Core.Model;
|
using NzbDrone.Core.Model;
|
||||||
|
using NzbDrone.Core.Model.Sabnzbd;
|
||||||
using NzbDrone.Core.Providers.Core;
|
using NzbDrone.Core.Providers.Core;
|
||||||
using NzbDrone.Core.Repository.Quality;
|
using NzbDrone.Core.Repository.Quality;
|
||||||
|
|
||||||
|
@ -104,32 +106,26 @@ namespace NzbDrone.Core.Providers
|
||||||
return false; //Not in Queue
|
return false; //Not in Queue
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual List<SabQueueItem> GetQueue()
|
public virtual List<SabQueueItem> GetQueue(int start = 0, int limit = 0)
|
||||||
{
|
{
|
||||||
const string action = "mode=queue&output=xml";
|
string action = String.Format("mode=queue&output=json&start={0}&limit={1}", start, limit);
|
||||||
string request = GetSabRequest(action);
|
string request = GetSabRequest(action);
|
||||||
string response = _httpProvider.DownloadString(request);
|
string response = _httpProvider.DownloadString(request);
|
||||||
|
|
||||||
XDocument xDoc = XDocument.Parse(response);
|
CheckForError(response);
|
||||||
|
|
||||||
//If an Error Occurred, return)
|
return JsonConvert.DeserializeObject<SabQueue>(response).Items;
|
||||||
if (xDoc.Descendants("error").Count() != 0)
|
}
|
||||||
throw new ApplicationException(xDoc.Descendants("error").FirstOrDefault().Value);
|
|
||||||
|
|
||||||
if (!xDoc.Descendants("queue").Any())
|
public virtual List<SabHistoryItem> GetHistory(int start = 0, int limit = 0)
|
||||||
{
|
{
|
||||||
Logger.Debug("SAB Queue is empty.");
|
string action = String.Format("mode=history&output=json&start={0}&limit={1}", start, limit);
|
||||||
return new List<SabQueueItem>();
|
string request = GetSabRequest(action);
|
||||||
}
|
string response = _httpProvider.DownloadString(request);
|
||||||
|
|
||||||
var items = xDoc.Descendants("slot")
|
CheckForError(response);
|
||||||
.Select(s => new SabQueueItem
|
|
||||||
{
|
|
||||||
Title = s.Element("filename").Value,
|
|
||||||
Id = s.Element("nzo_id").Value
|
|
||||||
});
|
|
||||||
|
|
||||||
return items.ToList();
|
return JsonConvert.DeserializeObject<SabHistory>(response).Items;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual String GetSabTitle(EpisodeParseResult parseResult)
|
public virtual String GetSabTitle(EpisodeParseResult parseResult)
|
||||||
|
@ -178,7 +174,7 @@ namespace NzbDrone.Core.Providers
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual SabnzbdCategoryModel GetCategories(string host = null, int port = 0, string apiKey = null, string username = null, string password = null)
|
public virtual SabCategoryModel GetCategories(string host = null, int port = 0, string apiKey = null, string username = null, string password = null)
|
||||||
{
|
{
|
||||||
//Get saved values if any of these are defaults
|
//Get saved values if any of these are defaults
|
||||||
if (host == null)
|
if (host == null)
|
||||||
|
@ -204,9 +200,9 @@ namespace NzbDrone.Core.Providers
|
||||||
var response = _httpProvider.DownloadString(command);
|
var response = _httpProvider.DownloadString(command);
|
||||||
|
|
||||||
if (String.IsNullOrWhiteSpace(response))
|
if (String.IsNullOrWhiteSpace(response))
|
||||||
return new SabnzbdCategoryModel{categories = new List<string>()};
|
return new SabCategoryModel{categories = new List<string>()};
|
||||||
|
|
||||||
var deserialized = new JavaScriptSerializer().Deserialize<SabnzbdCategoryModel>(response);
|
var deserialized = JsonConvert.DeserializeObject<SabCategoryModel>(response);
|
||||||
|
|
||||||
return deserialized;
|
return deserialized;
|
||||||
}
|
}
|
||||||
|
@ -221,5 +217,13 @@ namespace NzbDrone.Core.Providers
|
||||||
_configProvider.SabUsername,
|
_configProvider.SabUsername,
|
||||||
_configProvider.SabPassword);
|
_configProvider.SabPassword);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void CheckForError(string response)
|
||||||
|
{
|
||||||
|
var result = JsonConvert.DeserializeObject<SabJsonError>(response);
|
||||||
|
|
||||||
|
if (result.Status.Equals("false", StringComparison.InvariantCultureIgnoreCase))
|
||||||
|
throw new ApplicationException(result.Error);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -3,6 +3,7 @@ using System.ComponentModel;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Web.Mvc;
|
using System.Web.Mvc;
|
||||||
using NzbDrone.Core.Model;
|
using NzbDrone.Core.Model;
|
||||||
|
using NzbDrone.Core.Model.Sabnzbd;
|
||||||
|
|
||||||
namespace NzbDrone.Web.Models
|
namespace NzbDrone.Web.Models
|
||||||
{
|
{
|
||||||
|
@ -50,7 +51,7 @@ namespace NzbDrone.Web.Models
|
||||||
[Required(ErrorMessage = "Please select a valid priority")]
|
[Required(ErrorMessage = "Please select a valid priority")]
|
||||||
[DisplayName("SABnzbd Priority")]
|
[DisplayName("SABnzbd Priority")]
|
||||||
[Description("Priority to use when sending NZBs to SABnzbd")]
|
[Description("Priority to use when sending NZBs to SABnzbd")]
|
||||||
public SabnzbdPriorityType SabTvPriority { get; set; }
|
public SabPriorityType SabTvPriority { get; set; }
|
||||||
|
|
||||||
[DisplayName("SABnzbd TV Directory")]
|
[DisplayName("SABnzbd TV Directory")]
|
||||||
[Description("The directory where SABnzbd downloads TV shows to (NzbDrone will sort them for you)")]
|
[Description("The directory where SABnzbd downloads TV shows to (NzbDrone will sort them for you)")]
|
||||||
|
|
Loading…
Reference in New Issue