From 20096937875d6fb5a6bcabbf1fff3af0ff8fd2e3 Mon Sep 17 00:00:00 2001 From: "kay.one" Date: Tue, 31 Jan 2012 17:37:36 -0800 Subject: [PATCH] Fix: Indexers that are enabled but aren't configured correctly will be skipped during rss/search --- Libraries/DeskMetrics/DeskMetrics.NET.dll | Bin 23040 -> 21504 bytes Libraries/DeskMetrics/DeskMetrics.NET.pdb | Bin 46592 -> 60928 bytes NzbDrone.Core.Test/IndexerTests.cs | 62 +++++++++------- .../ProviderTests/IndexerProviderTest.cs | 67 +++++++++++++++++- .../Providers/Indexer/IndexerBase.cs | 13 +++- NzbDrone.Core/Providers/Indexer/Newzbin.cs | 9 ++- NzbDrone.Core/Providers/Indexer/Newznab.cs | 5 ++ NzbDrone.Core/Providers/Indexer/NzbMatrix.cs | 9 +++ NzbDrone.Core/Providers/Indexer/NzbsOrg.cs | 9 +++ NzbDrone.Core/Providers/Indexer/NzbsRUs.cs | 9 +++ NzbDrone.Core/Providers/NewznzbProvider.cs | 7 +- NzbDrone/Providers/MonitoringProvider.cs | 7 +- 12 files changed, 159 insertions(+), 38 deletions(-) diff --git a/Libraries/DeskMetrics/DeskMetrics.NET.dll b/Libraries/DeskMetrics/DeskMetrics.NET.dll index 41126e811a2817031d332eae2c666cfad8a3fae6..23f6703d5c881fe8eaf572691dbd3a1d6c934730 100644 GIT binary patch literal 21504 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 literal 23040 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 H9fAK1yeF%* diff --git a/Libraries/DeskMetrics/DeskMetrics.NET.pdb b/Libraries/DeskMetrics/DeskMetrics.NET.pdb index 2fdd501fb82ce4fc94510851e765a51b77dfab94..058e84073447ec9159ab023af0ba33da8acb0cd4 100644 GIT binary patch literal 60928 zcmeI53!GJDx&QY@7(o~V#2bPR0s>x!VYoOb>Hsqc1pD?*XB(wu+^x z#ZfCLNh|Ym(lR5Zq~iS3v~#TJq-FoCL#8KEkD7naIr{&gp6~CytiAT0wdd|Ba$fk& zv(|c_=Y8J$^;v5#s;^Bpr1sbZT))N#P+QE0)D@{mlQ^6SRgu17YJTHBatO-6*((7d|mfuve%lEkj1=OHE5Cz@K<*EFn4 zbT_O_QfnLP39Q>WLms#EPMS8u3Se_ivxO(bnkfc;<`jajr6<}xbQK6(uK z2}|fTcF`%w|4n)Z!#^+;WD)3=&3Ahxj0M($k%KuO0{aXLL=f6h|zUAjH{@a9KDC&Lg z0LX#fD*wq#-hTe$e|r1$t4cOMv+2HXtC{t=10V;~|7l z^O)bpSHGksQlC2ja-g@$f5E1we?5Hkv!^fpeeJI&kALXv2SC#MqDT((R{8IFW!ovM zQ+GZz{izEdeEnZu)K*8II{N|qk7^Mg-3b?*U?^u8#P1HD!L zSAF%&58wUDn^)gGc5mbU>;I&!)IN6rKPZ}8Zc?pbpF0g&{* zD3SxcRsPQnzUkGYPx|WikCi_7%?qY?;+A7>KI~UtfASaW z=lV0X-2L8BxS?fcDP)8Jy1FbPg9jgR9|wC8!0R zJ+6%vjaa=cXj;{rY^;&hnGE1!9T)^A z0>S!h!44EwV4AkX8YNcBa&Ji@S>Ie2JeBGWGzW%ksVZap*J45lo+^Yc#-S(LyQz19 zHOlLz<|vcC&Zl`!O)Ak%#VZl*N{W{ylI!bh6RA!VYbwOr`LxV6hOJ6XH&c|yGPd(E zSlGO}o2qjSX*;iTnXG4Lx3qLqaisBW=e3)5d%i4gyQx2q$!lj)(BVbI%?Y;J1~+?vWM%3pw-|8pta0_?0Red_sVlWz5BVrYaaaf_4|K6W8wuvRCdQaR}#N- z*zF^<22!~wFI6@P;GN3X^A28CbhCJszv7i&m{)o4d2hM-9kaGl*@#zuVP2Ju=Y90S z3KOo%OuX_7^Qu01-U*{if1)_3o{3j}VP4fA&wJRdUmqi0)hqGJFU+gD=Xt9J?0-zW zs*~cCUzk_*)ANr1_Qh|BSM^!E@(c5--g@5iKUus-ysFRQm0y@wb=LFV^IwY&7q9BF zc;(ky<-e$O-$yGdpIJ9~>dU`9^o=L?hU1{N>*G-T$6i|S}z?4X#9>)-F)cZYCw9Om2ou;6~3>v7<7 zgVaaFjZL>0DQaW0t!r!v(}!V={RYhx&3pg;KRN5gAAkFzUoF@*eo((hzP_Vcev7brkFGOu>d}ejWux3W zqkcDEo#Evo>dbLLolzemr#dqY$Y#FJ^CAd3|GoRZye$OOJ>hG;Ald968B&zLBva6CPrQ;uUL7)~~Lo z=E_fM!hUu2t5%6eb-K8tI*oAu_(Mz7?~M)hd$YLz3mv2C@Nfl&Q$JZ^u1sA`YkG=} zZd#EV3>`$BE@Xrp#8dU13d5!$9^^qdj4{X@3eWM-kx=xf3wcYWkT+Hec{`=I+JB$@ z51D%ay51`PT>GEiYy0{8{~{&^`TBpgm0_GR`8k8e3OV)vPk`rj)8~4v{pZ^Mj8y+0 z-arm^22x#~2QZC9M)S$+c|frn11?nOj62;D^Y=#j+0~|gaBH@}Y~R0&+i~!V*ZUvq z`hNOa*Z232&0RLGWLyajzRvgYHhwp_KHkSq?>EZnT^sLig6Aul_%&;6>fAVzt;3Il zo0UPhu;I<8(ebd?ac*LDeX2E)G#hd@FLo2J-fI83_CM{;@zCqXL!Vb?y0UE1;Drm9 zHG?VZT{t zu3oXCzNx--VRLOw!xU2|I$tj~kJi}l(|Vdq>t2^uq7=9-q;)8YO_lLw<_-YF)SWuw z^(}FIU|3&om4B4|&nUM}J2FUJEOs;LJ2p3c!SiT={j$re zvC8^cv~H)x_j{XMWe(S|&r&WMa?6FI7ZsYB|C9dt$VtZY z`7)uM<}H)3Uv@gCcRL-Wt}l4rr6W*I+&)J-K9idco_D7Y@Ol;!p4>5(^ji7n?*Hy` zdcx`1N_rm2O%G#pQ{C)_=B7lq(&hWMavF@>LzbAo+tBx9JNi@?cH=(;S;=``%?H#q z7Y22~%m+&Sd_ex{N^|_pd|?XDK4<`KdftyU}o-@n>8+Gqqv`W6#>< zHER=1GfX|+PuvF*_q*Z!nMMBjKSVjC%b{Ge=AOlR`&`OnEI0*>2BRE3IarI&hu_XA z=QR!#jsCPs$3<&Jp9m+%X(pC331q^NhUtRz!LP z_r!znPIU1*HV9Agu=Bxq);v*j4b?Z*d4;dKt8f)p@(+3Y(H-TZ<}uVC^D!Ux*v#Ip z@^v^k3`oD`xkmu?ugdGAf%YEM=Zpe6Gt=0k{4WAy!0})#7zZ>~s!S$;iC_{q5m1J~ zcRMJ*zsYZJoJYLQ2N!?~!A0O=@L^B|E&-Q<6`&f_fR&&Y)PV$81y+MKpdMTX)`AAm z2%11M(3;_LkOV2v3f6)3;0mBNun~L&d=zW~SAvg$kApP03S14Y0h__K;1l4J;5u+U z_!PJS+z4(0tSe&7$z#k_WB&kd2DgA)0b{Smt=Q+mRzM$|W&gLF`$B5NFmfnd*J*z- zJ2u3F0a$fX^+E2ZM0Y6kXQpmX3hML@p4omo9`yaHpZ5T{S6+Q5t#JMoIn~prpsJI< zf~uZ9163LQ7OH%F7OFh^9aMSod#KX07rGt#2k5;}h5H@oAGwE+mg9)`Bru)&Uk#lB zCWDi}T(AtN7OOqky}N3zZQmF-?M8lTcgiEVKNI#q=u6N;q0*^5c!hhVMfYlRubcbP z=vC`dT#5{po;SEs7&;%6ON0GjXq>hMyu1And*!Kr?&*9ou^K2dw*q||;wkVZ7$XH&1s@y2o(0jtrt9Wq4S>!m7n@J@A}UFZBG2P&i}(@A$u2JZlj*QYnjSTXRRtX z`Gt99H{*Gie&_VBi&u6v;+0>R_q{s*FGW{>DqjD%-4nZ=?o)d*^oM5LxNVS~7pkw6 zQyo3ZT$ynL=iiKFwdCAJ4ZZKGo_8*wT zo4&^HtIT%|=SQJA6?6Q8%_fetD6fi3?K_miHv$>)dmilzXc|VdbX`{VzJvA!)b=y} zx%&boCTyLFYfknp=qH{2BalTjOLkqdA%-_Sh&@Z+BnF)3px!ahFZc{f35rEYqIHFg zIhJp1QN8K9EeCzIv;QHytiIan=)V1r){5SZCG7pA-^96t^MB9h_e~J`B(XI2wv(`EW zT%2u!|7oTXXSsm`SPgb%Hj8G#MxYH{dg|; z5I7CUzY<1&l1!_1me^h?{oKkCPx#5ogfOx(CAv*K5dwldmy>0)KT?c%h6=nZ3mN@%%-I4u|=X<}l zf4@H^k7FND@H+fia?bg` z+OZEKs{d!7vEXPQMhE@B=j+|JpTGaN`l9CygXyn3WB)_ag7H50{6FlMecspA^ZzRf zHTL^@;m@qJFD8ecz-=bK2Mu)X&6io1&;PUQh}Rc&{vYoDce+@pO?#&}_qG4d+IVK? z`+?B@moRr=&m!jg2|o@pWysqu!hYH9q9oP@n;0`6_HCj)`=4v5gFo|qkZ%*FAIoq5 z^Wp&=Pg#EJ9(iQuk=(L3G ze|$fG9cfvXo0iNA(`H}cW!4gD8o&Ar&+F5|zD3@&g#EJ9(iQuk?6mkfOO*Z3^`zzU z+_dDe|M7f29n2f@rX%c^osO>9|754b?;l0k|9pycT$h^;^1gHSKiO^4>&dnMQTgA1 zo^8FP$G4X#`ybAa3wGq{>9YM#cDlU2DElAIstX=#M_;b}kLT5TKvOg3Y_2Y3@59Mo z^QIjCHugVJ{-wxCo@Nv&&mMhX|C5o=-REm-|MR#@r?1Ch*~77P z&(3lChdXKLaw9A;e?Ltbe3Z`2EH8U(|C3$zucLwavRj}2ZP@?VHD&MF|JXHR@7e#@ zd0xi;NA^EiVI56_Ivx}S;Yqh$@5F<3khZhN0lAIHsjYm($WP0Xv-6f{Io8)kjx{i8m=VZn z&(+Q;;>JEnI>LEyBmA5l$j-&&1@#yC1zCBZFzi?!5A1=%VSEW0<=^d4rQ;40#?@`Y zuw!U+S=^6|%HkU?tZ$kyY6#^OTMMi1iJkf;phzVm(Ry>sdc8rPp&W?T{ zlm9xem~f))f9%*09gm+P zr+EC#$Y<)$vfBVUl-VN z>QsS8x9+ zYs~?w=?FG~TY+pv9|e2Co8Tzc{Uu-_r~_$`LPquoDo0p?W|vG{zAlk!rK%)q8u8Ow zhds6&9?bunQVAZLFf>mHhmkVE1W=b?+GzWkJ+y}*bbvM7pNM`n57{)RI)!D|CF{+5 z4(cnz&l@)`Nj7iTX#9Ad<=2$B;ylF6`loB_AhU+kd^s3*8VGwf3S^gZ8rO14f3+@f z>c81Xkj;BqnKl+W3OWut0XiO93OxZTTRNW6-|PK@vzWK({ey{M9LUUtk&S)S>2%G@ z&iNm6Wy9uab@3TOz?e;<~DLZPjr17>9KjmO}FfSY=7;` z+>Z-U_CL$eW%C+c?b!c#9<>!Mp(zvBp0f8Hy!}tcKX+fCt^H5hl(lUu1RV;ScLlKj z(SCulDIBJ2!=~-h)Uy0|Z>M$6#@0k%`zK$>IQCKw==M+a)%Td+;MKM4UDS7;64PAK zz7JIdoyu0rQYd{=T78`OnxJQJe?7Dus&_wTL+^mjg|dd#@7Jck4P5|b{i)xtP5&Ay z`QJe42GV<>w5Rkw=rZVQ(B;sB$=~y!heE}#cNQ+<{upQ#^aSW7&{Lq7Ld&2lpmU)$ z&=t^?(958;&~?xR^h)R|==;h3=SlMP8Sp$%{_Y0@$p_kfF#q4gwOn{^Hig^MVS=^I z+N>*mwd#~yKKnnbBYNF(Fl7~9x9Hn^a+)`sOl0Q+%Dv!HXjDAAvWBD{nX%lDA!(;e z?cBR+cgZhg>pcTGm47wYn?V1#9hY;{sCSa&!g*Rpnr;o}>AYl3W8#YD`kaD0!ul4c7S=SaUZ-VrcXau)@^LCWTsUp3&~;x}*RtAVBGGhiBGufm zPT%W>Kde(hcsqrA6c}!}CFZa4bD<9}XZ}Y%8eZ?;yKDWnc0ayNj&SXSXa%mX{pb0f z9(k3oZK(arh3gOFWr5n0$ztu9EKbc%)~;cTp|*8hvS;;G?+fPYV_Yt{F03zTi$Rx~ zRbL~&8Q4x5``Ul|?Z2z}sr`Z6GF(j=?hKb9OKra6o@!2>L%*8c-*i@=KT{kspsl_& z=zBC$pQ);~tqD_AdsJ^WMd)RVpkPm=-Z@D=V$m&qzAt|*Lf>WRdp1(vJhMb=s@>Qv zoqoQdu~V+l67!es(Sm)EI_EYgS@ng-j?R{)*QdOb3->n-==;yGz7N){ugNt19_cG* z;+U(CJ*k2?&x8JLQKGRqxp8@OYYkE9US0L$(tQ#77;g&-+v=kLyVsY#P8??eJLX2e zH!_I%va*_eCbP#xezS+9y`wqoBiVP)$Kh}1%h7W#HXxXDj}6`{wDa9~PSidJng;4 zW9QQ0tWQ+d)tlM)5wS@jKPSVY`*dvCETW0=zK&y>~g+O%crr>Y=DY#g>0X{t+1R8?UpbQnF?ct){d)B@ig zY`miTUG;h4_ZE^iXoVH4BGAp?HXvK8;G5YLj-TUmY2xe0+zL16CfvZ0Ed@7lr!rOf z`|;}m#}Up)_TdW3c@UI;C?Ea#Zv%3Y@qF)fx%+&y`l9oZX36+9Cg>~ln-X#=pFQN= z%b??LRA!$w`#jz1`knD6MEi%Xq~MQS2Km&3d4(@SUoQPsNVu>*(ovxOyBvL8o>wSn zzy5#OXfb=P?#hI3s)Ny!v;N-!7yGlu$v@xu&%*kq%f)2sg|h)%RMW)vhki>e`}y)U zI`=cj%$9#qeQmPYd`A9)`lhM$ZuXq6G}gg)+@sQMAsHad1X*4Y{BD^`ntDn@;ZH<{ynvSpEjSL8(d#w8okR? z`qBcOvGCv7(e!Lj!Rz$>+w)Fmk<%w~C_1Nxb#`-)-RtsYw_F_oF5K=JuM3uC>+1F% zd#=7moj&Fffum0<&>05*ZGQG(kIn1zd0FBLPW_&DhoSEaVST~wbJy0pxw>w1x=g3+ zl#M{wKYCrxZpgOsp6SvYUT(W3<}d5cf@i(1>}j=`lior6Mj$5{&!;nV2_t5xt{a-K zNF?Xhw7BhYGfs4Fj%eTI@cH7~&=5^BaF^rZ9k#p$8|fR(qv+|piSt6@tF?(_J-_Bz zH}dQ$ur}+tO$)&WX<3`tXyUK2u5)Ryb9RCa=DE!IjFSzEAKz7t=ey_HR~X0j5U8Hf zR@3J|sdH(`5*hXz?q{#zyI=zA$+6JPzJncOGj_wu6Tg=rTgzdbBKtX>9Ur54k2AcB z1716)jpm(Tc$WmcccD}18v~UK$3g4u!$Nx$j~oBE`?_8>FLfW@bAxd0957=S9u8OQ z;$eJo!l%v7-=cZ7);)~VYR_x?-{`q+h2fnL@Y;Se9xGD9aN#&mPK2A;AF%yibe>U8 z#CMSiS8E^JXT{AoI2Epj-V$BlbPj(4lyeyNg6z5bFrFT6zKeKF5I5To#m&4-a^bjL zX5u#2@Twl!ek9J1acoimZqj}W}5G*ijL%d6O?*nD0M{N(oD-%O0*pMG3X*kv18Et-sx&b zS3%SKC!U6GgkHtvCmg*IdJXr5#8kFj(`jw`)@(6*c7?Gr>@Jog7VA5=CU-+&$s{U&re^a1Fp&>heU=tI!O(1)Sw7iA;T2z`Wm)m7cMK!3=+{RXGL z&$1SbpoG6pc)d0ig9WF z_8&~22TH&aum)@a_kbtC^I#wyY!R3bszDlT1v|kW@CF!C$Q~Cc2i0H$xDD(8d%!-> z|4_cs2+F_`&Wl6Z$r}2( z%=f?a`wwy|hZ{-%JwR#t4*4T`uS??;7<6BGh^15LbaY?i@@t!;V^E;yGnpKVp2r{2 z@4DxwpilQpf#@XXU*r7$!^yqi^u0wvi0?n0|65MaRZjnRoP0g?LVVwMa${ULpLO!T zq2rSOXrDgkzui4w>Yf+6bia!mIcV}<^lgYoiStqy{!d)|f8+GN;NszJ760ty?|09y zb>VM!`kr?2{|6V|O)k9cF1%kjdA(?<__0s z={VZ)pW);eIJrw)d=@yq8W)cRF23J)`BvlNvChSNk<<5GC;vMaUZcy87o7fIxNsJ@ z=Q8e8e6DiOM>{^>{u#S$d|miob8b~8{N)WT=b!N_y2kqRn0;;g`**rF&V^O(ZZ%)qiBZBmdIo z!u%QP!6Si0nGJcyTOy-d9WX7-6R{ZlY!=e zOMv!s*ML@#2ATtJ1$TnI;ANn9s`?W}z0)`f=)J~ipd2g&7lJy_0ycr`z^&j8uoFBA z^#0PbU>|q`Xc46MQjP-SKna)y^gh6D@FaK!JP%$2`rh0?a%Ti60w;qqpz*f~tO2bc z4Q>Qm!JXg%unRl|_JWsz-p%Px{T>P?f@z=}=sleaK^5 z0fx{&9|gvNSztb>1`VLk{r%>EKbxj1v7eJY!4IDm4{_(&WvjB!mk(-3<{*CtUM4$H zdj>8&{oIR0;qd!8-YKVM!ry6l*(?kFfUB3We(ubBYDPxkAJR^o4sm*BkdAPi21mqc zu;V>7#Jh{|2fH5>^l`DzY+TCd+@A*QT^-n32iE z&pvnjH5vYWdHC&f$G$uS>Z_Polk0yj2IXFTw2>?!j+=cU$ATCBg*LEZ5ATuxdFLNBO#J@&cfpPnEq^jd!>M|<~jPX%(> zMrvNp`a8M0j9dldmDOkEjImiLp4Q*V(KdY^sU7z>?JUB0G$e2Ntb8f)^?j}8*H*r5 zziIuPOsH)utb^O>Zw~f-2zB1i*Ci8==x@9&Zwc+$=izIHSN%Wk%ZvZT+;&ZjTP(cPw=TOKD%yY}(c{zr~%WIeZh zPCnGOPo`h6^3iq9`a3z=w$JC=a^!OBob`8dp*F2O7OO9RKV*5FEN$A?H+=`i%C;RB zte=yij{A7-3&}){3)bJsQBQrDXrIRG$~P`p9xFSAvB<~si9j~fL;E&t{hUl_?4Cy3 zkNXe$xYGAB*3ZdMZ@iv6j7+wHjhC^0P9`)C$d08WyLHRsWJ7Z+wZo3=*0mO$P9M?d zdX@uP<6kjoN}OhR}@YZoQ>uvBfTxUy+|eX?0L!3&yJH76Tuj6v3v zsg-j|r_ZK7%C)cSsMrQ6z-nI4d2=2SAMBM- zu}mq9JI~QDk)NK+9xd0&uLb1uyP+MwyYL$Wa-G6_9E{5K;9h=z1mpAg>HIODpX@Xl zI@>sfDZ9*~Ha=FL>@f4CPqu6thjSf|W3s0ln(M*6{A52FbhaTL`8~^@?V)G>Qhu@> zl>Kq8(nH9WZ$Ik;>qRum7~n-^Hh9dmo1uq#O z4V?V+4z`!e_0#&@=S!}i-m%W-x2YY!>)P?VwH?1Z+VRsn(fQ({z4Cm1kGA8dcbxOd z>HXe(e*5tA6O-ILldVfWxj2QE&rk0p=kwEVP!X(gm~sV9Wvky!n(dyr;mO>|uNuG8 z^Z4nT?}z8{)A!qX*WI|>F!f#bd|~Pv>v%`X=^f~Ne)?AWk$L3w4RqfR=EgZ`1=IYb8!}G~KhTlVZ!qoS-N96I-Z<6}5#f&U)DnEVe*z5Ck zLk#lMH;422={v#s{Pb<#e17^C@Asqtm#a_TeD?9o_0xB?yq|9u3ZozY3Kdym?AL9# z!#mJ*jQ*MEp?bpuzJ9TT*oPZHcn7mS*Bc#!iAy0q`Tt3SrW`4N9e3<6U^03y244hE zgAwRF4_pr(2M5#9&poZGBH7%svUx+*+4Zee;U&g7mCLIlmx{%;sgC4=sY$9TYuVQ| z(d-pmH)L~GV_gd&cU{#9X}?111ZyaVA{IMc3n095>6&DlHAvUQBbF1L2_ScE&>5Lv zo?n$a&+nRa+ZlV;bVbm>fVEx3s2_d{k7VTi%o9gV_vD)UVyUWz=GDPnw1Hirh#)av1b@pe2Q5HT^t_S^h2x;Xnwh zf1us(+D(n|layA%P{B8WW}y8*RjfLo%CQQp25Ue)xD2cX4WJPm1$1sT5@-!s3?>6r zQq-ABs0yvhsfwz~sS2q|s4P*XRz(~I^bXZYpae_-rC=)134o4qw3V#$BjqQ@%4Q!* z>+)IP44`*w&jRIOHkbqEf(lRx=7F=pe6Rp~5PS$M1dG5qU@=$%mV$G^GO!$I5A}R- z0Z_SJ1TF?u;KSe&a4A>;szD7{32MP4p!(3~-ak2TIY~{vf0Emm(!Lz%%YnWe=*xk= L9O%mda^Qae;+=rI delta 8836 zcmaJ{3tUxIx?lTn&H)r02sk_r2#5rNATN0YC`Tc|Cnz?Uj{w0dCW?>L=AvvYub5iE z*TV`Qm^n7T=1z!OsSuiV$;vB}PFgmJ#FJ?Nnh26XQ{~n18WgDEBr=Xz^ zmBSwSCa;XGRkL4u$Qo%2+q3Zd;SvAS<~XD@kH~M&_j=9cZ~z4EnVv}Poii#oP25y| zwczv3EO0nD-|F?^g>xsmGsk7T{9n->J4ReNrZGn6TPZ)?OIo4)!hp7d0}6GWGq=0V z&R3`~wuNrZQK@EZg8NJGq!g%ab1YWe&kjQt=`4BQ=ieUo(IsVnf?IQmoBNHNC;bm! zc~4QuyJVKx^+lJ@+bhx=6!W&W=Ph(=o@!qB}~T0k8t2%rvvMV%$K} zsUpT3JkcV@K8p)7#X~QeF6Y>@yHK+f63mU3&5aacnx=~o8fB%meXWZi@Y$#fc{}_q zCM_4|nC#6i_wUpw>X={;^bE;dyl^3st+a)UN?f4j_@X-X~j*i z=cv+8OP86V!szNWU#cw#P*Uir0*A>iw2GSrzLqAqmPwWs&dLQVe5q!tS(!u+O^wB~ zbp^L?qv&Y?$~Gvxwba{Fdp2{lS zb#+FV(oU^2GFnvTTnY0zV9ryQ`m-JHCcl))!D~9!4WK zWjU+MHbqzupt^Gy7D<*|8SF*>rQ1bi^X+u|elMj*%QYS_Q}lcf<(gJ1obRQ4i(IS; zwjZBAN$I4Xy0rME=-#713vdK@54Zsc3)V4^4ip2+fd&gsh_m{V+w5yug!VU6d-#z|eE@M59EA88j-~S~z`W~0^bR~0Y*`BNNBhLfgDuM-zLVZ>@TaVD zFVjvdZ%+wB@7%$dew>EuM0-96b+Xc)eOXe8?QxIqk=y-_A(Rja>mDl&Yt8u;rJsgS zs)o`_R{C9Qjyzb5mL|xSYIyb|^>=Rtl#bAr$MXj17~WkSLT4p(-k>{=IR@z%2Nw4SA^?b(AmWcb!Kgw87HT(nZmzT80#8O|l}Tt({Nq18~jN{LN=w71JbvAd%N z=}wZtI5dRr8t8tZ>7Hv$8Kh^l8Gso$xXrcD`vH26U+LVAA#@&sj^aum?a7rZ+88aP zp`WO=(Z{+DVjiyaO0nPVP$sxHfQO#c!S5BLldB z;3kMgPVO56xO^ds6$_o*vjez%Es7E|oZO28xT6MHzB+ uL%zZk&9rAti`l}^h) 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 S9_{{(-4hvSny3A>$o~WJa!oh@ diff --git a/NzbDrone.Core.Test/IndexerTests.cs b/NzbDrone.Core.Test/IndexerTests.cs index 45ab32ad7..eafb494b3 100644 --- a/NzbDrone.Core.Test/IndexerTests.cs +++ b/NzbDrone.Core.Test/IndexerTests.cs @@ -30,8 +30,6 @@ public class IndexerTests : CoreTest [TestCase("nzbmatrix.xml", 2)] public void parse_feed_xml(string fileName, int warns) { - - Mocker.GetMock() .Setup(h => h.DownloadStream(It.IsAny(), It.IsAny())) .Returns(File.OpenRead(".\\Files\\Rss\\" + fileName)); @@ -58,10 +56,25 @@ public void parse_feed_xml(string fileName, int warns) ExceptionVerification.ExpectedWarns(warns); } + private void WithConfiguredIndexers() + { + Mocker.GetMock().SetupGet(c => c.NzbMatrixApiKey).Returns("MockedConfigValue"); + Mocker.GetMock().SetupGet(c => c.NzbMatrixUsername).Returns("MockedConfigValue"); + + Mocker.GetMock().SetupGet(c => c.NewzbinUsername).Returns("MockedConfigValue"); + Mocker.GetMock().SetupGet(c => c.NewzbinPassword).Returns("MockedConfigValue"); + + Mocker.GetMock().SetupGet(c => c.NzbsOrgHash).Returns("MockedConfigValue"); + Mocker.GetMock().SetupGet(c => c.NzbsOrgUId).Returns("MockedConfigValue"); + + Mocker.GetMock().SetupGet(c => c.NzbsrusHash).Returns("MockedConfigValue"); + Mocker.GetMock().SetupGet(c => c.NzbsrusUId).Returns("MockedConfigValue"); + } + [Test] public void newzbin_parses_languae() { - + WithConfiguredIndexers(); Mocker.GetMock() .Setup(h => h.DownloadStream(It.IsAny(), It.IsAny())) @@ -169,7 +182,7 @@ public void custome_parser_full_parse(string title) [Test] public void downloadFeed() { - Mocker.SetConstant(new HttpProvider()); + Mocker.Resolve(); var fakeSettings = Builder.CreateNew().Build(); Mocker.GetMock() @@ -198,7 +211,7 @@ public void nzbsorg_search_returns_valid_results(string title, int season, int e Mocker.Resolve(); var result = Mocker.Resolve().FetchEpisode(title, season, episode); - + Mark500Inconclusive(); result.Should().NotBeEmpty(); @@ -228,13 +241,8 @@ public void newzbin_search_returns_valid_results(string title, int season, int e [Test] public void nzbmatrix_search_returns_valid_results() { - Mocker.GetMock() - .SetupGet(c => c.NzbMatrixUsername) - .Returns(""); + WithConfiguredIndexers(); - Mocker.GetMock() - .SetupGet(c => c.NzbMatrixApiKey) - .Returns(""); Mocker.Resolve(); @@ -249,13 +257,7 @@ public void nzbmatrix_search_returns_valid_results() [Test] public void nzbmatrix_multi_word_search_returns_valid_results() { - Mocker.GetMock() - .SetupGet(c => c.NzbMatrixUsername) - .Returns(""); - - Mocker.GetMock() - .SetupGet(c => c.NzbMatrixApiKey) - .Returns(""); + WithConfiguredIndexers(); Mocker.Resolve(); @@ -280,6 +282,8 @@ public void get_query_title(string raw, string clean) [Test] public void size_newzbin() { + WithConfiguredIndexers(); + Mocker.GetMock() .Setup(h => h.DownloadStream(It.IsAny(), It.IsAny())) .Returns(File.OpenRead(".\\Files\\Rss\\SizeParsing\\newzbin.xml")); @@ -294,8 +298,7 @@ public void size_newzbin() [Test] public void size_nzbmatrix() { - //Setup - + WithConfiguredIndexers(); Mocker.GetMock() .Setup(h => h.DownloadStream(It.IsAny(), It.IsAny())) @@ -311,8 +314,7 @@ public void size_nzbmatrix() [Test] public void size_nzbsorg() { - //Setup - + WithConfiguredIndexers(); Mocker.GetMock() .Setup(h => h.DownloadStream(It.IsAny(), It.IsAny())) @@ -328,8 +330,7 @@ public void size_nzbsorg() [Test] public void size_nzbsrus() { - //Setup - + WithConfiguredIndexers(); Mocker.GetMock() .Setup(h => h.DownloadStream(It.IsAny(), It.IsAny())) @@ -359,6 +360,8 @@ public void Server_Unavailable_503_should_not_log_exception() [Test] public void none_503_server_error_should_still_log_error() { + WithConfiguredIndexers(); + Mocker.GetMock() .Setup(h => h.DownloadStream(It.IsAny(), It.IsAny())) .Throws(new WebException("some other server error")); @@ -369,6 +372,17 @@ public void none_503_server_error_should_still_log_error() ExceptionVerification.ExpectedWarns(0); } + [Test] + public void indexer_that_isnt_configured_shouldnt_make_an_http_call() + { + Mocker.Resolve().FetchRss(); + + Mocker.GetMock() + .Verify(c => c.DownloadFile(It.IsAny(), It.IsAny()), Times.Never()); + + ExceptionVerification.ExpectedWarns(1); + } + private static void Mark500Inconclusive() { ExceptionVerification.MarkInconclusive(typeof(WebException)); diff --git a/NzbDrone.Core.Test/ProviderTests/IndexerProviderTest.cs b/NzbDrone.Core.Test/ProviderTests/IndexerProviderTest.cs index 39ff34cb8..b84bd2051 100644 --- a/NzbDrone.Core.Test/ProviderTests/IndexerProviderTest.cs +++ b/NzbDrone.Core.Test/ProviderTests/IndexerProviderTest.cs @@ -23,7 +23,7 @@ public class IndexerProviderTest : CoreTest [Test] public void Init_indexer_test() { - + Mocker.SetConstant(TestDbHelper.GetEmptyDatabase()); @@ -45,8 +45,6 @@ public void Init_indexer_test() [Test] public void Init_indexer_with_disabled_job() { - - Mocker.SetConstant(TestDbHelper.GetEmptyDatabase()); //Act @@ -75,6 +73,11 @@ protected override string[] Urls get { return new[] { "www.google.com" }; } } + public override bool IsConfigured + { + get { return true; } + } + protected override NetworkCredential Credentials { get { return null; } @@ -129,6 +132,11 @@ protected override string[] Urls get { return new[] { "http://rss.nzbmatrix.com/rss.php?cat=TV" }; } } + public override bool IsConfigured + { + get { return true; } + } + protected override IList GetEpisodeSearchUrls(string seriesTitle, int seasonNumber, int episodeNumber) { throw new NotImplementedException(); @@ -172,6 +180,11 @@ protected override string[] Urls get { return new[] { "http://www.google.com" }; } } + public override bool IsConfigured + { + get { return true; } + } + protected override IList GetEpisodeSearchUrls(string seriesTitle, int seasonNumber, int episodeNumber) { throw new NotImplementedException(); @@ -205,4 +218,52 @@ protected override EpisodeParseResult CustomParser(SyndicationItem item, Episode } } + public class NotConfiguredIndexer : IndexerBase + { + public NotConfiguredIndexer(HttpProvider httpProvider, ConfigProvider configProvider) + : base(httpProvider, configProvider) + { + } + + public override string Name + { + get { return "NotConfiguredIndexer"; } + } + + protected override string[] Urls + { + get { return new[] { "http://rss.nzbmatrix.com/rss.php?cat=TV" }; } + } + + public override bool IsConfigured + { + get { return false; } + } + + protected override IList GetEpisodeSearchUrls(string seriesTitle, int seasonNumber, int episodeNumber) + { + throw new NotImplementedException(); + } + + protected override IList GetDailyEpisodeSearchUrls(string seriesTitle, DateTime date) + { + throw new NotImplementedException(); + } + + protected override IList GetSeasonSearchUrls(string seriesTitle, int seasonNumber) + { + throw new NotImplementedException(); + } + + protected override IList GetPartialSeasonSearchUrls(string seriesTitle, int seasonNumber, int episodeWildcard) + { + throw new NotImplementedException(); + } + + protected override string NzbDownloadUrl(SyndicationItem item) + { + throw new NotImplementedException(); + } + } + } \ No newline at end of file diff --git a/NzbDrone.Core/Providers/Indexer/IndexerBase.cs b/NzbDrone.Core/Providers/Indexer/IndexerBase.cs index 3b4db2811..576b41356 100644 --- a/NzbDrone.Core/Providers/Indexer/IndexerBase.cs +++ b/NzbDrone.Core/Providers/Indexer/IndexerBase.cs @@ -44,6 +44,9 @@ public IndexerBase() protected abstract string[] Urls { get; } + public abstract bool IsConfigured { get; } + + /// /// Gets the credential. /// @@ -147,6 +150,12 @@ private List Fetch(IEnumerable urls) { var result = new List(); + if (!IsConfigured) + { + _logger.Warn("Indexer '{0}' isn't configured correctly. please reconfigure the indexer in settings page.", Name); + return result; + } + foreach (var url in urls) { try @@ -178,11 +187,11 @@ private List Fetch(IEnumerable urls) } } - catch(WebException webException) + catch (WebException webException) { if (webException.Message.Contains("503")) { - _logger.Warn("{0} server is currently unbelievable. {1}", Name, webException.Message); + _logger.Warn("{0} server is currently unbelievable. {1}", Name, webException.Message); } else { diff --git a/NzbDrone.Core/Providers/Indexer/Newzbin.cs b/NzbDrone.Core/Providers/Indexer/Newzbin.cs index 7b6196a69..f925fc4e9 100644 --- a/NzbDrone.Core/Providers/Indexer/Newzbin.cs +++ b/NzbDrone.Core/Providers/Indexer/Newzbin.cs @@ -30,7 +30,14 @@ protected override string[] Urls } } - + public override bool IsConfigured + { + get + { + return !string.IsNullOrWhiteSpace(_configProvider.NewzbinUsername) && + !string.IsNullOrWhiteSpace(_configProvider.NewzbinPassword); + } + } protected override NetworkCredential Credentials diff --git a/NzbDrone.Core/Providers/Indexer/Newznab.cs b/NzbDrone.Core/Providers/Indexer/Newznab.cs index a364ef743..581ed42bb 100644 --- a/NzbDrone.Core/Providers/Indexer/Newznab.cs +++ b/NzbDrone.Core/Providers/Indexer/Newznab.cs @@ -24,6 +24,11 @@ protected override string[] Urls get { return GetUrls(); } } + public override bool IsConfigured + { + get { return true; } + } + protected override IList GetEpisodeSearchUrls(string seriesTitle, int seasonNumber, int episodeNumber) { var searchUrls = new List(); diff --git a/NzbDrone.Core/Providers/Indexer/NzbMatrix.cs b/NzbDrone.Core/Providers/Indexer/NzbMatrix.cs index b6de2c9e7..14f6de51b 100644 --- a/NzbDrone.Core/Providers/Indexer/NzbMatrix.cs +++ b/NzbDrone.Core/Providers/Indexer/NzbMatrix.cs @@ -30,6 +30,15 @@ protected override string[] Urls } } + public override bool IsConfigured + { + get + { + return !string.IsNullOrWhiteSpace(_configProvider.NzbMatrixUsername) && + !string.IsNullOrWhiteSpace(_configProvider.NzbMatrixApiKey); + } + } + protected override IList GetEpisodeSearchUrls(string seriesTitle, int seasonNumber, int episodeNumber) { var searchUrls = new List(); diff --git a/NzbDrone.Core/Providers/Indexer/NzbsOrg.cs b/NzbDrone.Core/Providers/Indexer/NzbsOrg.cs index fef01d9e7..fc8fa0d87 100644 --- a/NzbDrone.Core/Providers/Indexer/NzbsOrg.cs +++ b/NzbDrone.Core/Providers/Indexer/NzbsOrg.cs @@ -28,6 +28,15 @@ protected override string[] Urls } } + public override bool IsConfigured + { + get + { + return !string.IsNullOrWhiteSpace(_configProvider.NzbsOrgUId) && + !string.IsNullOrWhiteSpace(_configProvider.NzbsOrgHash); + } + } + protected override IList GetEpisodeSearchUrls(string seriesTitle, int seasonNumber, int episodeNumber) { var searchUrls = new List(); diff --git a/NzbDrone.Core/Providers/Indexer/NzbsRUs.cs b/NzbDrone.Core/Providers/Indexer/NzbsRUs.cs index c621c7b7e..61d43b58e 100644 --- a/NzbDrone.Core/Providers/Indexer/NzbsRUs.cs +++ b/NzbDrone.Core/Providers/Indexer/NzbsRUs.cs @@ -29,6 +29,15 @@ protected override string[] Urls } } + public override bool IsConfigured + { + get + { + return !string.IsNullOrWhiteSpace(_configProvider.NzbsrusUId) && + !string.IsNullOrWhiteSpace(_configProvider.NzbsrusHash); + } + } + public override string Name { get { return "NzbsRUs"; } diff --git a/NzbDrone.Core/Providers/NewznzbProvider.cs b/NzbDrone.Core/Providers/NewznzbProvider.cs index 820d5806b..5741a258a 100644 --- a/NzbDrone.Core/Providers/NewznzbProvider.cs +++ b/NzbDrone.Core/Providers/NewznzbProvider.cs @@ -47,11 +47,8 @@ public virtual int Save(NewznabDefinition definition) return Convert.ToInt32(_database.Insert(definition)); } - else - { - Logger.Debug("Updating Newznab definitions for {0}", definition.Name); - return _database.Update(definition); - } + Logger.Debug("Updating Newznab definitions for {0}", definition.Name); + return _database.Update(definition); } public virtual void SaveAll(IEnumerable definitions) diff --git a/NzbDrone/Providers/MonitoringProvider.cs b/NzbDrone/Providers/MonitoringProvider.cs index cbf1adc2b..97070022f 100644 --- a/NzbDrone/Providers/MonitoringProvider.cs +++ b/NzbDrone/Providers/MonitoringProvider.cs @@ -47,7 +47,7 @@ public void Start() prioCheckTimer.Elapsed += EnsurePriority; prioCheckTimer.Enabled = true; - _pingTimer = new Timer(120000) { AutoReset = true }; + _pingTimer = new Timer(180000) { AutoReset = true }; _pingTimer.Elapsed += (PingServer); _pingTimer.Start(); } @@ -94,9 +94,10 @@ public virtual void PingServer(object sender, ElapsedEventArgs e) { _pingFailCounter++; Logger.ErrorException("Application pool is not responding. Count " + _pingFailCounter, ex); - if (_pingFailCounter > 2) + if (_pingFailCounter > 4) { - _iisProvider.RestartServer(); + _pingFailCounter = 0; + //_iisProvider.RestartServer(); } } }