27#include <nlohmann/json.hpp>
32wxString normalizeProviderUrl(
const wxString& aUrl )
34 wxString normalized = aUrl;
36 normalized.Trim(
true ).Trim(
false );
38 if( normalized.EndsWith( wxS(
"/" ) ) )
39 normalized.RemoveLast();
41 return normalized.Lower();
48 return wxS(
"${KIPRJMOD}/RemoteLibrary" );
54 return wxS(
"remote" );
60 const std::string normalized = normalizeProviderUrl( aMetadataUrl ).ToStdString();
63 picosha2::hash256_hex_string( normalized, hashHex );
65 return wxString::Format( wxS(
"provider-%s" ),
66 wxString::FromUTF8( hashHex.substr( 0, 12 ).c_str() ) );
85 return aEntry.provider_id == aProviderId;
88 return it ==
providers.end() ? nullptr : &(*it);
93 const wxString& aProviderId )
const
100 const wxString& aMetadataUrl )
102 const wxString normalized = normalizeProviderUrl( aMetadataUrl );
107 return normalizeProviderUrl( aEntry.metadata_url ) == normalized;
110 return it ==
providers.end() ? nullptr : &(*it);
115 const wxString& aMetadataUrl )
const
127 provider.
metadata_url = normalizeProviderUrl( aMetadataUrl );
137 aJson = nlohmann::json{
151 if( aJson.contains(
"provider_id" ) )
152 aEntry.
provider_id = aJson.at(
"provider_id" ).get<wxString>();
154 if( aJson.contains(
"metadata_url" ) )
155 aEntry.
metadata_url = aJson.at(
"metadata_url" ).get<wxString>();
157 if( aJson.contains(
"display_name_override" ) )
160 if( aJson.contains(
"last_account_label" ) )
163 if( aJson.contains(
"last_auth_status" ) )
175 aJson = nlohmann::json{
189 if( aJson.contains(
"providers" ) )
190 aSettings.
providers = aJson.at(
"providers" ).get<std::vector<REMOTE_PROVIDER_ENTRY>>();
192 if( aJson.contains(
"last_used_provider_id" ) )
195 if( aJson.contains(
"destination_dir" ) )
196 aSettings.
destination_dir = aJson.at(
"destination_dir" ).get<wxString>();
198 if( aJson.contains(
"library_prefix" ) )
199 aSettings.
library_prefix = aJson.at(
"library_prefix" ).get<wxString>();
201 if( aJson.contains(
"add_to_global_table" ) )
void to_json(nlohmann::json &aJson, const REMOTE_PROVIDER_ENTRY &aEntry)
void from_json(const nlohmann::json &aJson, REMOTE_PROVIDER_ENTRY &aEntry)
wxString last_account_label
wxString last_auth_status
wxString display_name_override
std::vector< REMOTE_PROVIDER_ENTRY > providers
REMOTE_PROVIDER_ENTRY * FindProviderById(const wxString &aProviderId)
REMOTE_PROVIDER_ENTRY & UpsertProvider(const wxString &aMetadataUrl)
wxString last_used_provider_id
REMOTE_PROVIDER_ENTRY * FindProviderByMetadataUrl(const wxString &aMetadataUrl)
REMOTE_PROVIDER_SETTINGS()
static wxString CreateProviderId(const wxString &aMetadataUrl)
static wxString DefaultLibraryPrefix()
static wxString DefaultDestinationDir()