diff --git a/3rdparty/cpprestsdk/include/cpprest/oauth1.h b/3rdparty/cpprestsdk/include/cpprest/oauth1.h
deleted file mode 100644
index 355c04fb91691c8d3bbb3fdf074f4c80f5353cc3..0000000000000000000000000000000000000000
--- a/3rdparty/cpprestsdk/include/cpprest/oauth1.h
+++ /dev/null
@@ -1,577 +0,0 @@
-/***
-* ==++==
-*
-* Copyright (c) Microsoft Corporation. All rights reserved.
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*
-* ==--==
-* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
-*
-* HTTP Library: Oauth 1.0
-*
-* For the latest on this and related APIs, please see http://casablanca.codeplex.com.
-*
-* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-****/
-#pragma once
-
-#ifndef _CASA_OAUTH1_H
-#define _CASA_OAUTH1_H
-
-#include "cpprest/http_msg.h"
-
-namespace web
-{
-namespace http
-{
-namespace client
-{
- // Forward declaration to avoid circular include dependency.
- class http_client_config;
-}
-
-/// oAuth 1.0 library.
-namespace oauth1
-{
-namespace details
-{
-
-class oauth1_handler;
-
-// State currently used by oauth1_config to authenticate request.
-// The state varies for every request (due to timestamp and nonce).
-// The state also contains extra transmitted protocol parameters during
-// authorization flow (i.e. 'oauth_callback' or 'oauth_verifier').
-class oauth1_state
-{
-public:
- oauth1_state(utility::string_t timestamp, utility::string_t nonce,
- utility::string_t extra_key=utility::string_t(),
- utility::string_t extra_value=utility::string_t()) :
- m_timestamp(std::move(timestamp)),
- m_nonce(std::move(nonce)),
- m_extra_key(std::move(extra_key)),
- m_extra_value(std::move(extra_value))
- {}
-
- const utility::string_t& timestamp() const { return m_timestamp; }
- void set_timestamp(utility::string_t timestamp) { m_timestamp = std::move(timestamp); }
-
- const utility::string_t& nonce() const { return m_nonce; }
- void set_nonce(utility::string_t nonce) { m_nonce = std::move(nonce); }
-
- const utility::string_t& extra_key() const { return m_extra_key; }
- void set_extra_key(utility::string_t key) { m_extra_key = std::move(key); }
-
- const utility::string_t& extra_value() const { return m_extra_value; }
- void set_extra_value(utility::string_t value) { m_extra_value = std::move(value); }
-
-private:
- utility::string_t m_timestamp;
- utility::string_t m_nonce;
- utility::string_t m_extra_key;
- utility::string_t m_extra_value;
-};
-
-// Constant strings for OAuth 1.0.
-typedef utility::string_t oauth1_string;
-class oauth1_strings
-{
-public:
-#define _OAUTH1_STRINGS
-#define DAT(a_, b_) _ASYNCRTIMP static const oauth1_string a_;
-#include "cpprest/details/http_constants.dat"
-#undef _OAUTH1_STRINGS
-#undef DAT
-};
-
-} // namespace web::http::oauth1::details
-
-/// oAuth functionality is currently in beta.
-namespace experimental
-{
-
-///
-/// Constant strings for OAuth 1.0 signature methods.
-///
-typedef utility::string_t oauth1_method;
-class oauth1_methods
-{
-public:
-#define _OAUTH1_METHODS
-#define DAT(a,b) _ASYNCRTIMP static const oauth1_method a;
-#include "cpprest/details/http_constants.dat"
-#undef _OAUTH1_METHODS
-#undef DAT
-};
-
-///
-/// Exception type for OAuth 1.0 errors.
-///
-class oauth1_exception : public std::exception
-{
-public:
- oauth1_exception(utility::string_t msg) : m_msg(utility::conversions::to_utf8string(std::move(msg))) {}
- ~oauth1_exception() CPPREST_NOEXCEPT {}
- const char* what() const CPPREST_NOEXCEPT { return m_msg.c_str(); }
-
-private:
- std::string m_msg;
-};
-
-///
-/// OAuth 1.0 token and associated information.
-///
-class oauth1_token
-{
-public:
-
- ///
- /// Constructs a OAuth1 token from a given access token and secret.
- ///
- /// Access token string.
- /// Token secret string.
- oauth1_token(utility::string_t access_token, utility::string_t secret) :
- m_token(std::move(access_token)),
- m_secret(std::move(secret))
- {}
-
- ///
- /// Get access token validity state.
- /// If true, token is a valid access token.
- ///
- /// Access token validity state of the token.
- bool is_valid_access_token() const { return !(access_token().empty() || secret().empty()); }
-
- ///
- /// Get access token.
- ///
- /// The access token string.
- const utility::string_t& access_token() const { return m_token; }
-
- ///
- /// Set access token.
- ///
- /// Access token string to set.
- void set_access_token(utility::string_t &&access_token) { m_token = std::move(access_token); }
-
- ///
- /// Set access token.
- ///
- /// Access token string to set.
- void set_access_token(const utility::string_t &access_token) { m_token = access_token; }
-
- ///
- /// Get token secret.
- ///
- /// Token secret string.
- const utility::string_t& secret() const { return m_secret; }
-
- ///
- /// Set token secret.
- ///
- /// Token secret string to set.
- void set_secret(utility::string_t &&secret) { m_secret = std::move(secret); }
-
- ///
- /// Set token secret.
- ///
- /// Token secret string to set.
- void set_secret(const utility::string_t &secret) { m_secret = secret; }
-
- ///
- /// Retrieves any additional parameters.
- ///
- /// A map containing the additional parameters.
- const std::map &additional_parameters() const { return m_additional_parameters; }
-
- ///
- /// Sets a specific parameter additional parameter.
- ///
- /// Parameter name.
- /// Parameter value.
- void set_additional_parameter(utility::string_t &¶mName, utility::string_t &¶mValue)
- {
- m_additional_parameters[std::move(paramName)] = std::move(paramValue);
- }
-
- ///
- /// Sets a specific parameter additional parameter.
- ///
- /// Parameter name.
- /// Parameter value.
- void set_additional_parameter(const utility::string_t ¶mName, const utility::string_t ¶mValue)
- {
- m_additional_parameters[paramName] = paramValue;
- }
-
- ///
- /// Clears all additional parameters.
- ///
- void clear_additional_parameters() { m_additional_parameters.clear(); }
-
-private:
- friend class oauth1_config;
-
- oauth1_token() {}
-
- utility::string_t m_token;
- utility::string_t m_secret;
- std::map m_additional_parameters;
-};
-
-///
-/// OAuth 1.0 configuration class.
-///
-class oauth1_config
-{
-public:
- oauth1_config(utility::string_t consumer_key, utility::string_t consumer_secret,
- utility::string_t temp_endpoint, utility::string_t auth_endpoint,
- utility::string_t token_endpoint, utility::string_t callback_uri,
- oauth1_method method, utility::string_t realm=utility::string_t()) :
- m_consumer_key(std::move(consumer_key)),
- m_consumer_secret(std::move(consumer_secret)),
- m_temp_endpoint(std::move(temp_endpoint)),
- m_auth_endpoint(std::move(auth_endpoint)),
- m_token_endpoint(std::move(token_endpoint)),
- m_callback_uri(std::move(callback_uri)),
- m_realm(std::move(realm)),
- m_method(std::move(method)),
- m_is_authorization_completed(false)
- {}
-
- ///
- /// Builds an authorization URI to be loaded in a web browser/view.
- /// The URI is built with auth_endpoint() as basis.
- /// The method creates a task for HTTP request to first obtain a
- /// temporary token. The authorization URI build based on this token.
- ///
- /// Authorization URI to be loaded in a web browser/view.
- _ASYNCRTIMP pplx::task build_authorization_uri();
-
- ///
- /// Fetch an access token based on redirected URI.
- /// The URI is expected to contain 'oauth_verifier'
- /// parameter, which is then used to fetch an access token using the
- /// token_from_verifier() method.
- /// See: http://tools.ietf.org/html/rfc5849#section-2.2
- /// The received 'oauth_token' is parsed and verified to match the current token().
- /// When access token is successfully obtained, set_token() is called, and config is
- /// ready for use by oauth1_handler.
- ///
- /// The URI where web browser/view was redirected after resource owner's authorization.
- /// Task that fetches the access token based on redirected URI.
- _ASYNCRTIMP pplx::task token_from_redirected_uri(const web::http::uri& redirected_uri);
-
- ///
- /// Creates a task with HTTP request to fetch an access token from the token endpoint.
- /// The request exchanges a verifier code to an access token.
- /// If successful, the resulting token is set as active via set_token().
- /// See: http://tools.ietf.org/html/rfc5849#section-2.3
- ///
- /// Verifier received via redirect upon successful authorization.
- /// Task that fetches the access token based on the verifier.
- pplx::task token_from_verifier(utility::string_t verifier)
- {
- return _request_token(_generate_auth_state(details::oauth1_strings::verifier, std::move(verifier)), false);
- }
-
- ///
- /// Creates a task with HTTP request to fetch an access token from the token endpoint.
- /// If successful, the resulting token is set as active via set_token().
- ///
- /// Task that fetches the access token based on the verifier.
- pplx::task refresh_token(const utility::string_t &key)
- {
- return _request_token(_generate_auth_state(key, m_token.additional_parameters().at(key)), false);
- }
-
- ///
- /// Get consumer key used in authorization and authentication.
- ///
- /// Consumer key string.
- const utility::string_t& consumer_key() const { return m_consumer_key; }
- ///
- /// Set consumer key used in authorization and authentication.
- ///
- /// Consumer key string to set.
- void set_consumer_key(utility::string_t key) { m_consumer_key = std::move(key); }
-
- ///
- /// Get consumer secret used in authorization and authentication.
- ///
- /// Consumer secret string.
- const utility::string_t& consumer_secret() const { return m_consumer_secret; }
- ///
- /// Set consumer secret used in authorization and authentication.
- ///
- /// Consumer secret string to set.
- void set_consumer_secret(utility::string_t secret) { m_consumer_secret = std::move(secret); }
-
- ///
- /// Get temporary token endpoint URI string.
- ///
- /// Temporary token endpoint URI string.
- const utility::string_t& temp_endpoint() const { return m_temp_endpoint; }
- ///
- /// Set temporary token endpoint URI string.
- ///
- /// Temporary token endpoint URI string to set.
- void set_temp_endpoint(utility::string_t temp_endpoint) { m_temp_endpoint = std::move(temp_endpoint); }
-
- ///
- /// Get authorization endpoint URI string.
- ///
- /// Authorization endpoint URI string.
- const utility::string_t& auth_endpoint() const { return m_auth_endpoint; }
- ///
- /// Set authorization endpoint URI string.
- ///
- /// Authorization endpoint URI string to set.
- void set_auth_endpoint(utility::string_t auth_endpoint) { m_auth_endpoint = std::move(auth_endpoint); }
-
- ///
- /// Get token endpoint URI string.
- ///
- /// Token endpoint URI string.
- const utility::string_t& token_endpoint() const { return m_token_endpoint; }
- ///
- /// Set token endpoint URI string.
- ///
- /// Token endpoint URI string to set.
- void set_token_endpoint(utility::string_t token_endpoint) { m_token_endpoint = std::move(token_endpoint); }
-
- ///
- /// Get callback URI string.
- ///
- /// Callback URI string.
- const utility::string_t& callback_uri() const { return m_callback_uri; }
- ///
- /// Set callback URI string.
- ///
- /// Callback URI string to set.
- void set_callback_uri(utility::string_t callback_uri) { m_callback_uri = std::move(callback_uri); }
-
- ///
- /// Get token.
- ///
- /// Token.
- const oauth1_token& token() const
- {
- if (m_is_authorization_completed)
- {
- // Return the token object only if authorization has been completed.
- // Otherwise the token object holds a temporary token which should not be
- // returned to the user.
- return m_token;
- }
- else
- {
- static const oauth1_token empty_token;
- return empty_token;
- }
- }
-
- ///
- /// Set token.
- ///
- /// Token to set.
- void set_token(oauth1_token token)
- {
- m_token = std::move(token);
- m_is_authorization_completed = true;
- }
-
- ///
- /// Get signature method.
- ///
- /// Signature method.
- const oauth1_method& method() const { return m_method; }
- ///
- /// Set signature method.
- ///
- /// Signature method.
- void set_method(oauth1_method method) { m_method = std::move(method); }
-
- ///
- /// Get authentication realm.
- ///
- /// Authentication realm string.
- const utility::string_t& realm() const { return m_realm; }
- ///
- /// Set authentication realm.
- ///
- /// Authentication realm string to set.
- void set_realm(utility::string_t realm) { m_realm = std::move(realm); }
-
- ///
- /// Returns enabled state of the configuration.
- /// The oauth1_handler will perform OAuth 1.0 authentication only if
- /// this method returns true.
- /// Return value is true if access token is valid (=fetched or manually set)
- /// and both consumer_key() and consumer_secret() are set (=non-empty).
- ///
- /// The configuration enabled state.
- bool is_enabled() const { return token().is_valid_access_token() && !(consumer_key().empty() || consumer_secret().empty()); }
-
- // Builds signature base string according to:
- // http://tools.ietf.org/html/rfc5849#section-3.4.1.1
- _ASYNCRTIMP utility::string_t _build_signature_base_string(http_request request, details::oauth1_state state) const;
-
- // Builds HMAC-SHA1 signature according to:
- // http://tools.ietf.org/html/rfc5849#section-3.4.2
- utility::string_t _build_hmac_sha1_signature(http_request request, details::oauth1_state state) const
- {
- auto text(_build_signature_base_string(std::move(request), std::move(state)));
- auto digest(_hmac_sha1(_build_key(), std::move(text)));
- auto signature(utility::conversions::to_base64(std::move(digest)));
- return signature;
- }
-
- // Builds PLAINTEXT signature according to:
- // http://tools.ietf.org/html/rfc5849#section-3.4.4
- utility::string_t _build_plaintext_signature() const
- {
- return _build_key();
- }
-
- details::oauth1_state _generate_auth_state(utility::string_t extra_key, utility::string_t extra_value)
- {
- return details::oauth1_state(_generate_timestamp(), _generate_nonce(), std::move(extra_key), std::move(extra_value));
- }
-
- details::oauth1_state _generate_auth_state()
- {
- return details::oauth1_state(_generate_timestamp(), _generate_nonce());
- }
-
- ///
- /// Gets map of parameters to sign.
- ///
- /// Map of parameters.
- const std::map& parameters() const { return m_parameters_to_sign; }
-
- ///
- /// Adds a key value parameter.
- ///
- /// Key as a string value.
- /// Value as a string value.
- void add_parameter(const utility::string_t &key, const utility::string_t &value) { m_parameters_to_sign[key] = value; }
-
- ///
- /// Adds a key value parameter.
- ///
- /// Key as a string value.
- /// Value as a string value.
- void add_parameter(utility::string_t &&key, utility::string_t &&value) { m_parameters_to_sign[std::move(key)] = std::move(value); }
-
- ///
- /// Sets entire map or parameters replacing all previously values.
- ///
- /// Map of values.
- void set_parameters(const std::map ¶meters)
- {
- m_parameters_to_sign.clear();
- m_parameters_to_sign = parameters;
- }
-
- ///
- /// Clears all parameters.
- ///
- void clear_parameters() { m_parameters_to_sign.clear(); }
-
-private:
- friend class web::http::client::http_client_config;
- friend class web::http::oauth1::details::oauth1_handler;
-
- oauth1_config() :
- m_is_authorization_completed(false)
- {}
-
- utility::string_t _generate_nonce()
- {
- return m_nonce_generator.generate();
- }
-
- static utility::string_t _generate_timestamp()
- {
- return utility::conversions::print_string(utility::datetime::utc_timestamp(), std::locale::classic());
- }
-
- _ASYNCRTIMP static std::vector __cdecl _hmac_sha1(const utility::string_t& key, const utility::string_t& data);
-
- static utility::string_t _build_base_string_uri(const uri& u);
-
- utility::string_t _build_normalized_parameters(web::http::uri u, const details::oauth1_state& state) const;
-
- utility::string_t _build_signature(http_request request, details::oauth1_state state) const;
-
- utility::string_t _build_key() const
- {
- return uri::encode_data_string(consumer_secret()) + _XPLATSTR("&") + uri::encode_data_string(m_token.secret());
- }
-
- void _authenticate_request(http_request &req)
- {
- _authenticate_request(req, _generate_auth_state());
- }
-
- _ASYNCRTIMP void _authenticate_request(http_request &req, details::oauth1_state state);
-
- _ASYNCRTIMP pplx::task _request_token(details::oauth1_state state, bool is_temp_token_request);
-
- utility::string_t m_consumer_key;
- utility::string_t m_consumer_secret;
- oauth1_token m_token;
-
- utility::string_t m_temp_endpoint;
- utility::string_t m_auth_endpoint;
- utility::string_t m_token_endpoint;
- utility::string_t m_callback_uri;
- utility::string_t m_realm;
- oauth1_method m_method;
-
- std::map m_parameters_to_sign;
-
- utility::nonce_generator m_nonce_generator;
- bool m_is_authorization_completed;
-};
-
-} // namespace web::http::oauth1::experimental
-
-namespace details
-{
-
-class oauth1_handler : public http_pipeline_stage
-{
-public:
- oauth1_handler(std::shared_ptr cfg) :
- m_config(std::move(cfg))
- {}
-
- virtual pplx::task propagate(http_request request) override
- {
- if (m_config)
- {
- m_config->_authenticate_request(request);
- }
- return next_stage()->propagate(request);
- }
-
-private:
- std::shared_ptr m_config;
-};
-
-}}}}
-
-#endif