COM interface and some other improvements
COM interface and some other improvements
Good day. First of all I'd like to thank developers for making fdm open source. I've been using a little customized version for a while. However I'm not really inspired of including the modifications every time a newer version is released. Thus I'd like to suggest to include those into the standard releases. Those are:
1) CWGUrlReceiver:
a) get_DownloadID . I think, being able to create a download is not enough. It's also valuable to have an ability to identify the created download. Thus this method returns the download ID. The property is currently read-only. A little refactoring of some structures was required to achieve this.
b) AddMirror . This is actually, what the whole thing is about. I needed the ability to add mirrors, not only downloads.
c) UpdateDownload . In my implementation this only allows to update the main url of the download. This is the least I needed, so didn't go further. A complete implementation should probably be able to deal with all of the properties.
2) CFDMDownloadsStat::BuildListOfDownloads
I actually consider this one to be a bug. There was just no possibility to enumerate stopped downloads. On my opinion the function should not return an empty list if both it's arguments are false, because then it just makes no sense to call the function. So I changed the behaviour making it always include the stopped downloads and additionally those specified by the arguments.
3) CFDMDownload
a) get_DownloadID . This one is important to find a specific download from the list built by the method BuildListOfDownloads. E.g. to add a mirror to a certain download.
b) get_Comment . I needed only this method for my personal use, but the complete implementation should include also the methods for obtaining all other relevant download properties.
c) put_Url . This method was already a part of the interface, but it just made no sense. I'm not using it currently, but I still modified it to affect the real download. Otherwise the method is just useless.
4) fsInternetDownloader::FindNotBusyMirrorIndex
I don't think this modification should be incorporated as is. The current modified behaviour is the following: select the best mirror only from the unused ones, if no unused found, then select the best one from all provided mirrors. That's the least effort modification, that gives me, what I need. The correct improvement should add an additional network option "Maximum number of connections per one mirror" to Options->Settings->Downloads->Network. That's because different mirrors may stem from the same server, and in my cases they do.
5) There're also a couple of little bugs. Those are marked with the comment /** MODIFIED **/ same as all other modifications.
Not implemented additional improvements:
1) This one is a bug. If a download has customized properties, that differ from those default specified in Options->Settings->Downloads->New download->Advanced, such as a custom proxy server, then under certain circumstances (like stopping the download) the properties may automatically revert to the default ones.
2) The GUI currently allows to specify advanced settings (e.g. a custom proxy) for every mirror of a download. The implementation however ignores those settings. It would be great to make use of those advanced settings. I'm able to overcome the problem with a multiplexing proxy, but an fdm native solution is still preferred.
3) A valuable improvement is adding a button "Modify" to the "Mirrors" tab of the download properties. It's uncomfortable to delete the existing mirror and to add it again in order to just change a single character in a link.
4) It would be great to be able to specify a specific mirror when creating additional section in the download context menu->Advanced->Create one more section. Either here or probably even better from the "Mirrors" tab in the download properties.
All modifications are marked with the comment /** MODIFIED **/ within the archive attached here.
Kind regards
1) CWGUrlReceiver:
a) get_DownloadID . I think, being able to create a download is not enough. It's also valuable to have an ability to identify the created download. Thus this method returns the download ID. The property is currently read-only. A little refactoring of some structures was required to achieve this.
b) AddMirror . This is actually, what the whole thing is about. I needed the ability to add mirrors, not only downloads.
c) UpdateDownload . In my implementation this only allows to update the main url of the download. This is the least I needed, so didn't go further. A complete implementation should probably be able to deal with all of the properties.
2) CFDMDownloadsStat::BuildListOfDownloads
I actually consider this one to be a bug. There was just no possibility to enumerate stopped downloads. On my opinion the function should not return an empty list if both it's arguments are false, because then it just makes no sense to call the function. So I changed the behaviour making it always include the stopped downloads and additionally those specified by the arguments.
3) CFDMDownload
a) get_DownloadID . This one is important to find a specific download from the list built by the method BuildListOfDownloads. E.g. to add a mirror to a certain download.
b) get_Comment . I needed only this method for my personal use, but the complete implementation should include also the methods for obtaining all other relevant download properties.
c) put_Url . This method was already a part of the interface, but it just made no sense. I'm not using it currently, but I still modified it to affect the real download. Otherwise the method is just useless.
4) fsInternetDownloader::FindNotBusyMirrorIndex
I don't think this modification should be incorporated as is. The current modified behaviour is the following: select the best mirror only from the unused ones, if no unused found, then select the best one from all provided mirrors. That's the least effort modification, that gives me, what I need. The correct improvement should add an additional network option "Maximum number of connections per one mirror" to Options->Settings->Downloads->Network. That's because different mirrors may stem from the same server, and in my cases they do.
5) There're also a couple of little bugs. Those are marked with the comment /** MODIFIED **/ same as all other modifications.
Not implemented additional improvements:
1) This one is a bug. If a download has customized properties, that differ from those default specified in Options->Settings->Downloads->New download->Advanced, such as a custom proxy server, then under certain circumstances (like stopping the download) the properties may automatically revert to the default ones.
2) The GUI currently allows to specify advanced settings (e.g. a custom proxy) for every mirror of a download. The implementation however ignores those settings. It would be great to make use of those advanced settings. I'm able to overcome the problem with a multiplexing proxy, but an fdm native solution is still preferred.
3) A valuable improvement is adding a button "Modify" to the "Mirrors" tab of the download properties. It's uncomfortable to delete the existing mirror and to add it again in order to just change a single character in a link.
4) It would be great to be able to specify a specific mirror when creating additional section in the download context menu->Advanced->Create one more section. Either here or probably even better from the "Mirrors" tab in the download properties.
All modifications are marked with the comment /** MODIFIED **/ within the archive attached here.
Kind regards
Return to “Feature suggestions”
Who is online
Users browsing this forum: No registered users and 3 guests