Commit ec7ef602 authored by Liang Ding's avatar Liang Ding

🐛 修复生成静态站点链接问题 Fix #70

parent f9b4b22e
......@@ -66,6 +66,16 @@ public class StaticSiteConsole {
@Inject
private LangPropsService langPropsService;
/**
* Mock request scheme.
*/
private static String scheme;
/**
* Mock request host.
*/
private static String host;
/**
* Generates static site.
*
......@@ -93,12 +103,10 @@ public class StaticSiteConsole {
FileUtils.forceMkdir(new File(staticSitePath));
final URL u = new URL(url);
Latkes.setScheme(u.getProtocol());
Latkes.setHost(u.getHost());
scheme = u.getProtocol();
host = u.getHost();
if (-1 != u.getPort()) {
Latkes.setPort(String.valueOf(u.getPort()));
} else {
Latkes.setPort("");
host += ":" + u.getPort();
}
Solos.GEN_STATIC_SITE = true;
......@@ -160,7 +168,7 @@ public class StaticSiteConsole {
}
}
private static void genCategories() throws Exception {
private static void genCategories() {
final BeanManager beanManager = BeanManager.getInstance();
final CategoryQueryService categoryQueryService = beanManager.getReference(CategoryQueryService.class);
final List<JSONObject> categories = categoryQueryService.getMostTagCategory(Integer.MAX_VALUE);
......@@ -245,7 +253,7 @@ public class StaticSiteConsole {
filePath = StringUtils.replace(filePath, "=", "/");
FileUtils.forceMkdir(new File(staticSitePath + filePath));
final OutputStream outputStream = new FileOutputStream(staticSitePath + filePath + "/index.html");
String html = Mocks.mockRequest(uri);
String html = Mocks.mockRequest(uri, scheme, host);
IOUtils.write(html, outputStream, StandardCharsets.UTF_8);
outputStream.close();
LOGGER.log(Level.INFO, "Generated a page [" + uri + "]");
......@@ -254,7 +262,7 @@ public class StaticSiteConsole {
private static void genURI(final String uri) throws Exception {
FileUtils.forceMkdirParent(new File(staticSitePath + uri));
final OutputStream outputStream = new FileOutputStream(staticSitePath + uri);
String html = Mocks.mockRequest(uri);
String html = Mocks.mockRequest(uri, scheme, host);
IOUtils.write(html, outputStream, StandardCharsets.UTF_8);
outputStream.close();
LOGGER.log(Level.INFO, "Generated a file [" + uri + "]");
......@@ -263,13 +271,13 @@ public class StaticSiteConsole {
private static void genArticle(final String permalink) throws Exception {
if (!StringUtils.endsWithIgnoreCase(permalink, ".html") && !StringUtils.endsWithIgnoreCase(permalink, ".htm")) {
FileUtils.forceMkdir(new File(staticSitePath + permalink));
final String html = Mocks.mockRequest(permalink);
final String html = Mocks.mockRequest(permalink, scheme, host);
final OutputStream outputStream = new FileOutputStream(staticSitePath + permalink + "/index.html");
IOUtils.write(html, outputStream, StandardCharsets.UTF_8);
outputStream.close();
} else {
FileUtils.forceMkdirParent(new File(staticSitePath + permalink));
final String html = Mocks.mockRequest(permalink);
final String html = Mocks.mockRequest(permalink, scheme, host);
final OutputStream outputStream = new FileOutputStream(staticSitePath + permalink);
IOUtils.write(html, outputStream, StandardCharsets.UTF_8);
outputStream.close();
......
......@@ -19,6 +19,7 @@ package org.b3log.solo.util;
import io.netty.handler.codec.http.*;
import org.apache.commons.lang.StringUtils;
import org.b3log.latke.Latkes;
import org.b3log.latke.http.Dispatcher;
import org.b3log.latke.http.Request;
import org.b3log.latke.http.Response;
......@@ -31,7 +32,7 @@ import java.util.Map;
* Mock utilities.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.0.0.0, Jan 7, 2020
* @version 1.0.0.1, Feb 28, 2020
* @since 3.9.0
*/
public final class Mocks {
......@@ -39,10 +40,8 @@ public final class Mocks {
private Mocks() {
}
public static String mockRequest(final String uri) {
final Mocks.MockRequest request = Mocks.mockRequest();
request.setRequestURI(uri);
public static String mockRequest(final String uri, final String scheme, final String host) {
final Mocks.MockRequest request = Mocks.mockRequest0(uri, scheme, host);
if (StringUtils.contains(uri, "?")) {
final Map<String, String> params = new LinkedHashMap<>();
final String query = StringUtils.substringAfter(uri, "?");
......@@ -64,8 +63,17 @@ public final class Mocks {
new MockDispatcher().handle(request, response);
}
private static MockRequest mockRequest() {
final FullHttpRequest req = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, "/a");
private static MockRequest mockRequest0(final String uri, final String scheme, final String host) {
final FullHttpRequest req = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, uri);
Latkes.setScheme(scheme);
if (StringUtils.contains(host, ":")) {
Latkes.setHost(host.split(":")[0]);
Latkes.setPort(host.split(":")[1]);
} else {
Latkes.setHost(host);
Latkes.setPort("");
}
return new MockRequest(req);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment