Commit c2c2f072 authored by Liang Ding's avatar Liang Ding

#12719

parent 8d55c6a2
......@@ -26,7 +26,7 @@ import org.json.JSONObject;
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @author <a href="https://github.com/hzchendou">hzchendou</a>
* @version 1.5.0.5, Mar 17, 2019
* @version 1.5.0.6, Mar 20, 2019
* @since 0.6.0
*/
public final class Option {
......@@ -242,6 +242,11 @@ public final class Option {
*/
public static final String ID_C_GITHUB_REPOS = "githubRepos";
/**
* Key of USite.
*/
public static final String ID_C_USITE = "usite";
// Category constants
/**
* Category - Preference.
......@@ -258,6 +263,11 @@ public final class Option {
*/
public static final String CATEGORY_C_GITHUB = "github";
/**
* Category - HacPai.
*/
public static final String CATEGORY_C_HACPAI = "hacpai";
//// Transient ////
/**
* Key of statistic blog published article count.
......
......@@ -71,6 +71,12 @@ public class CronMgmtService {
@Inject
private ExportService exportService;
/**
* User management service.
*/
@Inject
private UserMgmtService userMgmtService;
/**
* Start all cron tasks.
*/
......@@ -91,6 +97,7 @@ public class CronMgmtService {
SCHEDULED_EXECUTOR_SERVICE.scheduleAtFixedRate(() -> {
try {
pageMgmtService.refreshGitHub();
userMgmtService.refreshUSite();
} catch (final Exception e) {
LOGGER.log(Level.ERROR, "Executes cron failed", e);
} finally {
......
......@@ -150,6 +150,8 @@ public class PageMgmtService {
optionMgmtService.addOrUpdateOption(githubReposOpt);
} catch (final Exception e) {
LOGGER.log(Level.ERROR, "Updates github repos option failed", e);
return;
}
final StringBuilder contentBuilder = new StringBuilder();
......
......@@ -17,6 +17,8 @@
*/
package org.b3log.solo.service;
import jodd.http.HttpRequest;
import jodd.http.HttpResponse;
import org.apache.commons.lang.StringUtils;
import org.b3log.latke.Keys;
import org.b3log.latke.Latkes;
......@@ -31,17 +33,22 @@ import org.b3log.latke.service.LangPropsService;
import org.b3log.latke.service.ServiceException;
import org.b3log.latke.service.annotation.Service;
import org.b3log.latke.util.Strings;
import org.b3log.solo.model.Common;
import org.b3log.solo.model.Option;
import org.b3log.solo.model.UserExt;
import org.b3log.solo.repository.UserRepository;
import org.b3log.solo.util.Solos;
import org.json.JSONObject;
import javax.servlet.http.HttpServletResponse;
/**
* User management service.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @author <a href="https://hacpai.com/member/DASHU">DASHU</a>
* @author <a href="https://github.com/nanolikeyou">nanolikeyou</a>
* @version 1.1.0.16, Feb 8, 2019
* @version 1.1.0.17, Mar 20, 2019
* @since 0.4.0
*/
@Service
......@@ -81,6 +88,66 @@ public class UserMgmtService {
@Inject
private OptionMgmtService optionMgmtService;
/**
* Init service.
*/
@Inject
private InitService initService;
/**
* Refresh usite. 展示站点连接 https://github.com/b3log/solo/issues/12719
*/
public void refreshUSite() {
if (!initService.isInited()) {
return;
}
JSONObject admin;
try {
admin = userRepository.getAdmin();
} catch (final Exception e) {
return;
}
JSONObject usite;
try {
final JSONObject requestJSON = new JSONObject().
put(User.USER_NAME, admin.optString(User.USER_NAME)).
put(UserExt.USER_B3_KEY, admin.optString(UserExt.USER_B3_KEY));
final HttpResponse res = HttpRequest.post("https://hacpai.com/user/usite").trustAllCerts(true).
connectionTimeout(3000).timeout(7000).header("User-Agent", Solos.USER_AGENT).
body(requestJSON.toString()).send();
if (HttpServletResponse.SC_OK != res.statusCode()) {
return;
}
res.charset("UTF-8");
final JSONObject result = new JSONObject(res.bodyText());
if (0 != result.optInt(Keys.STATUS_CODE)) {
return;
}
usite = result.optJSONObject(Common.DATA);
} catch (final Exception e) {
LOGGER.log(Level.ERROR, "Gets usite failed", e);
return;
}
JSONObject usiteOpt = optionQueryService.getOptionById(Option.ID_C_USITE);
if (null == usiteOpt) {
usiteOpt = new JSONObject();
usiteOpt.put(Keys.OBJECT_ID, Option.ID_C_USITE);
usiteOpt.put(Option.OPTION_CATEGORY, Option.CATEGORY_C_HACPAI);
}
usiteOpt.put(Option.OPTION_VALUE, usite.toString());
try {
optionMgmtService.addOrUpdateOption(usiteOpt);
} catch (final Exception e) {
LOGGER.log(Level.ERROR, "Updates usite option failed", e);
return;
}
}
/**
* Updates a user by the specified request json object.
*
......
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