Files
OrcaSlicer/src/slic3r/GUI/Jobs/OAuthJob.hpp
Noisyfox e29bbac193 Support for SimplyPrint cloud integration (#4525)
* Make httpserver more generic and reusable

* Add OAuthJob

* Fix issue caused by the fact that the backing widget of the `TextCtrl` is no longer `wxTextCtrl`

* Implement login and token refresh

* Implement file upload

* Try fix build error

* Support BBL printers

* Show error message if user hasn't done OAuth

* Fix typo

* Update error message

* Disable unsupported options when SimplyPrint is selected
2024-03-23 10:08:48 +08:00

63 lines
1.3 KiB
C++

#ifndef __OAuthJob_HPP__
#define __OAuthJob_HPP__
#include "Job.hpp"
#include "slic3r/GUI/HttpServer.hpp"
namespace Slic3r {
namespace GUI {
class Plater;
struct OAuthParams
{
std::string login_url;
std::string client_id;
boost::asio::ip::port_type callback_port;
std::string callback_url;
std::string scope;
std::string response_type;
std::string auth_success_redirect_url;
std::string auth_fail_redirect_url;
std::string token_url;
std::string verification_code;
std::string state;
};
struct OAuthResult
{
bool success{false};
std::string error_message{""};
std::string access_token{""};
std::string refresh_token{""};
};
struct OAuthData
{
OAuthParams params;
std::shared_ptr<OAuthResult> result;
};
class OAuthJob : public Job
{
HttpServer local_authorization_server;
OAuthData _data;
wxWindow* m_event_handle{nullptr};
public:
explicit OAuthJob(const OAuthData& input);
void process(Ctl& ctl) override;
void finalize(bool canceled, std::exception_ptr& e) override;
void set_event_handle(wxWindow* hanle) { m_event_handle = hanle; }
static void parse_token_response(const std::string& body, bool error, OAuthResult& result);
};
wxDECLARE_EVENT(EVT_OAUTH_COMPLETE_MESSAGE, wxCommandEvent);
}} // namespace Slic3r::GUI
#endif // OAUTHJOB_HPP