Some PRPLs, like XMPP, support account management from within Pidgin. We can too!)
Many of the relevant endpoints are public; it should be simple to implement these natively and expose it through the GUI. For these actions, there is no need to depend on harmony itself (which would introduce complex dependencies).
The tricky bits are the private endpoints known through harmony (see https://github.com/nickolas360/harmony/blob/60e6983259f013dee1c05ece1b4e182de074b949/harmony/harmony.py#L98-L286 for the relevant code). In particular, registration, which requires solving a CAPTCHA. harmony's sister project, librecaptcha is capable of solving these with free software, but librecaptcha is a complex module with several complex dependencies. Additionally, it would integrate poorly with the libpurple GUI. There are a few options to deal with this:
Don't support registration
Support registration, but prompt for a CAPTCHA solved externally
Ditto, but open librecaptcha in a terminal emulator directly if it's installed.
Modify librecaptcha to fit better with the purple way (still difficult to work with).
Jdownloader2 ( http://jdownloader.org ) opens captcha windows, as well as using various captcha solving services. I personally feel that presenting the captcha to the user is sufficient.
Some PRPLs, like XMPP, support account management from within Pidgin. We can too!) Many of the relevant endpoints are public; it should be simple to implement these natively and expose it through the GUI. For these actions, there is no need to depend on harmony itself (which would introduce complex dependencies).
The tricky bits are the private endpoints known through harmony (see https://github.com/nickolas360/harmony/blob/60e6983259f013dee1c05ece1b4e182de074b949/harmony/harmony.py#L98-L286 for the relevant code). In particular, registration, which requires solving a CAPTCHA. harmony's sister project, librecaptcha is capable of solving these with free software, but librecaptcha is a complex module with several complex dependencies. Additionally, it would integrate poorly with the libpurple GUI. There are a few options to deal with this:
Of these, 2 or 3 are the only ones that are sane.
Any thoughts would be appreciated :smile: