@ -51,13 +51,10 @@ import com.android.internalcopy.http.multipart.FilePart;
@@ -51,13 +51,10 @@ import com.android.internalcopy.http.multipart.FilePart;
import com.android.internalcopy.http.multipart.MultipartEntity ;
import com.android.internalcopy.http.multipart.Part ;
/ * *
* An adapter that allows for easy access to Torrentflux - b4rt installs . Communication
* is handled via HTTP GET requests and XML responses .
*
* An adapter that allows for easy access to Torrentflux - b4rt installs . Communication is handled via HTTP GET requests
* and XML responses .
* @author erickok
*
* /
public class Tfb4rtAdapter implements IDaemonAdapter {
@ -90,19 +87,19 @@ public class Tfb4rtAdapter implements IDaemonAdapter {
@@ -90,19 +87,19 @@ public class Tfb4rtAdapter implements IDaemonAdapter {
case Retrieve :
// Request all torrents from server
return new RetrieveTaskSuccessResult ( ( RetrieveTask ) task , makeStatsRequest ( ) , null ) ;
return new RetrieveTaskSuccessResult ( ( RetrieveTask ) task , makeStatsRequest ( ) , null ) ;
case AddByFile :
// Add a torrent to the server by sending the contents of a local .torrent file
String file = ( ( AddByFileTask ) task ) . getFile ( ) ;
String file = ( ( AddByFileTask ) task ) . getFile ( ) ;
makeFileUploadRequest ( "fileUpload" , file ) ;
return null ;
case AddByUrl :
// Request to add a torrent by URL
String url = ( ( AddByUrlTask ) task ) . getUrl ( ) ;
String url = ( ( AddByUrlTask ) task ) . getUrl ( ) ;
makeActionRequest ( "urlUpload" , url ) ;
return new DaemonTaskSuccessResult ( task ) ;
@ -110,7 +107,8 @@ public class Tfb4rtAdapter implements IDaemonAdapter {
@@ -110,7 +107,8 @@ public class Tfb4rtAdapter implements IDaemonAdapter {
// Remove a torrent
RemoveTask removeTask = ( RemoveTask ) task ;
makeActionRequest ( ( removeTask . includingData ( ) ? "deleteWithData" : "delete" ) , task . getTargetTorrent ( ) . getUniqueID ( ) ) ;
makeActionRequest ( ( removeTask . includingData ( ) ? "deleteWithData" : "delete" ) , task . getTargetTorrent ( )
. getUniqueID ( ) ) ;
return new DaemonTaskSuccessResult ( task ) ;
case Pause :
@ -144,7 +142,8 @@ public class Tfb4rtAdapter implements IDaemonAdapter {
@@ -144,7 +142,8 @@ public class Tfb4rtAdapter implements IDaemonAdapter {
return null ;
default :
return new DaemonTaskFailureResult ( task , new DaemonException ( ExceptionType . MethodUnsupported , task . getMethod ( ) + " is not supported by " + getType ( ) ) ) ;
return new DaemonTaskFailureResult ( task , new DaemonException ( ExceptionType . MethodUnsupported ,
task . getMethod ( ) + " is not supported by " + getType ( ) ) ) ;
}
} catch ( DaemonException e ) {
return new DaemonTaskFailureResult ( task , e ) ;
@ -162,7 +161,7 @@ public class Tfb4rtAdapter implements IDaemonAdapter {
@@ -162,7 +161,7 @@ public class Tfb4rtAdapter implements IDaemonAdapter {
// Make request
HttpGet httpget = new HttpGet ( buildWebUIUrl ( RPC_URL_STATS ) ) ;
HttpResponse response = httpclient . execute ( httpget ) ;
HttpResponse response = httpclient . execute ( httpget ) ;
// Read XML response
InputStream instream = response . getEntity ( ) . getContent ( ) ;
@ -190,7 +189,8 @@ public class Tfb4rtAdapter implements IDaemonAdapter {
@@ -190,7 +189,8 @@ public class Tfb4rtAdapter implements IDaemonAdapter {
}
// Make request
HttpGet httpget = new HttpGet ( buildWebUIUrl ( RPC_URL_DISPATCH + action + RPC_URL_DISPATCH2 + RPC_URL_AID + ( action . equals ( "urlUpload" ) ? RPC_URL_URL : RPC_URL_TRANSFER ) + target ) ) ;
HttpGet httpget = new HttpGet ( buildWebUIUrl ( RPC_URL_DISPATCH + action + RPC_URL_DISPATCH2 + RPC_URL_AID
+ ( action . equals ( "urlUpload" ) ? RPC_URL_URL : RPC_URL_TRANSFER ) + target ) ) ;
HttpResponse response = httpclient . execute ( httpget ) ;
// Read response (a successful action always returned '1')
@ -261,15 +261,22 @@ public class Tfb4rtAdapter implements IDaemonAdapter {
@@ -261,15 +261,22 @@ public class Tfb4rtAdapter implements IDaemonAdapter {
/ * *
* Build the URL of specific Torrentflux site request from the user settings and some requested action .
* @param act The action to perform , which is an already build query string without usernmae / password , i . e . dispatcher . php ? action = stop & transfer = ubuntu . torrent
* @return The URL of a specific request , i . e . http : //localhost:80/turrentflux/dispatcher.php?action=stop&transfer=ubuntu.torrent&username=admin&md5pass=asd98as7d
* @param act The action to perform , which is an already build query string without usernmae / password , i . e .
* dispatcher . php ? action = stop & transfer = ubuntu . torrent
* @return The URL of a specific request , i . e .
* http : //localhost:80/turrentflux/dispatcher.php?action=stop&transfer=ubuntu
* . torrent & username = admin & md5pass = asd98as7d
* /
private String buildWebUIUrl ( String act ) {
String folder = settings . getFolder ( ) . endsWith ( "/" ) ?
settings . getFolder ( ) . substring ( 0 , settings . getFolder ( ) . length ( ) - 1 ) :
settings . getFolder ( ) ;
return ( settings . getSsl ( ) ? "https://" : "http://" ) + settings . getAddress ( ) + ":" + settings . getPort ( ) +
folder + act + RPC_URL_USER + settings . getUsername ( ) + RPC_URL_PASS + md5Pass ( ( settings . getPassword ( ) = = null ? "" : settings . getPassword ( ) ) ) ;
String folder = "" ;
if ( settings . getFolder ( ) ! = null ) {
folder = settings . getFolder ( ) ;
if ( folder . endsWith ( "/" ) )
folder = folder . substring ( 0 , folder . length ( ) - 1 ) ;
}
return ( settings . getSsl ( ) ? "https://" : "http://" ) + settings . getAddress ( ) + ":" + settings . getPort ( ) + folder
+ act + RPC_URL_USER + settings . getUsername ( ) + RPC_URL_PASS
+ md5Pass ( ( settings . getPassword ( ) = = null ? "" : settings . getPassword ( ) ) ) ;
}
/ * *
@ -281,8 +288,8 @@ public class Tfb4rtAdapter implements IDaemonAdapter {
@@ -281,8 +288,8 @@ public class Tfb4rtAdapter implements IDaemonAdapter {
try {
MessageDigest m = MessageDigest . getInstance ( "MD5" ) ;
byte [ ] data = pass . getBytes ( ) ;
m . update ( data , 0 , data . length ) ;
BigInteger i = new BigInteger ( 1 , m . digest ( ) ) ;
m . update ( data , 0 , data . length ) ;
BigInteger i = new BigInteger ( 1 , m . digest ( ) ) ;
return String . format ( "%1$032X" , i ) ;
} catch ( NoSuchAlgorithmException e ) {
e . printStackTrace ( ) ;