From d838636f2a4b81a1ac52a836a3b1aa4f5d8ed360 Mon Sep 17 00:00:00 2001 From: Rogiel Sulzbach Date: Sat, 5 May 2012 19:45:08 -0300 Subject: [PATCH] Implements ifile.it upload service --- httpchannel-api/pom.xml | 3 + .../helper/AuthenticationServices.java | 2 +- .../src/main/resources/META-INF/MANIFEST.MF | 23 +++ .../com/captchatrader/CaptchaTrader.class | Bin 0 -> 8492 bytes .../com/captchatrader/ResolvedCaptcha.class | Bin 0 -> 2731 bytes .../ApplicationKeyDisabledException.class | Bin 0 -> 1625 bytes .../exception/CaptchaTraderException.class | Bin 0 -> 1498 bytes .../exception/ConnectionLimitException.class | Bin 0 -> 1597 bytes .../exception/DailyLimitException.class | Bin 0 -> 1577 bytes .../exception/ImageTooLargeException.class | Bin 0 -> 1589 bytes .../IncorrectRespondsException.class | Bin 0 -> 1605 bytes .../InsuficientCreditsException.class | Bin 0 -> 1609 bytes .../exception/InternalErrorException.class | Bin 0 -> 1589 bytes .../InvalidApplicationKeyException.class | Bin 0 -> 1621 bytes .../InvalidParametersException.class | Bin 0 -> 1605 bytes .../exception/InvalidTicketException.class | Bin 0 -> 1589 bytes .../exception/InvalidURLException.class | Bin 0 -> 1577 bytes .../exception/InvalidUserException.class | Bin 0 -> 1581 bytes .../exception/NotAnImageException.class | Bin 0 -> 1577 bytes .../exception/SubmissionErrorException.class | Bin 0 -> 1597 bytes .../exception/UserNotValidatedException.class | Bin 0 -> 1601 bytes .../captcha/impl/CaptchaTraderService.class | Bin 0 -> 7014 bytes .../com/captchatrader/CaptchaTraderTest.class | Bin 0 -> 2343 bytes .../service/fourshared/FourSharedService.java | 6 +- .../service/filesonic/FileSonicService.java | 2 +- .../httpchannel-service-hotfile/pom.xml | 25 +-- .../service/hotfile/HotFileService.java | 2 +- .../httpchannel-service-ifileit/pom.xml | 14 ++ .../service/ifile/IFileService.java | 160 ++++++++++++++++++ .../service/ifile/IFileServiceTest.java | 70 ++++++++ .../service/megaupload/MegaUploadService.java | 2 +- .../multiupload/MultiUploadService.java | 4 +- .../service/uploadhere/UploadHereService.java | 2 +- .../service/uploadking/UploadKingService.java | 2 +- .../service/wupload/WUploadService.java | 2 +- httpchannel-service/pom.xml | 1 + .../captcha/ReCaptchaExtractor.java | 1 + .../rogiel/httpchannel/http/HttpContext.java | 29 +++- .../http/PostMultipartRequest.java | 11 +- .../rogiel/httpchannel/http/PostRequest.java | 4 + .../com/rogiel/httpchannel/http/Request.java | 11 ++ .../service/AbstractAccountDetails.java | 3 + .../service/AbstractAuthenticator.java | 2 + .../service/AbstractDownloader.java | 4 + .../service/AbstractHttpDownloader.java | 3 + .../service/AbstractHttpService.java | 2 + .../httpchannel/service/AbstractUploader.java | 2 + 47 files changed, 366 insertions(+), 26 deletions(-) create mode 100644 httpchannel-api/src/main/resources/META-INF/MANIFEST.MF create mode 100644 httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/CaptchaTrader.class create mode 100644 httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/ResolvedCaptcha.class create mode 100644 httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/ApplicationKeyDisabledException.class create mode 100644 httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/CaptchaTraderException.class create mode 100644 httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/ConnectionLimitException.class create mode 100644 httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/DailyLimitException.class create mode 100644 httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/ImageTooLargeException.class create mode 100644 httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/IncorrectRespondsException.class create mode 100644 httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/InsuficientCreditsException.class create mode 100644 httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/InternalErrorException.class create mode 100644 httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/InvalidApplicationKeyException.class create mode 100644 httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/InvalidParametersException.class create mode 100644 httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/InvalidTicketException.class create mode 100644 httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/InvalidURLException.class create mode 100644 httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/InvalidUserException.class create mode 100644 httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/NotAnImageException.class create mode 100644 httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/SubmissionErrorException.class create mode 100644 httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/UserNotValidatedException.class create mode 100644 httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/rogiel/httpchannel/captcha/impl/CaptchaTraderService.class create mode 100644 httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/test/java/com/captchatrader/CaptchaTraderTest.class create mode 100644 httpchannel-service/httpchannel-service-ifileit/pom.xml create mode 100644 httpchannel-service/httpchannel-service-ifileit/src/main/java/com/rogiel/httpchannel/service/ifile/IFileService.java create mode 100644 httpchannel-service/httpchannel-service-ifileit/src/test/java/com/rogiel/httpchannel/service/ifile/IFileServiceTest.java diff --git a/httpchannel-api/pom.xml b/httpchannel-api/pom.xml index ccaad59..8c15270 100644 --- a/httpchannel-api/pom.xml +++ b/httpchannel-api/pom.xml @@ -8,6 +8,9 @@ .. httpchannel-api + jar + + HttpChannel/API Module that defines the HttpChannel API. HttpChannels abstract complex download and upload steps into a simple and easy to use NIO Channel. NIO Channels can be wrapped into an InputStream or OutputStream and used in any way you may find possible to. Aside from that, Channels can be used natively in most next-gen libraries, meaning that you don't even need to wrap anything, just start writing or reading data to or from the channel wth a ByteBuffer. diff --git a/httpchannel-api/src/main/java/com/rogiel/httpchannel/service/helper/AuthenticationServices.java b/httpchannel-api/src/main/java/com/rogiel/httpchannel/service/helper/AuthenticationServices.java index 58a737f..7f40cbe 100644 --- a/httpchannel-api/src/main/java/com/rogiel/httpchannel/service/helper/AuthenticationServices.java +++ b/httpchannel-api/src/main/java/com/rogiel/httpchannel/service/helper/AuthenticationServices.java @@ -20,8 +20,8 @@ package com.rogiel.httpchannel.service.helper; import com.rogiel.httpchannel.service.AuthenticationService; import com.rogiel.httpchannel.service.Authenticator; -import com.rogiel.httpchannel.service.Authenticator.AuthenticatorConfiguration; import com.rogiel.httpchannel.service.Credential; +import com.rogiel.httpchannel.service.Authenticator.AuthenticatorConfiguration; /** * @author Rogiel diff --git a/httpchannel-api/src/main/resources/META-INF/MANIFEST.MF b/httpchannel-api/src/main/resources/META-INF/MANIFEST.MF new file mode 100644 index 0000000..3aa50d1 --- /dev/null +++ b/httpchannel-api/src/main/resources/META-INF/MANIFEST.MF @@ -0,0 +1,23 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: HttpChannel API +Bundle-SymbolicName: com.rogiel.httpchannel;singleton:=true +Bundle-Version: 1.0.0 +Export-Package: com.rogiel.httpchannel.captcha, + com.rogiel.httpchannel.captcha.exception;uses:="com.rogiel.httpchannel.service.exception", + com.rogiel.httpchannel.channel;uses:="com.rogiel.httpchannel.service", + com.rogiel.httpchannel.osgi;uses:="org.osgi.framework", + com.rogiel.httpchannel.service;uses:="com.rogiel.httpchannel.captcha,org.slf4j", + com.rogiel.httpchannel.service.config;uses:="com.rogiel.httpchannel.service", + com.rogiel.httpchannel.service.exception, + com.rogiel.httpchannel.service.helper;uses:="com.rogiel.httpchannel.service" +Bundle-Activator: com.rogiel.httpchannel.osgi.Activator +Import-Package: com.rogiel.httpchannel.captcha, + com.rogiel.httpchannel.captcha.exception, + com.rogiel.httpchannel.channel, + com.rogiel.httpchannel.osgi, + com.rogiel.httpchannel.service, + com.rogiel.httpchannel.service.config, + com.rogiel.httpchannel.service.exception, + com.rogiel.httpchannel.service.helper, org.osgi.framework + diff --git a/httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/CaptchaTrader.class b/httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/CaptchaTrader.class new file mode 100644 index 0000000000000000000000000000000000000000..c9ec1f59f8d1325968e083c8711906607cf551e9 GIT binary patch literal 8492 zcmeHMTXWnr6h6+)yW7x&^g_8SDVJSncY&5dn-ZY8v}rd@$aUzO;#IOry_S*Xko*Gv z0uMa$#uG0v12gd6pTdt|II_1{Z&!((P7;z%UMyQa`gC;8k@QLD$-jU61pwDz#)d8n zX6s7%PMvxlbFVtoSNQ(4RFc-1tOU}jG${8f8+4Oa9MPyW<(mJ;<5r82v<*EL3`UYJ z_0}u1s~gNw7W6qTXCA)vSMOnu*nzh1lGq4Ti5i4TA55tRdKK?r}9{!B{au>ui~& zrnHR8j*A+z;hY5nt==c46fy@FtigYlJjnv#Zn7FdGx^+&^d-I&t1fE z;tgL&MIsq4h=bvPJ+CtIbUe>3<}sBCE>zr26BKg&R3whCHh&zMT{^-i%^jx=^a^@v zB}34j*wAQgUk1MtB?u*I+h>LR1Y4t_t1`>CcEA+i%!0Ugra;A8=aC6bH}o#f6$wIL z&kNxNN`{USlEg%zSRyH@>KuyG^*aDIPOIaeu0}BNXz-Zn(!z zp(A#;dHh)%)y63&w;bkc=9dzu)3aG6&59)_Z@Pq@*K-1+vy&|)fijBC;7Y-LD%GT? zxY|wu-Jf*q^*f@L2D^{&IN@kjp6a-GK}vB%Rd^;&nhbypBAM)dIwd+zB}p?M>XbP0 zXxGQY22*uWBkN2}PvE||CPgDU25NRe=9>r2W>nxoZH>u58$_QJ8$1Z`NE{In5=U1d zf3VBIA&29`u(4`n&PktV5=xkoZ80ZQtf<%ICCTU6cOeVZv!-nu*V@iWw+o`F-jb^XnSiE zS9bZei@rB4m`m4pf20|?EoMW#05g7UhqYONnza&z@otW4n@usAgD)(Y%Ai@4?%bPp z;XGXsp>)_3kBE0$mr*XzhObdbQ>HipD^_8(D~ot;@|ky1+U_>4`l$(!E5;JkKPOLI=q2j8sW_ZLJ!vM z7vU{<8~Y*HvJcB)xV)oJ*ACjd27NY+`n(UtUC^|ZV%%LUAHtPg(6mKjw5tZR zpA2XK75E6POt57S+H4p;#kvIB`>2(hGOkmYV}5L84E9kWeX7rIrdBD)G3nx5>7)*II8v`y2cW z5=ijQKYa}7HSB+5F4UY-GvB!F>VN0*k$MwIztghQaZaqMziE8(~COOg5EN3L-2T=+u2AaG!vIe}5fqbs!?0{K>({0_i)}iL$gzTT;55`8B$$q!*_|q#~MPhP!vU3L_Fx&UhjWv694c zO9KbQ%yP=WVEq*7{uf6xVG61hFkzO!yp>(mrZ+HY-gLbdS51b6DyqcNX6_DCBAWLX z^SUEK0^4U$eNO}y%Y32D_4+FUb5?DXWC^YjaK|XFXO@5j%1G#C|LH08m>WG%6IS#H zm;-@?1}qX-$X1U5w+T!RiKGN~3H%)66xsI9gBl4KSc#L%G`D3}+5EML1UGj=5%Ftf zz=PCpND^HFmCYolo0$6{ECL1we}^WZ3I!QpF0_R9%ov+_m|dIGOXp`KC;Sz1rM<=;T=cpYQF*CdOq3! literal 0 HcmV?d00001 diff --git a/httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/ApplicationKeyDisabledException.class b/httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/ApplicationKeyDisabledException.class new file mode 100644 index 0000000000000000000000000000000000000000..7120654515278a753cde49514bffd6f1ecd5da4f GIT binary patch literal 1625 zcmd5+OK%e~5FV#((uSlh3FT2?zi$0Cv@jrxB5eLRtvd1Z9;GRqPrMfiS;ryI(NPJ-Rd!F~y*8FVf) z;Ce6NcAn@k4ueI9R*7U6t)pCawl)~BHw>!lMmsOG-xbLb&QKY`!x$8wE3Nzs22-n# zb{R~sn=Y1Mp20%SIT89G+O*c#Sy*K3=Z?1MOmd7}PUXl{l2hiHHN-b{&v<#R9V73e zOoSz;OvpoVfV@H8%|D9Q92T#^y9OQC#`9EA7q}+`Jjqb{QG~J8Yf`(KpQ6J|V_M0T<4Q{^r*a;(FVAgztMmbvq$HxyK|U;zH(c-l8sb^= zDTrc>-+v2MhAPx5P=-2#rPbD%I(iwe1@$bnl*ac*X$NgPaAi-i_<<< zjzQWQ+tSOsfolxrS6jm_j?qspPAcKnh=yJd zgjj<649>Jtf)%>a=S$6?@=iHNnroA^9IOD{-f){?8D^kJbBU}1%#uaP!4(=SwDOd^ z7|rFcP~EF7e1@yvbH8gehEo7_Sfa7g^MdPegRFp1r*VK#ptZ>nZvHdEtr3L4cJdsS dM-ajva597`xJ_pYa0l+v4A7vrNcKJ8zX1{kzfS-F literal 0 HcmV?d00001 diff --git a/httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/CaptchaTraderException.class b/httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/CaptchaTraderException.class new file mode 100644 index 0000000000000000000000000000000000000000..92a631d9a99eec98e1c82565638c270cdcd3f92e GIT binary patch literal 1498 zcmd5+%We}f6g^HKlMLyDl=5hKxB;ZFAhUoKMQlP5MFAE~Bhj7XSdGiX9(ml-ei;%- zu;&N(8^m?eq%Eo%RoxINcCP2#Gv^-Pn_qvv{Q&R`k0TTqIz8_**%QX7^r;k?r{AO9 zJJD4x$(>C4LYrhy9Ee2PesYXEey$Fs%DlEFX$AspFt>MEMW?yQf{VRs4+LJcJbi;O4gn5RA z6YdS?tSe%XvESRqsobUqs>?}prc)6#^32&zs`~j09+z4@#k)$T!VxGF^0U}gyh`Z$ znF{OU3ah+pRnCp|yf4Tq?ukJiW>n8v3_FM4BK8XL(aT@$^!qxiTq zZ@J+9C{uB1%R6m$CxBW#XTJz?U;^&HC5thKN*OVh7?x|zldB&pUJtFY(9}kK*zb3g zYlT`FDorb?)dV#h#m9%!zNd4BZgb*&U3mu98Rl!vvH1g){2cZFK&lr*c6LIw@s{0p zQoYfk(AD#2aL{LD*rt&*T{`#5__ta);biY9!UKkrHjA)E;aF>ghiArj=rcq4z0PxL zxE3{Ejy2F+hB?IwW-v>8L{R}nibx`^(ORaH=Y(Rk$KNscsj~1D*MAOhH)su6z!H{e zEe}z+iCYu}h9z1@3ZKm+9`q!R7sL^#dZ92Qw=@lHberrX0pTxmMrZWy zzvJEUOG`^-1cs4=JG04t*>B(XzL%H%@$1Vs08j8RL4l#&4I!6ZVT{TiOOXe99?rpu zwsNU=GVKX%(huT5q|)}%QJgYXlv4SOE5A%Hgr#ijp2&~lMJmZtu$cT>@ytI zVOa3WX_4(H=ZVGk=1T_lhGCAF`5;W#5!t?)qW7^a_Vqr(e^iQ1zbhRJo?Rte@A z%Kc_DVLIuCbJopZfw7<4#wl;J1J&lFL#{Iso8`H)txWa&GhUo+b`@_cnF&WpxsV@4 zNAW6U*Z)whK2oj9+g5pQY~VdX^7B9l>M$oE#}O`6uTJ|^kNZ@Q)a&O}9I)(a<%E;n zBX0NlMZ;09_*r|%wddMM(oy@MOeoH71*c7iOY#nJZz(>~CRi?bM2m%-{Uk`83-bP3 zup;JADWQl(hNW8L#1;d_Ytc64hBoTmey^omGxo|*X;?`%6l6wdIM;>HCmG+Z=Pv>!IfoJYYC+ zM}k#4yr;!wD81F*lgpZ9CXZFnL5&9&%b3D6%?U*X%uqzEaE-T7PK|Vw$SNGO?P$J8LkzOXK4P*B3pfu^&YuV z9fn1(oEB+AIZs^ncefeXYliZcH9iOv8X`SZ)6{yr7{knSZFG3SFtzch!I0mwEmgog z!$PmmRG4K(;fN~Xe5QYPdl z(N?@d+10-UtBwS#@Rn7c8yk36kn%hbf;!HW4C4qFs#m2gs>Us zEm#p{ER|5iGQ-M7?bH!{#+%VG3pH)j+rw^Cxq9rCVX0;%IZ%)fDIP55Lq~fCQM+&( zuXfTl8Rj=?BjtM(`2^}`QYz=C92~?}i+lFaN%d04E>|b`q-Q*mYIn>luZAWo-~q#_ zCkj}n(|T4?hSD4DJ$b867V=mJoy>Srv4&~P&|IJ>hgph<5U$Z!qLrtV#b_>mL;2m( z!WUfs(aXC*WBdwO#tMz4eim-x7DW+ZnZ_YPj@B-ZuzF>L+hYi^+skuU8$*bHx62_+ U;SPP1!(H5?8K}@bL-Bp^Kbu&r6951J literal 0 HcmV?d00001 diff --git a/httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/ImageTooLargeException.class b/httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/ImageTooLargeException.class new file mode 100644 index 0000000000000000000000000000000000000000..f885c33ca0f63d6a4f533ae5dfe450644f612ea9 GIT binary patch literal 1589 zcmd5+O>a^`6um=fX%R{V>qqOy6gRk#x6qX}Zm>oSx+x{GyJ5J(=ws$(W~l8iGtor% z{u}>*@eW_bhLn)Hkc1iTy!*~Q_uMo5{QdPi06c+*8Avf`_qOOoJgSF>MEB}JQO65_DLAqu-n1M|O zg<-3)(B0_3T4UE?i?Lrv+M+Y@33fQCkf>OMu6bfjJI20y#^9zF7DI z*MAK2ZqORu0w}>Yt+`Pa+=N>c1%wi<6ND6f$_RI65JI=hbJ&?d2!C_SA*{eI Ty_15waF2F?GJV%5z7PBlwmq;{ literal 0 HcmV?d00001 diff --git a/httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/IncorrectRespondsException.class b/httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/IncorrectRespondsException.class new file mode 100644 index 0000000000000000000000000000000000000000..93dd78e963345537de69876293c973da79636b14 GIT binary patch literal 1605 zcmd5+O;Zy=5bX(pKuidN_<}R*7r}t)r5*H(xMduNl@>w8s-@LxvecalO15fNr_x#B6QAkYq}Zs-BVtj>7>XLl$o#u z%7y$WddQoEj{eXs8tK;Li9yG;@w_i+0NfJ;9_A$EX@*PHi)d0&m{b%>k1onMs4`V( zg_Y?MH+w}=f0QFXe~Mf=u4u;EDd$o9>dcn6O82-V|4{W^o7=wz}f^iycrSa{4zl*jLdSx)*Hj<1e$c_{rAC`Tp9D}rd z=`^q8-mNj1ZM8=OC@STD>EH~cc`;;nH*{RxGW%BIOBI@3KHoKk8%el;7&_5V45PT3$D>xqmw6uVzgJk zLjC=G<1<|UUf^!f8r}j}fJIts0~FkZTNDL`1zLv;B|00Q;r2f>+&RS%x*flUrBe*y aFK;}C3Ajt|l;9rRryZb4-zkb80RIil;J8Bo literal 0 HcmV?d00001 diff --git a/httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/InsuficientCreditsException.class b/httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/InsuficientCreditsException.class new file mode 100644 index 0000000000000000000000000000000000000000..8f477963e278acc8d78e6852701929d3994d640b GIT binary patch literal 1609 zcmd5+O>a^`6um=fX%R{V>qq_Q6gRk#x6qX}Zm>oSx+x{GyJ5J6(Z|fo%uw53W}=Di z{Xs5`clatc214vY5@xvb?mPF~bIs2JNdXRvVFR z4oObyFxYZvm55tt9dSCUzhuDPFv!=8c3x=T67c|6NrLcU4A!12t^5lHE0sqr2I-pV zUo@{ex!JOnD#y87^ud= zabC^M+h?#@X-p?Dq{{!&!ljh*{FLM4&~o{rOY zFBU$-_3y*H8?=VE07|e;Yi^VUH{ljV0ii_e1R+Id%Ol+WXM{U52%+2MIqb|Jgnzx| X5LVzWy_14_aG!R7GJV%5egOP8i^{pD literal 0 HcmV?d00001 diff --git a/httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/InternalErrorException.class b/httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/InternalErrorException.class new file mode 100644 index 0000000000000000000000000000000000000000..17030c965cbe080ae60800c48795cdecbeebf8c7 GIT binary patch literal 1589 zcmd5+OK%e~5FV$GZA03Wgz{*4xZzR`WDjtnh)XD?(kM&+%Ad?v>H;j`nD^$hNIDc6)Rj!R$Y-(;D#X6#T|@ z7_2z7N@V+J9nsm_dC7piVX)LP+IgYWCVDK*2Cnt^)rqKX5SsX{BPOi#G^ zP!#niIr8%-$d%(tOHxrekJ^_PcfD2mkW2CnG4CQDE8`6pJYa<~)_fME&6K?V7OV_Q zP^&;0>I_yl+oz@&Fy0ELskW8Icl}-$Z71}~pw>2$Oen~T6b}z)eX1OTq&;<#SH5ps z43;yg_cc);M)84+yI zwLL2=gUVaw9678*MslzLbVb9Jg*BLidDG$XsKY9)l|dHVgj*B^ggUJwgc6-y9^v+t5$;SNgl;d-VQm5-{LNhsVFuRe Tof6!Id$a>I=sQpGec*opqr0(l literal 0 HcmV?d00001 diff --git a/httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/InvalidApplicationKeyException.class b/httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/InvalidApplicationKeyException.class new file mode 100644 index 0000000000000000000000000000000000000000..14a75567d8cf5deda86399d108977c2c3db7a2a7 GIT binary patch literal 1621 zcmd5+O>Yx15FMv!(}uJu3FV`Fx#=Yw$R6NC5fUmz6atr~k?76w4vovkUfE7*ei;%- zaOWR!L5w#|8Y+}3q6Z?y&UoLxnR)Y^AHTkQ1As@cS%4gaqptU<>Bd>Gx>& zR>Wu{XJynAN=HZHSVYqFqEp=Ib3BoldS!I9tB*yZ;^%3aC@I3x8yxJ69v2|bpmUk| zwukk$vO33k7_2(9N+fNxj%wK7eZhdeX0W_%wDUsywn+LoPb!2DW3cd4Y2}|Wn5#c% zGsth77z?n%pq#aw2z?msSZnMetTOgx zm0g8aSlJzL^C3&>2PyLDljO>Ar6sAUoJZ}8OMBibeaI#Gh&t#XA1mYy7d&u=bk=+l zq|pVq|CX!>%TOsn5vmN<>diBA3@hFW<|#Lo#&`W*2W>0#%AnFTlFTT`k`$jF=6zQ= z21)b6iC)_M+hVX%Z;pqMRm=a<#W_fAI^^IWbY0vteJk;$3Jq^gcTeU_5^#6IL9a$G zEWmvRXHF@=23_a#LNh46RnC#)T4XE-8$ee#TxD2?d03#mKv51BDWclo3auqNc}yrq zd+{qQzps=(!`1H@?i#J(Er2Sl(OMd!;5yu(C@@rM9WmtSY<7m5|IBb}f+2J}dkyOo c4B_u@HikL4P4DF34&0?3phn*Xithpc4WEX-2LJ#7 literal 0 HcmV?d00001 diff --git a/httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/InvalidParametersException.class b/httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/InvalidParametersException.class new file mode 100644 index 0000000000000000000000000000000000000000..68e3bba6f282c88d3b327209022b6ba21648cf68 GIT binary patch literal 1605 zcmd5+O>Yx15FMu<+lI6$3FV`F)J-qpK=uG9inx>_f&xNnT8Z8qXWBLF+AG@)?Jq+D z3GVzKu848cq@kjXDtaJN?2LEz&6_vR`SI(^Hvo7H>k$+f>?hvmG7(y1`bdi0)9>N# zt>~hSot1GWl#V}$o`|K%;*-3S=XfMB_sZzFse2+--FL!@3_V)6HGCAoG=t7n*4i9! zZTC5j>M&SxXq8BJsX9^GX}(~Ev518Vb($04!ts{w2UMp3bG@`Cx_EMQI0{< znmElXxpx~37VE9i0QyY%UphFGQoA^1Z!dIQ+%|_+;!72pT|M75eK(SD%`xY^8agk6 zRR*UHiC~Sc@L7Qwl-?-k$Z2gdl!G;(>l&^vtiTM+(jHM%fH{hY7hI#YL?=%ui_u>E z3JdQm<GYx15FMv!(}tui3FV^&>V``=kUhYOA}*zfqQIqTC3Gx>& zR>Wu{XJyn8N=KhWPejsmqG8_fIi5*Oy)rsF&^?i;xS`}J`u)*y4zmBa&fb7$qt9<# zhrzl-t3+~)))AefgI5gLTL#5Fqn#JpAB&`mi`0GiFa}F6lve&FgN5qjV+Pqh6Jrim z8LahNO@wYm`_>w}4C{>jI?@)MNqQJ_QXy4|2wn5knr4C>_nhZf8g1k;%0yU7N`*WX zE#wu-uKlH1ZLC>^#|9nO#`BIK@wq1iJWEmfNrahGs?n5cVM?_?y>?Z_0n4^RE39mv zbMvuZ)Ssuwr%#Y8$CZ|(qH-R!&#xSMt8|M?@(nR>A|ET`4HrCMg)-KB7NpILy#E#~ z4@D>yAP;2*8`b)SDF%#pgK5_4O5^)(r-`-^dSy_m8%ZVEVvDKC<+K=T1N;OI-4Ki?zIu_O(2AB=jX6Ffe`-Y=0jM3 UEqW&d_u&EU02TT!QT!129~Zo_0{{R3 literal 0 HcmV?d00001 diff --git a/httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/InvalidURLException.class b/httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/InvalidURLException.class new file mode 100644 index 0000000000000000000000000000000000000000..783c1cfbfc7a2402ad0a4a55a2f65be3d569d512 GIT binary patch literal 1577 zcmd5+%We}f6g^HKX+zqSghDAVH*Cs+%mP*vu?a;K1r{`|L^sHBOkmmz@! zdp?FwKwKwH8mg*QRThji_FT`MbI(0Ko}a(Jeh2Uf_w&dxyzhjN$&N5ar4OaZ0zHrB z;6z)w#5%&}S;lezNJDb#qu^?AMNQ%GT&raFfi>(&6ZO=*dLdPywPVvdWcqG-UY~yGCRD3aDV2#^Nvw*KvcQh)|(%gpi}PizBRD8sX*yLhSb999Aa~;@|CJ W2vfL4-{f!`cW4Hxbk9a^`6um|t7ZVDuJ)nOQ6^fB`?GhqA6Of=EG zf5v}cyz}@dHl&2qg(S>y=iPVixo6Jh=kKrI0pJNd3?N0|r0-nJ`%EbjJ?1QS_5evBMse9Hw5xEt*m3pwOKS2>)5;h5CWO!Qc3rMz*^-|n?SmzyCQ%s z0)?c}h^bz9XpA-+uuaIXmNLTXXe7E6HHc-ze9tsCx)X_keMYmJ&Ay;r!6RlcDQ5f= z>j_%M?CM{NRcDHoX;%wNm3DN%PQ(WMs{W3uo_h7Nier|2DGW2b ze@69(q^LWK1zmK1R9Y$(M-8QQLb>ebkuy^DC`ZpA?~b4|U7V(jdL&=O=+6w5S(5kP zf@L8O#T;azL|~`VIJd-@@qxEYp&^xcHym_?Y5HCX6dRhO1sNI<*v$ literal 0 HcmV?d00001 diff --git a/httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/NotAnImageException.class b/httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/NotAnImageException.class new file mode 100644 index 0000000000000000000000000000000000000000..4ef38492f54a0db25dc024e2ed0d42750d60a9da GIT binary patch literal 1577 zcmd5+%We}f6g^HKX+!!Tp-{@p4V$tcvw#&vNT?JM6uN0ziEb*#F^yqjk8HQJUxow{ z?D-fz0dbvILlw2E%7T%`p6j`D?zzXu^Yi!D?*N|QVIDb#{dNeMYzt#l`dErA(DPsp zPPCLuypu^sXp?*tM@CCGhBZD26Lv*y2dTU3o(RE^ZD=T+>nY-{C& zlkF33KXi+RlT7h3+sC!%+DMX6`=CrH%x(v#%>kF>7^2-&d?-t>T<{1KYdHH^kT4hI z{kLER%%N070cD1zwfdOw z)DwBE(rG;_DMRs{_MW`eAPae{f=*^UsaU}jrfJSol*0@~LYx16db2%(}whel=4w1xZx5GWDjtnh)XG=C~!$yiQXK?O$-}*<#kH?%aA~V zJAa2e;(61gp`wiQZsk6&ND0eFIk1>_joUGEdw6~?Ieu@s4?=i%&~ zXe$?`PDVYUP4qz=iAdUBbeebiUL8x7cx_G8=(l=0P3dvRIqPqhAu#zgLMZB+EV6nIRl7YQpSlqTI^}_gl5%<+B^&c+AF!x*=?O!m=R3Gg#-c~Xej*=1~ zKZ=gx70Rytp;~RET7|c*O1ZI~_XNq$Jt3&$L`gr6Fj2i4?Ncr6Q!P-hT~=|xva6L7 zPIgbYJZVoqA<_aiQUzHXSa>JH)-E_(&UXx!?gU6ms^HAay3> z{kLF6ETUXO5vvSq)%uw&28_3YZIl58l*j1-?P=6zSE42SiJ zdwB(CZi`{5S|7=u@#KHue=enRdCI{-=(pIgeJ9l`9a`PE$T67@NwnQD*SsEju7C#& zXYMFqlMe5BaT!W)!~eu|nq;OFo1lXl4ldR)i#eJL6y-2a5wXHG8cVeDl(HDj#jjX= zUta!<>)*4y8#IQmfK{x~SQ=#ECT>v_5LRg%BIIaodW75mjBsZRA#^)EhxIXp@Uxo^ WVFq{Un;h<8gJz&Y_Z-Fd!G8mDUbQy> literal 0 HcmV?d00001 diff --git a/httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/UserNotValidatedException.class b/httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/captchatrader/exception/UserNotValidatedException.class new file mode 100644 index 0000000000000000000000000000000000000000..31a81b18989465c6343fe4ecf2402232ab6d7bdd GIT binary patch literal 1601 zcmd5+O>Yx15FMv&(uSldE#;#?al<7X$R6NC5tmRzQRt;fBzkkaLt@z2E88vYFGB(e z?))Ckh;hEDXrqW8SZVDY@9dj5&(Hhg*OzYq@B|*_Aj1H=-lwuFw8rGI6sf1@(d?~= z(MHb7s3(+;K8O<$Nz;pldBgX3DlzrS=&0$?9vI&eiHe2CcyIJ32a62aS6QkypxWqD z9M@s6Mii7tT4)_HYVN;ez}_$@){J&u=)mn5mq>tcF$US^N-O_@!9wLxi@{>e#F&Fs z2Bm(tiO`*B&st-bVU4k$O>NPcdvC(@wDGp7H!jql-L7nFvcssgNH< z2YH#YtAEH=9m`hcu|dbR@w_KUf9?qZPg9g6;RIo(dR5w}YS^f1pkBSK;(%pWp%qqk z&$xNtFY3=y2A=P>>rb9xg8Wu5t`I^_iP_ z6{l{O!D^*G*1u1b|D}O*Ddo#kj*ddZ`9pJTCB9Oj*X;{E)3+kYwm;>Y*CX5I-~oe) zKXR}`=l8t43<__RbL6uI*~!5U&{+*<7q(ytvNY!?%D^&3L<_FbSfG`sl*MSye}&?^ z_0ng!{=J`fgU0X`zy@s6SQuo%O}Ir-K-i#hgpi@N`4MjaGs2xIgwXB$9JZzq!vAhQ Xgax=u-(=t(+@~3!Om~*zZQ#EFd9k(I literal 0 HcmV?d00001 diff --git a/httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/rogiel/httpchannel/captcha/impl/CaptchaTraderService.class b/httpchannel-captcha/bin/httpchannel-captcha-captchatrader/src/main/java/com/rogiel/httpchannel/captcha/impl/CaptchaTraderService.class new file mode 100644 index 0000000000000000000000000000000000000000..2a3a7f8cc9a7ad5a0c1ddfe561c7cd4c12d48e56 GIT binary patch literal 7014 zcmeHM-E$i?5MQ}z{6Rw6w1qZ>q6A7EAm=o7(xfRZA(ITAI;7Kl%=86DIV-lp`R>r^ zGR+Hr6b~>1Gw{wo#2drPcTUc5)01QKG0+G5q|@rB)$UKLmF}0{e)tIh?!kH3^86yV7v`6-+*mr8pSSNXvg+OH%E}UfYj!9l zch#EjJHlp4cg>bkuRLi2-KI}fy3Lu16nHXwm4NMKBpSM(pIq69To)CM)P}$9&p;l zuxL$D5m4baghV?zC)jkzQGXi;IFw!+>tBc1)}WT%0XY;7528UD9AD`spV?orCZ{u~ zk`;N)N_fqRy=G~z&CrI&1F98iGo%4ks4jouTJGJH>GeY1mbA)Ti2d^*O?vMto>PRa~Y z=2Rn4I*my|9;ON0HcA!<+dZrA1*Lqs5O@@x9k+BxRp+)MRtcvvmKZIWXK2jXsz zjQDTjOtU=PXr>w3^eoXK${Nkmi2VPP1eL(W&V>ts%jJ493tgSv&%-Q%>C9xQ03Q+qPG)FOi#nYv~4H)6s7o6j(YH&1GM7S(Bd%Ftmz6C!^)nQI;_0=HhC85Lljm!&KY_xQ=%1TJmhh_fjl-Nh@)5cAds$*IsOI)V>ez zfCLiUc@^FPG2Tr{s;&r?Dj^{bvAv$p^ZR+6Z$CbL0f49QxB?{t-J!KfFl18l=t;m5 zi|g~*Y8GjaVyCachhl%eV7Wy$sz$UJ7a!sj0PByvb4|Xxe}kYEft0e848X5L}w@(aLr|a76w|y`29XbSxEgL zV#d&ch`1@V(zRO1<7>APay0B5NLcWW9do*Yk^2|Yy+K384RyiA468*g=766j7}4~( znPv5{tiCI&pXKhdojh(4CraBqzmnU6hzoE+{S{nlMKsH>(nVGCYVA0QL?A3RX~H!U zP8zGzz$#61Mm0Abc~Tkjfsl?cD8V&LBTUK!?bF@VSSLXgWzv-q@%oDTCU*n@H37@wJ;`S74U1JOM*md6Dk&x0!5sKY$mB(T!#O!`>fAhuke zYjltbZ_>EWbZt5N5Tkn_?2s=S@T8z7CMf*TUB^K$oD^K(f^tLPcR)h(^aVsxa$rC zRxjK~M~UnmAyD5H#^Br7!)MvRI^b)Me>VV1xSEFr94q+s40j36-e;)3UG_dg{cDD4 z;OH=bza<>&ISOvUa<+FHrE_ox*JYHfz+GH9{5_m6>%Cu~w^^XK1Z#M{1P|fSx#pj? C7W+s5 literal 0 HcmV?d00001 diff --git a/httpchannel-service/httpchannel-service-4shared/src/main/java/com/rogiel/httpchannel/service/fourshared/FourSharedService.java b/httpchannel-service/httpchannel-service-4shared/src/main/java/com/rogiel/httpchannel/service/fourshared/FourSharedService.java index 21cb9be..23106a8 100644 --- a/httpchannel-service/httpchannel-service-4shared/src/main/java/com/rogiel/httpchannel/service/fourshared/FourSharedService.java +++ b/httpchannel-service/httpchannel-service-4shared/src/main/java/com/rogiel/httpchannel/service/fourshared/FourSharedService.java @@ -30,9 +30,6 @@ import com.rogiel.httpchannel.service.AbstractAuthenticator; import com.rogiel.httpchannel.service.AbstractHttpService; import com.rogiel.httpchannel.service.AbstractUploader; import com.rogiel.httpchannel.service.AccountDetails; -import com.rogiel.httpchannel.service.AccountDetails.DiskQuotaAccountDetails; -import com.rogiel.httpchannel.service.AccountDetails.FilesizeLimitAccountDetails; -import com.rogiel.httpchannel.service.AccountDetails.PremiumAccountDetails; import com.rogiel.httpchannel.service.AuthenticationService; import com.rogiel.httpchannel.service.Authenticator; import com.rogiel.httpchannel.service.AuthenticatorCapability; @@ -45,6 +42,9 @@ import com.rogiel.httpchannel.service.UploadChannel; import com.rogiel.httpchannel.service.UploadService; import com.rogiel.httpchannel.service.Uploader; import com.rogiel.httpchannel.service.UploaderCapability; +import com.rogiel.httpchannel.service.AccountDetails.DiskQuotaAccountDetails; +import com.rogiel.httpchannel.service.AccountDetails.FilesizeLimitAccountDetails; +import com.rogiel.httpchannel.service.AccountDetails.PremiumAccountDetails; import com.rogiel.httpchannel.service.channel.LinkedUploadChannel; import com.rogiel.httpchannel.service.channel.LinkedUploadChannel.LinkedUploadChannelCloseCallback; import com.rogiel.httpchannel.service.config.NullAuthenticatorConfiguration; diff --git a/httpchannel-service/httpchannel-service-filesonic/src/main/java/com/rogiel/httpchannel/service/filesonic/FileSonicService.java b/httpchannel-service/httpchannel-service-filesonic/src/main/java/com/rogiel/httpchannel/service/filesonic/FileSonicService.java index 338afae..92bbb7e 100644 --- a/httpchannel-service/httpchannel-service-filesonic/src/main/java/com/rogiel/httpchannel/service/filesonic/FileSonicService.java +++ b/httpchannel-service/httpchannel-service-filesonic/src/main/java/com/rogiel/httpchannel/service/filesonic/FileSonicService.java @@ -28,7 +28,6 @@ import com.rogiel.httpchannel.service.AbstractAuthenticator; import com.rogiel.httpchannel.service.AbstractHttpService; import com.rogiel.httpchannel.service.AbstractUploader; import com.rogiel.httpchannel.service.AccountDetails; -import com.rogiel.httpchannel.service.AccountDetails.PremiumAccountDetails; import com.rogiel.httpchannel.service.AuthenticationService; import com.rogiel.httpchannel.service.Authenticator; import com.rogiel.httpchannel.service.AuthenticatorCapability; @@ -41,6 +40,7 @@ import com.rogiel.httpchannel.service.UploadChannel; import com.rogiel.httpchannel.service.UploadService; import com.rogiel.httpchannel.service.Uploader; import com.rogiel.httpchannel.service.UploaderCapability; +import com.rogiel.httpchannel.service.AccountDetails.PremiumAccountDetails; import com.rogiel.httpchannel.service.channel.LinkedUploadChannel; import com.rogiel.httpchannel.service.channel.LinkedUploadChannel.LinkedUploadChannelCloseCallback; import com.rogiel.httpchannel.service.config.NullAuthenticatorConfiguration; diff --git a/httpchannel-service/httpchannel-service-hotfile/pom.xml b/httpchannel-service/httpchannel-service-hotfile/pom.xml index c537bf8..0d13291 100644 --- a/httpchannel-service/httpchannel-service-hotfile/pom.xml +++ b/httpchannel-service/httpchannel-service-hotfile/pom.xml @@ -1,13 +1,14 @@ - - 4.0.0 - - httpchannel-service - com.rogiel.httpchannel - 1.0.1-SNAPSHOT - .. - - httpchannel-service-hotfile - com.rogiel.httpchannel.services - HttpChannel/Service/HotFile - Provides download and upload access to hotfile.com + + 4.0.0 + + httpchannel-service + com.rogiel.httpchannel + 1.0.1-SNAPSHOT + .. + + httpchannel-service-hotfile + com.rogiel.httpchannel.services + HttpChannel/Service/HotFile + Provides download and upload access to hotfile.com \ No newline at end of file diff --git a/httpchannel-service/httpchannel-service-hotfile/src/main/java/com/rogiel/httpchannel/service/hotfile/HotFileService.java b/httpchannel-service/httpchannel-service-hotfile/src/main/java/com/rogiel/httpchannel/service/hotfile/HotFileService.java index 2ae9da6..ef68ca9 100644 --- a/httpchannel-service/httpchannel-service-hotfile/src/main/java/com/rogiel/httpchannel/service/hotfile/HotFileService.java +++ b/httpchannel-service/httpchannel-service-hotfile/src/main/java/com/rogiel/httpchannel/service/hotfile/HotFileService.java @@ -33,7 +33,6 @@ import com.rogiel.httpchannel.service.AbstractHttpDownloader; import com.rogiel.httpchannel.service.AbstractHttpService; import com.rogiel.httpchannel.service.AbstractUploader; import com.rogiel.httpchannel.service.AccountDetails; -import com.rogiel.httpchannel.service.AccountDetails.PremiumAccountDetails; import com.rogiel.httpchannel.service.AuthenticationService; import com.rogiel.httpchannel.service.Authenticator; import com.rogiel.httpchannel.service.AuthenticatorCapability; @@ -51,6 +50,7 @@ import com.rogiel.httpchannel.service.UploadChannel; import com.rogiel.httpchannel.service.UploadService; import com.rogiel.httpchannel.service.Uploader; import com.rogiel.httpchannel.service.UploaderCapability; +import com.rogiel.httpchannel.service.AccountDetails.PremiumAccountDetails; import com.rogiel.httpchannel.service.channel.LinkedUploadChannel; import com.rogiel.httpchannel.service.channel.LinkedUploadChannel.LinkedUploadChannelCloseCallback; import com.rogiel.httpchannel.service.config.NullAuthenticatorConfiguration; diff --git a/httpchannel-service/httpchannel-service-ifileit/pom.xml b/httpchannel-service/httpchannel-service-ifileit/pom.xml new file mode 100644 index 0000000..299fb68 --- /dev/null +++ b/httpchannel-service/httpchannel-service-ifileit/pom.xml @@ -0,0 +1,14 @@ + + 4.0.0 + + httpchannel-service + com.rogiel.httpchannel + 1.0.1-SNAPSHOT + .. + + httpchannel-service-ifileit + com.rogiel.httpchannel.services + HttpChannel/Service/iFileIt + Provides download and upload access to ifile.it + \ No newline at end of file diff --git a/httpchannel-service/httpchannel-service-ifileit/src/main/java/com/rogiel/httpchannel/service/ifile/IFileService.java b/httpchannel-service/httpchannel-service-ifileit/src/main/java/com/rogiel/httpchannel/service/ifile/IFileService.java new file mode 100644 index 0000000..6834159 --- /dev/null +++ b/httpchannel-service/httpchannel-service-ifileit/src/main/java/com/rogiel/httpchannel/service/ifile/IFileService.java @@ -0,0 +1,160 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package com.rogiel.httpchannel.service.ifile; + +import java.io.IOException; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; +import java.util.regex.Pattern; + +import com.rogiel.httpchannel.service.AbstractHttpService; +import com.rogiel.httpchannel.service.AbstractUploader; +import com.rogiel.httpchannel.service.CapabilityMatrix; +import com.rogiel.httpchannel.service.Service; +import com.rogiel.httpchannel.service.ServiceID; +import com.rogiel.httpchannel.service.ServiceMode; +import com.rogiel.httpchannel.service.UploadChannel; +import com.rogiel.httpchannel.service.UploadService; +import com.rogiel.httpchannel.service.Uploader; +import com.rogiel.httpchannel.service.UploaderCapability; +import com.rogiel.httpchannel.service.channel.LinkedUploadChannel; +import com.rogiel.httpchannel.service.channel.LinkedUploadChannel.LinkedUploadChannelCloseCallback; +import com.rogiel.httpchannel.service.config.NullUploaderConfiguration; +import com.rogiel.httpchannel.util.htmlparser.HTMLPage; + +/** + * This service handles login, upload and download to HotFile.com. + * + * @author Rogiel + * @since 1.0 + */ +public class IFileService extends AbstractHttpService implements Service, + UploadService { + /** + * This service ID + */ + public static final ServiceID SERVICE_ID = ServiceID.create("ifileit"); + + private static final Pattern UPLOAD_URI_PATTERN = Pattern + .compile("http://i[0-9]+\\.ifile\\.it/upload\\?response=redirect"); + + private static final Pattern DOWNLOAD_URI_PATTERN = Pattern + .compile("http://ifile\\.it/[a-z0-9]{7}/.*"); + + @Override + public ServiceID getServiceID() { + return SERVICE_ID; + } + + @Override + public int getMajorVersion() { + return 1; + } + + @Override + public int getMinorVersion() { + return 0; + } + + @Override + public CapabilityMatrix getPossibleServiceModes() { + return new CapabilityMatrix(ServiceMode.UNAUTHENTICATED, + ServiceMode.NON_PREMIUM, ServiceMode.PREMIUM); + } + + @Override + public Uploader getUploader(String filename, + long filesize, NullUploaderConfiguration configuration) { + return new UploaderImpl(filename, filesize, configuration); + } + + @Override + public Uploader getUploader(String filename, + long filesize) { + return getUploader(filename, filesize, newUploaderConfiguration()); + } + + @Override + public NullUploaderConfiguration newUploaderConfiguration() { + return NullUploaderConfiguration.SHARED_INSTANCE; + } + + @Override + public long getMaximumFilesize() { + return 1 * 1024 * 1024 * 1024; + } + + @Override + public String[] getSupportedExtensions() { + return null; + } + + @Override + public CapabilityMatrix getUploadCapabilities() { + return new CapabilityMatrix( + UploaderCapability.UNAUTHENTICATED_UPLOAD, + UploaderCapability.NON_PREMIUM_ACCOUNT_UPLOAD, + UploaderCapability.PREMIUM_ACCOUNT_UPLOAD); + } + + protected class UploaderImpl extends + AbstractUploader implements + Uploader, + LinkedUploadChannelCloseCallback { + private Future uploadFuture; + + public UploaderImpl(String filename, long filesize, + NullUploaderConfiguration configuration) { + super(IFileService.this, filename, filesize, configuration); + } + + @Override + public UploadChannel openChannel() throws IOException { + logger.debug("Starting upload to ifile.it"); + final HTMLPage page = get("http://ifile.it/upload-classic.html") + .asPage(); + final String action = page.findFormAction(UPLOAD_URI_PATTERN); + + logger.debug("Upload URI is {}", action); + + final LinkedUploadChannel channel = createLinkedChannel(this); + + uploadFuture = multipartPost(action).parameter("Filedata", channel) + .asPageAsync(); + return waitChannelLink(channel); + } + + @Override + public String finish() throws IOException { + try { + return uploadFuture.get().getInputValue(DOWNLOAD_URI_PATTERN); + } catch (InterruptedException e) { + return null; + } catch (ExecutionException e) { + throw (IOException) e.getCause(); + } + } + } + + @Override + public String toString() { + return this.getClass().getSimpleName() + " " + getMajorVersion() + "." + + getMinorVersion(); + } +} diff --git a/httpchannel-service/httpchannel-service-ifileit/src/test/java/com/rogiel/httpchannel/service/ifile/IFileServiceTest.java b/httpchannel-service/httpchannel-service-ifileit/src/test/java/com/rogiel/httpchannel/service/ifile/IFileServiceTest.java new file mode 100644 index 0000000..ff02e73 --- /dev/null +++ b/httpchannel-service/httpchannel-service-ifileit/src/test/java/com/rogiel/httpchannel/service/ifile/IFileServiceTest.java @@ -0,0 +1,70 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package com.rogiel.httpchannel.service.ifile; + +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.nio.channels.SeekableByteChannel; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +import junit.framework.Assert; + +import org.junit.Before; +import org.junit.Test; + +import com.rogiel.httpchannel.service.ServiceID; +import com.rogiel.httpchannel.service.UploadChannel; +import com.rogiel.httpchannel.service.helper.UploadServices; +import com.rogiel.httpchannel.util.ChannelUtils; + +public class IFileServiceTest { + private IFileService service; + + @Before + public void setUp() throws Exception { + service = new IFileService(); + } + + @Test + public void testServiceId() { + assertEquals(ServiceID.create("hotfile"), service.getServiceID()); + } + + @Test + public void testNonLoguedInUploader() throws IOException { + final Path path = Paths + .get("../src/test/resources/upload-test-file.txt"); + final UploadChannel channel = UploadServices.upload(service, path) + .openChannel(); + final SeekableByteChannel inChannel = Files.newByteChannel(path); + + try { + ChannelUtils.copy(inChannel, channel); + } finally { + inChannel.close(); + channel.close(); + } + + System.out.println(channel.getDownloadLink()); + Assert.assertNotNull(channel.getDownloadLink()); + } +} diff --git a/httpchannel-service/httpchannel-service-megaupload/src/main/java/com/rogiel/httpchannel/service/megaupload/MegaUploadService.java b/httpchannel-service/httpchannel-service-megaupload/src/main/java/com/rogiel/httpchannel/service/megaupload/MegaUploadService.java index bdef075..a5b8433 100644 --- a/httpchannel-service/httpchannel-service-megaupload/src/main/java/com/rogiel/httpchannel/service/megaupload/MegaUploadService.java +++ b/httpchannel-service/httpchannel-service-megaupload/src/main/java/com/rogiel/httpchannel/service/megaupload/MegaUploadService.java @@ -34,7 +34,6 @@ import com.rogiel.httpchannel.service.AbstractHttpDownloader; import com.rogiel.httpchannel.service.AbstractHttpService; import com.rogiel.httpchannel.service.AbstractUploader; import com.rogiel.httpchannel.service.AccountDetails; -import com.rogiel.httpchannel.service.AccountDetails.PremiumAccountDetails; import com.rogiel.httpchannel.service.AuthenticationService; import com.rogiel.httpchannel.service.Authenticator; import com.rogiel.httpchannel.service.AuthenticatorCapability; @@ -52,6 +51,7 @@ import com.rogiel.httpchannel.service.UploadChannel; import com.rogiel.httpchannel.service.UploadService; import com.rogiel.httpchannel.service.Uploader; import com.rogiel.httpchannel.service.UploaderCapability; +import com.rogiel.httpchannel.service.AccountDetails.PremiumAccountDetails; import com.rogiel.httpchannel.service.channel.LinkedUploadChannel; import com.rogiel.httpchannel.service.channel.LinkedUploadChannel.LinkedUploadChannelCloseCallback; import com.rogiel.httpchannel.service.config.NullAuthenticatorConfiguration; diff --git a/httpchannel-service/httpchannel-service-multiupload/src/main/java/com/rogiel/httpchannel/service/multiupload/MultiUploadService.java b/httpchannel-service/httpchannel-service-multiupload/src/main/java/com/rogiel/httpchannel/service/multiupload/MultiUploadService.java index 943e46e..cb709a6 100644 --- a/httpchannel-service/httpchannel-service-multiupload/src/main/java/com/rogiel/httpchannel/service/multiupload/MultiUploadService.java +++ b/httpchannel-service/httpchannel-service-multiupload/src/main/java/com/rogiel/httpchannel/service/multiupload/MultiUploadService.java @@ -31,7 +31,6 @@ import com.rogiel.httpchannel.service.AbstractHttpDownloader; import com.rogiel.httpchannel.service.AbstractHttpService; import com.rogiel.httpchannel.service.AbstractUploader; import com.rogiel.httpchannel.service.AccountDetails; -import com.rogiel.httpchannel.service.AccountDetails.PremiumAccountDetails; import com.rogiel.httpchannel.service.AuthenticationService; import com.rogiel.httpchannel.service.Authenticator; import com.rogiel.httpchannel.service.AuthenticatorCapability; @@ -49,15 +48,16 @@ import com.rogiel.httpchannel.service.UploadChannel; import com.rogiel.httpchannel.service.UploadService; import com.rogiel.httpchannel.service.Uploader; import com.rogiel.httpchannel.service.UploaderCapability; +import com.rogiel.httpchannel.service.AccountDetails.PremiumAccountDetails; import com.rogiel.httpchannel.service.channel.LinkedUploadChannel; import com.rogiel.httpchannel.service.channel.LinkedUploadChannel.LinkedUploadChannelCloseCallback; import com.rogiel.httpchannel.service.config.NullAuthenticatorConfiguration; import com.rogiel.httpchannel.service.config.NullDownloaderConfiguration; +import com.rogiel.httpchannel.service.exception.AuthenticationInvalidCredentialException; import com.rogiel.httpchannel.service.exception.DownloadLimitExceededException; import com.rogiel.httpchannel.service.exception.DownloadLinkNotFoundException; import com.rogiel.httpchannel.service.exception.DownloadNotAuthorizedException; import com.rogiel.httpchannel.service.exception.DownloadNotResumableException; -import com.rogiel.httpchannel.service.exception.AuthenticationInvalidCredentialException; import com.rogiel.httpchannel.service.multiupload.MultiUploadUploaderConfiguration.MultiUploadMirrorService; import com.rogiel.httpchannel.util.PatternUtils; import com.rogiel.httpchannel.util.htmlparser.HTMLPage; diff --git a/httpchannel-service/httpchannel-service-uploadhere/src/main/java/com/rogiel/httpchannel/service/uploadhere/UploadHereService.java b/httpchannel-service/httpchannel-service-uploadhere/src/main/java/com/rogiel/httpchannel/service/uploadhere/UploadHereService.java index 3e886c6..7a25a82 100644 --- a/httpchannel-service/httpchannel-service-uploadhere/src/main/java/com/rogiel/httpchannel/service/uploadhere/UploadHereService.java +++ b/httpchannel-service/httpchannel-service-uploadhere/src/main/java/com/rogiel/httpchannel/service/uploadhere/UploadHereService.java @@ -32,7 +32,6 @@ import com.rogiel.httpchannel.service.AbstractHttpDownloader; import com.rogiel.httpchannel.service.AbstractHttpService; import com.rogiel.httpchannel.service.AbstractUploader; import com.rogiel.httpchannel.service.AccountDetails; -import com.rogiel.httpchannel.service.AccountDetails.PremiumAccountDetails; import com.rogiel.httpchannel.service.AuthenticationService; import com.rogiel.httpchannel.service.Authenticator; import com.rogiel.httpchannel.service.AuthenticatorCapability; @@ -50,6 +49,7 @@ import com.rogiel.httpchannel.service.UploadChannel; import com.rogiel.httpchannel.service.UploadService; import com.rogiel.httpchannel.service.Uploader; import com.rogiel.httpchannel.service.UploaderCapability; +import com.rogiel.httpchannel.service.AccountDetails.PremiumAccountDetails; import com.rogiel.httpchannel.service.channel.LinkedUploadChannel; import com.rogiel.httpchannel.service.channel.LinkedUploadChannel.LinkedUploadChannelCloseCallback; import com.rogiel.httpchannel.service.config.NullAuthenticatorConfiguration; diff --git a/httpchannel-service/httpchannel-service-uploadking/src/main/java/com/rogiel/httpchannel/service/uploadking/UploadKingService.java b/httpchannel-service/httpchannel-service-uploadking/src/main/java/com/rogiel/httpchannel/service/uploadking/UploadKingService.java index 8753cfb..79aa16d 100644 --- a/httpchannel-service/httpchannel-service-uploadking/src/main/java/com/rogiel/httpchannel/service/uploadking/UploadKingService.java +++ b/httpchannel-service/httpchannel-service-uploadking/src/main/java/com/rogiel/httpchannel/service/uploadking/UploadKingService.java @@ -32,7 +32,6 @@ import com.rogiel.httpchannel.service.AbstractHttpDownloader; import com.rogiel.httpchannel.service.AbstractHttpService; import com.rogiel.httpchannel.service.AbstractUploader; import com.rogiel.httpchannel.service.AccountDetails; -import com.rogiel.httpchannel.service.AccountDetails.PremiumAccountDetails; import com.rogiel.httpchannel.service.AuthenticationService; import com.rogiel.httpchannel.service.Authenticator; import com.rogiel.httpchannel.service.AuthenticatorCapability; @@ -50,6 +49,7 @@ import com.rogiel.httpchannel.service.UploadChannel; import com.rogiel.httpchannel.service.UploadService; import com.rogiel.httpchannel.service.Uploader; import com.rogiel.httpchannel.service.UploaderCapability; +import com.rogiel.httpchannel.service.AccountDetails.PremiumAccountDetails; import com.rogiel.httpchannel.service.channel.LinkedUploadChannel; import com.rogiel.httpchannel.service.channel.LinkedUploadChannel.LinkedUploadChannelCloseCallback; import com.rogiel.httpchannel.service.config.NullAuthenticatorConfiguration; diff --git a/httpchannel-service/httpchannel-service-wupload/src/main/java/com/rogiel/httpchannel/service/wupload/WUploadService.java b/httpchannel-service/httpchannel-service-wupload/src/main/java/com/rogiel/httpchannel/service/wupload/WUploadService.java index c8ae1f5..5181c91 100644 --- a/httpchannel-service/httpchannel-service-wupload/src/main/java/com/rogiel/httpchannel/service/wupload/WUploadService.java +++ b/httpchannel-service/httpchannel-service-wupload/src/main/java/com/rogiel/httpchannel/service/wupload/WUploadService.java @@ -28,7 +28,6 @@ import com.rogiel.httpchannel.service.AbstractAuthenticator; import com.rogiel.httpchannel.service.AbstractHttpService; import com.rogiel.httpchannel.service.AbstractUploader; import com.rogiel.httpchannel.service.AccountDetails; -import com.rogiel.httpchannel.service.AccountDetails.PremiumAccountDetails; import com.rogiel.httpchannel.service.AuthenticationService; import com.rogiel.httpchannel.service.Authenticator; import com.rogiel.httpchannel.service.AuthenticatorCapability; @@ -41,6 +40,7 @@ import com.rogiel.httpchannel.service.UploadChannel; import com.rogiel.httpchannel.service.UploadService; import com.rogiel.httpchannel.service.Uploader; import com.rogiel.httpchannel.service.UploaderCapability; +import com.rogiel.httpchannel.service.AccountDetails.PremiumAccountDetails; import com.rogiel.httpchannel.service.channel.LinkedUploadChannel; import com.rogiel.httpchannel.service.channel.LinkedUploadChannel.LinkedUploadChannelCloseCallback; import com.rogiel.httpchannel.service.config.NullAuthenticatorConfiguration; diff --git a/httpchannel-service/pom.xml b/httpchannel-service/pom.xml index a8467de..4ab50c8 100644 --- a/httpchannel-service/pom.xml +++ b/httpchannel-service/pom.xml @@ -24,6 +24,7 @@ httpchannel-service-zshare httpchannel-service-4shared httpchannel-service-2shared + httpchannel-service-ifile diff --git a/httpchannel-util/src/main/java/com/rogiel/httpchannel/captcha/ReCaptchaExtractor.java b/httpchannel-util/src/main/java/com/rogiel/httpchannel/captcha/ReCaptchaExtractor.java index b59534d..fd2e0a1 100644 --- a/httpchannel-util/src/main/java/com/rogiel/httpchannel/captcha/ReCaptchaExtractor.java +++ b/httpchannel-util/src/main/java/com/rogiel/httpchannel/captcha/ReCaptchaExtractor.java @@ -22,6 +22,7 @@ import java.io.IOException; import java.net.URI; import java.util.regex.Pattern; +import com.rogiel.httpchannel.captcha.ImageCaptcha; import com.rogiel.httpchannel.http.HttpContext; import com.rogiel.httpchannel.util.PatternUtils; import com.rogiel.httpchannel.util.htmlparser.HTMLPage; diff --git a/httpchannel-util/src/main/java/com/rogiel/httpchannel/http/HttpContext.java b/httpchannel-util/src/main/java/com/rogiel/httpchannel/http/HttpContext.java index b86a22c..d266f88 100644 --- a/httpchannel-util/src/main/java/com/rogiel/httpchannel/http/HttpContext.java +++ b/httpchannel-util/src/main/java/com/rogiel/httpchannel/http/HttpContext.java @@ -22,8 +22,13 @@ import java.net.URI; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import org.apache.http.HttpRequest; +import org.apache.http.HttpResponse; +import org.apache.http.ProtocolException; import org.apache.http.client.HttpClient; +import org.apache.http.client.params.ClientParamBean; import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.impl.client.DefaultRedirectStrategy; /** * @author Rogiel @@ -35,7 +40,29 @@ public class HttpContext { /** * The {@link HttpClient} instance for this service */ - protected DefaultHttpClient client = new DefaultHttpClient(); + protected final DefaultHttpClient client = new DefaultHttpClient(); + + protected final ClientParamBean params; + + public HttpContext() { + // default configuration + params = new ClientParamBean(client.getParams()); + params.setHandleRedirects(true); + params.setAllowCircularRedirects(true); + params.setRejectRelativeRedirect(false); + params.setMaxRedirects(10); + + // browser behavior + client.setRedirectStrategy(new DefaultRedirectStrategy() { + @Override + public boolean isRedirected(HttpRequest request, + HttpResponse response, + org.apache.http.protocol.HttpContext context) + throws ProtocolException { + return response.containsHeader("Location"); + } + }); + } public GetRequest get(String uri) { return new GetRequest(this, uri); diff --git a/httpchannel-util/src/main/java/com/rogiel/httpchannel/http/PostMultipartRequest.java b/httpchannel-util/src/main/java/com/rogiel/httpchannel/http/PostMultipartRequest.java index 123018d..6220347 100644 --- a/httpchannel-util/src/main/java/com/rogiel/httpchannel/http/PostMultipartRequest.java +++ b/httpchannel-util/src/main/java/com/rogiel/httpchannel/http/PostMultipartRequest.java @@ -21,6 +21,7 @@ package com.rogiel.httpchannel.http; import java.io.IOException; import java.io.UnsupportedEncodingException; +import org.apache.http.Header; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.mime.MultipartEntity; @@ -35,12 +36,20 @@ public class PostMultipartRequest extends PostRequest { public PostMultipartRequest(HttpContext ctx, String uri) { super(ctx, uri); - this.entity = new MultipartEntity(); + this.entity = new MultipartEntity() { + @Override + protected String generateBoundary() { + return "---------------------------9849436581144108930470211272"; + } + }; } @Override public HttpResponse request() throws IOException { final HttpPost post = new HttpPost(uri); + for (final Header header : headers) { + post.addHeader(header); + } post.setEntity(entity); return ctx.client.execute(post); } diff --git a/httpchannel-util/src/main/java/com/rogiel/httpchannel/http/PostRequest.java b/httpchannel-util/src/main/java/com/rogiel/httpchannel/http/PostRequest.java index 1c8b002..973f89d 100644 --- a/httpchannel-util/src/main/java/com/rogiel/httpchannel/http/PostRequest.java +++ b/httpchannel-util/src/main/java/com/rogiel/httpchannel/http/PostRequest.java @@ -23,6 +23,7 @@ import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; +import org.apache.http.Header; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; @@ -39,6 +40,9 @@ public class PostRequest extends Request { @Override public HttpResponse request() throws IOException { final HttpPost post = new HttpPost(uri); + for(final Header header : headers) { + post.addHeader(header); + } post.setEntity(new UrlEncodedFormEntity(params)); return ctx.client.execute(post); } diff --git a/httpchannel-util/src/main/java/com/rogiel/httpchannel/http/Request.java b/httpchannel-util/src/main/java/com/rogiel/httpchannel/http/Request.java index 5581bce..95016bf 100644 --- a/httpchannel-util/src/main/java/com/rogiel/httpchannel/http/Request.java +++ b/httpchannel-util/src/main/java/com/rogiel/httpchannel/http/Request.java @@ -20,11 +20,15 @@ package com.rogiel.httpchannel.http; import java.io.IOException; import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.Future; +import org.apache.http.Header; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; +import org.apache.http.message.BasicHeader; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; @@ -34,6 +38,8 @@ import com.rogiel.httpchannel.util.htmlparser.HTMLPage; public abstract class Request { private static final JSONParser jsonParser = new JSONParser(); + protected final List
headers = new ArrayList<>(); + protected final HttpContext ctx; protected final String uri; @@ -41,6 +47,11 @@ public abstract class Request { this.ctx = ctx; this.uri = uri; } + + public Request header(String name, String value) { + headers.add(new BasicHeader(name, value)); + return this; + } public abstract HttpResponse request() throws IOException; diff --git a/httpchannel-util/src/main/java/com/rogiel/httpchannel/service/AbstractAccountDetails.java b/httpchannel-util/src/main/java/com/rogiel/httpchannel/service/AbstractAccountDetails.java index 664d539..32cb187 100644 --- a/httpchannel-util/src/main/java/com/rogiel/httpchannel/service/AbstractAccountDetails.java +++ b/httpchannel-util/src/main/java/com/rogiel/httpchannel/service/AbstractAccountDetails.java @@ -3,6 +3,9 @@ */ package com.rogiel.httpchannel.service; +import com.rogiel.httpchannel.service.AccountDetails; +import com.rogiel.httpchannel.service.AuthenticationService; + /** * @author Rogiel * diff --git a/httpchannel-util/src/main/java/com/rogiel/httpchannel/service/AbstractAuthenticator.java b/httpchannel-util/src/main/java/com/rogiel/httpchannel/service/AbstractAuthenticator.java index 5e3b020..90cae07 100644 --- a/httpchannel-util/src/main/java/com/rogiel/httpchannel/service/AbstractAuthenticator.java +++ b/httpchannel-util/src/main/java/com/rogiel/httpchannel/service/AbstractAuthenticator.java @@ -18,6 +18,8 @@ */ package com.rogiel.httpchannel.service; +import com.rogiel.httpchannel.service.Authenticator; +import com.rogiel.httpchannel.service.Credential; import com.rogiel.httpchannel.service.Authenticator.AuthenticatorConfiguration; /** diff --git a/httpchannel-util/src/main/java/com/rogiel/httpchannel/service/AbstractDownloader.java b/httpchannel-util/src/main/java/com/rogiel/httpchannel/service/AbstractDownloader.java index d64e905..7e3c659 100644 --- a/httpchannel-util/src/main/java/com/rogiel/httpchannel/service/AbstractDownloader.java +++ b/httpchannel-util/src/main/java/com/rogiel/httpchannel/service/AbstractDownloader.java @@ -22,6 +22,10 @@ import java.io.IOException; import java.io.InputStream; import java.net.URI; +import com.rogiel.httpchannel.service.DownloadChannel; +import com.rogiel.httpchannel.service.DownloadListener; +import com.rogiel.httpchannel.service.DownloadService; +import com.rogiel.httpchannel.service.Downloader; import com.rogiel.httpchannel.service.Downloader.DownloaderConfiguration; import com.rogiel.httpchannel.service.channel.InputStreamDownloadChannel; import com.rogiel.httpchannel.service.exception.DownloadLimitExceededException; diff --git a/httpchannel-util/src/main/java/com/rogiel/httpchannel/service/AbstractHttpDownloader.java b/httpchannel-util/src/main/java/com/rogiel/httpchannel/service/AbstractHttpDownloader.java index dcfb8f9..92ce12d 100644 --- a/httpchannel-util/src/main/java/com/rogiel/httpchannel/service/AbstractHttpDownloader.java +++ b/httpchannel-util/src/main/java/com/rogiel/httpchannel/service/AbstractHttpDownloader.java @@ -29,6 +29,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.rogiel.httpchannel.http.Request; +import com.rogiel.httpchannel.service.DownloadListener; +import com.rogiel.httpchannel.service.DownloadService; +import com.rogiel.httpchannel.service.Downloader; import com.rogiel.httpchannel.service.Downloader.DownloaderConfiguration; import com.rogiel.httpchannel.service.channel.InputStreamDownloadChannel; import com.rogiel.httpchannel.service.exception.DownloadLinkNotFoundException; diff --git a/httpchannel-util/src/main/java/com/rogiel/httpchannel/service/AbstractHttpService.java b/httpchannel-util/src/main/java/com/rogiel/httpchannel/service/AbstractHttpService.java index d3d275a..2416c00 100644 --- a/httpchannel-util/src/main/java/com/rogiel/httpchannel/service/AbstractHttpService.java +++ b/httpchannel-util/src/main/java/com/rogiel/httpchannel/service/AbstractHttpService.java @@ -25,6 +25,8 @@ import com.rogiel.httpchannel.http.GetRequest; import com.rogiel.httpchannel.http.HttpContext; import com.rogiel.httpchannel.http.PostMultipartRequest; import com.rogiel.httpchannel.http.PostRequest; +import com.rogiel.httpchannel.service.AbstractService; +import com.rogiel.httpchannel.service.Service; import com.rogiel.httpchannel.service.channel.LinkedUploadChannel; import com.rogiel.httpchannel.service.exception.UploadServiceException; diff --git a/httpchannel-util/src/main/java/com/rogiel/httpchannel/service/AbstractUploader.java b/httpchannel-util/src/main/java/com/rogiel/httpchannel/service/AbstractUploader.java index 8cdd085..a87959d 100644 --- a/httpchannel-util/src/main/java/com/rogiel/httpchannel/service/AbstractUploader.java +++ b/httpchannel-util/src/main/java/com/rogiel/httpchannel/service/AbstractUploader.java @@ -18,6 +18,8 @@ */ package com.rogiel.httpchannel.service; +import com.rogiel.httpchannel.service.UploadService; +import com.rogiel.httpchannel.service.Uploader; import com.rogiel.httpchannel.service.Uploader.UploaderConfiguration; import com.rogiel.httpchannel.service.channel.LinkedUploadChannel; import com.rogiel.httpchannel.service.channel.LinkedUploadChannel.LinkedUploadChannelCloseCallback;