提交 6caa74b0 编写于 作者: M MaxKey

HttpEncoder StreamUtils Preconditions

上级 76f089a3
......@@ -35,16 +35,17 @@ public abstract class HttpEncoder {
ENCODING_RULES = Collections.unmodifiableMap(rules);
}
public static String encode(String plain) throws Exception {
String encoded;
public static String encode(String plain) {
String encoded = null;
try {
encoded = URLEncoder.encode(plain, CHARSET);
for (Map.Entry<String, String> rule : ENCODING_RULES.entrySet()) {
encoded = applyRule(encoded, rule.getKey(), rule.getValue());
}
} catch (UnsupportedEncodingException uee) {
throw new Exception("Charset not found while encoding string: " + CHARSET, uee);
}
for (Map.Entry<String, String> rule : ENCODING_RULES.entrySet()) {
encoded = applyRule(encoded, rule.getKey(), rule.getValue());
uee.printStackTrace();
}
return encoded;
}
......
/*
* Copyright [2022] [MaxKey of copyright http://www.maxkey.top]
*
* 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.
*/
package org.maxkey.util;
import java.util.Locale;
import java.util.regex.Pattern;
import org.maxkey.client.oauth.model.OAuthConstants;
/**
* Utils for checking preconditions and invariants
*/
public abstract class Preconditions {
private static final String DEFAULT_MESSAGE = "Received an invalid parameter";
// scheme = alpha *( alpha | digit | "+" | "-" | "." )
private static final String URL_REGEXP = "^[a-zA-Z][a-zA-Z0-9+.-]*://\\S+";
/**
* Checks that an object is not null.
*
* @param object any object
* @param errorMsg error message
*
* @throws IllegalArgumentException if the object is null
*/
public static void checkNotNull(Object object, String errorMsg) {
check(object != null, errorMsg);
}
/**
* Checks that a string is not null or empty
*
* @param string any string
* @param errorMsg error message
*
* @throws IllegalArgumentException if the string is null or empty
*/
public static void checkEmptyString(String string, String errorMsg) {
check(string != null && !string.trim().isEmpty(), errorMsg);
}
/**
* Checks that a URL is valid
*
* @param url any string
* @param errorMsg error message
*/
public static void checkValidUrl(String url, String errorMsg) {
checkEmptyString(url, errorMsg);
check(isUrl(url), errorMsg);
}
/**
* Checks that a URL is a valid OAuth callback
*
* @param url any string
* @param errorMsg error message
*/
public static void checkValidOAuthCallback(String url, String errorMsg) {
checkEmptyString(url, errorMsg);
if (url.toLowerCase(Locale.getDefault()).compareToIgnoreCase(OAuthConstants.OUT_OF_BAND) != 0) {
check(isUrl(url), errorMsg);
}
}
private static boolean isUrl(String url) {
return Pattern.compile(URL_REGEXP).matcher(url).matches();
}
private static void check(boolean requirements, String error) {
if (!requirements) {
throw new IllegalArgumentException(error == null || error.trim().length() <= 0 ? DEFAULT_MESSAGE : error);
}
}
}
/*
* Copyright [2022] [MaxKey of copyright http://www.maxkey.top]
*
* 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.
*/
package org.maxkey.util;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.zip.GZIPInputStream;
/**
* Utils to deal with Streams.
*/
public abstract class StreamUtils {
/**
* Returns the stream contents as an UTF-8 encoded string
*
* @param is input stream
* @return string contents
* @throws java.io.IOException in any. SocketTimeout in example
*/
public static String getStreamContents(InputStream is) throws IOException {
Preconditions.checkNotNull(is, "Cannot get String from a null object");
final char[] buffer = new char[0x10000];
final StringBuilder out = new StringBuilder();
try (Reader in = new InputStreamReader(is, "UTF-8")) {
int read;
do {
read = in.read(buffer, 0, buffer.length);
if (read > 0) {
out.append(buffer, 0, read);
}
} while (read >= 0);
}
return out.toString();
}
/**
* Return String content from a gzip stream
*
* @param is input stream
* @return string contents
* @throws java.io.IOException in any. SocketTimeout in example
*/
public static String getGzipStreamContents(InputStream is) throws IOException {
Preconditions.checkNotNull(is, "Cannot get String from a null object");
final GZIPInputStream gis = new GZIPInputStream(is);
return getStreamContents(gis);
}
}
\ No newline at end of file
......@@ -54,9 +54,9 @@ public class MaxKeyApplication extends SpringBootServletInitializer {
} catch (ServletException e) {
_logger.error("ServletException", e);
}
_logger.info("MaxKey at " + new DateTime());
_logger.info("MaxKey Server Port "
+ applicationContext.getBean(ApplicationConfig.class).getPort());
_logger.info("MaxKey at {}" , new DateTime());
_logger.info("MaxKey Server Port {}"
,applicationContext.getBean(ApplicationConfig.class).getPort());
_logger.info("MaxKey started.");
}
......
......@@ -61,16 +61,19 @@ public class MaxKeyMgtApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
_logger.info("Start MaxKeyMgtApplication ...");
ConfigurableApplicationContext applicationContext =SpringApplication.run(MaxKeyMgtApplication.class, args);
InitializeContext initWebContext=new InitializeContext(applicationContext);
ConfigurableApplicationContext applicationContext =
SpringApplication.run(MaxKeyMgtApplication.class, args);
InitializeContext initWebContext =
new InitializeContext(applicationContext);
try {
initWebContext.init(null);
} catch (ServletException e) {
_logger.error("Exception ",e);
}
_logger.info("MaxKeyMgt at "+new DateTime());
_logger.info("MaxKeyMgt Server Port "+applicationContext.getBean(ApplicationConfig.class).getPort());
_logger.info("MaxKeyMgt at {}" , new DateTime());
_logger.info("MaxKeyMgt Server Port {}"
,applicationContext.getBean(ApplicationConfig.class).getPort());
_logger.info("MaxKeyMgt started.");
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册