mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-06-26 21:50:41 +00:00
* 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
63 lines
1.3 KiB
C++
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
|