From 4bd7da9ff2eb06c11b1f54e2b8e2cfb44af56776 Mon Sep 17 00:00:00 2001
From: gcontini <1121667+gcontini@users.noreply.github.com>
Date: 周六, 02 5月 2020 10:20:38 +0800
Subject: [PATCH] rename StringUtils in string_utls

---
 src/library/locate/ExternalDefinition.cpp |   65 ++++++++++++++------------------
 1 files changed, 29 insertions(+), 36 deletions(-)

diff --git a/src/library/locate/ExternalDefinition.cpp b/src/library/locate/ExternalDefinition.cpp
index 78b9825..a7386de 100644
--- a/src/library/locate/ExternalDefinition.cpp
+++ b/src/library/locate/ExternalDefinition.cpp
@@ -9,64 +9,57 @@
 #include <cstring>
 #include <string>
 #include <vector>
-
+#include <stdexcept>
 #include <licensecc/datatypes.h>
 
 #include "../base/base64.h"
 #include "../base/EventRegistry.h"
-#include "../base/FileUtils.hpp"
-#include "../base/StringUtils.h"
+#include "../base/string_utils.h"
 
 #include "ExternalDefinition.hpp"
+#include "../base/file_utils.hpp"
 
 namespace license {
 namespace locate {
-using namespace std;
+	using namespace std;
 
-ExternalDefinition::ExternalDefinition(const LicenseLocation *location) :
-		LocatorStrategy("ExternalDefinition"), m_location(location) {
-}
+ExternalDefinition::ExternalDefinition(const LicenseLocation *location)
+	: LocatorStrategy("ExternalDefinition"), m_location(location) {}
 
-ExternalDefinition::~ExternalDefinition() {
-}
+ExternalDefinition::~ExternalDefinition() {}
 
-const std::vector<std::string> ExternalDefinition::license_locations(
-		EventRegistry &eventRegistry) {
+const std::vector<std::string> ExternalDefinition::license_locations(EventRegistry &eventRegistry) {
 	vector<string> existing_pos;
-	if (m_location->licenseData != nullptr
-			&& m_location->licenseData[0] != '\0') {
+	if (m_location->licenseData[0] != '\0') {
 		eventRegistry.addEvent(LICENSE_SPECIFIED, get_strategy_name());
-		FILE_FORMAT licenseFormat = identify_format(m_location->licenseData);
-
-		if (licenseFormat == UNKNOWN) {
-			eventRegistry.addEvent(LICENSE_MALFORMED, get_strategy_name());
-		} else {
-			existing_pos.push_back(get_strategy_name());
-			licenseDataIsBase64 = (licenseFormat == BASE64);
+		switch (m_location->license_data_type) {
+			case LICENSE_PATH: {
+				string licData(m_location->licenseData, mstrnlen_s(m_location->licenseData, LCC_API_MAX_LICENSE_DATA_LENGTH));
+				const vector<string> declared_positions = license::split_string(licData, ';');
+				existing_pos =
+					license::filter_existing_files(declared_positions, eventRegistry, get_strategy_name().c_str());
+			} break;
+			case LICENSE_ENCODED:
+			case LICENSE_PLAIN_DATA:
+				existing_pos.push_back(get_strategy_name());
+				break;
+			default:
+				throw logic_error("license type not supported ");
 		}
-	}
-	if (m_location->licenseFileLocation != nullptr
-			&& strlen(m_location->licenseFileLocation) > 0) {
-		const vector<string> declared_positions = license::split_string(
-				m_location->licenseFileLocation, ';');
-		existing_pos = license::filter_existing_files(declared_positions,
-				eventRegistry, get_strategy_name().c_str());
 	}
 	return existing_pos;
 }
 
-const std::string ExternalDefinition::retrieve_license_content(
-		const std::string &licenseLocation) const {
+const std::string ExternalDefinition::retrieve_license_content(const std::string &licenseLocation) const {
 	if (licenseLocation == get_strategy_name()) {
-		if (licenseDataIsBase64) {
-			int flen = 0;
-			unsigned char *raw = unbase64(m_location->licenseData,
-					strlen(m_location->licenseData), &flen);
-			string str = string(reinterpret_cast<char*>(raw));
-			free(raw);
+		string licData(m_location->licenseData, mstrnlen_s(m_location->licenseData, LCC_API_MAX_LICENSE_DATA_LENGTH));
+		if (m_location->license_data_type == LICENSE_ENCODED) {
+			// FIXME what if license is wrong
+			vector<uint8_t> raw = unbase64(licData);
+			string str = string(reinterpret_cast<char *>(raw.data()));
 			return str;
 		} else {
-			return m_location->licenseData;
+			return licData;
 		}
 	} else {
 		return LocatorStrategy::retrieve_license_content(licenseLocation);

--
Gitblit v1.9.1