Skip to content

Commit 90649de

Browse files
authored
Merge pull request #146 from shuzijun/gradle
Replace the proxy mode, add snakeCaseName
2 parents 65f9cbf + 80c16c9 commit 90649de

File tree

6 files changed

+57
-32
lines changed

6 files changed

+57
-32
lines changed

src/main/java/com/shuzijun/leetcode/plugin/manager/QuestionManager.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,10 @@ public static List<Question> getQuestionService() {
4848
String body = EntityUtils.toString(response.getEntity(), "UTF-8");
4949
questionList = parseQuestion(body);
5050
} catch (IOException e1) {
51-
LogUtils.LOG.error("获取题目内容错误", e1);
51+
LogUtils.LOG.error("Request question list exception:", e1);
5252
}
53+
}else {
54+
LogUtils.LOG.error("Request question list failed, status:" + response == null ? "" : response.getStatusLine().getStatusCode());
5355
}
5456
httpget.abort();
5557

@@ -154,10 +156,10 @@ public static List<Tag> getTags() {
154156
String body = EntityUtils.toString(response.getEntity(), "UTF-8");
155157
tags = parseTag(body);
156158
} catch (IOException e1) {
157-
LogUtils.LOG.error("获取题目分类错误", e1);
159+
LogUtils.LOG.error("Request tags exception", e1);
158160
}
159161
} else {
160-
LogUtils.LOG.error("获取题目分类网络错误");
162+
LogUtils.LOG.error("Request tags failed, status:" + response == null ? "" : response.getStatusLine().getStatusCode());
161163
}
162164
httpget.abort();
163165

@@ -174,10 +176,10 @@ public static List<Tag> getLists() {
174176
String body = EntityUtils.toString(response.getEntity(), "UTF-8");
175177
tags = parseList(body);
176178
} catch (IOException e1) {
177-
LogUtils.LOG.error("获取列表分类错误", e1);
179+
LogUtils.LOG.error("Request Lists exception", e1);
178180
}
179181
} else {
180-
LogUtils.LOG.error("获取列表分类网络错误");
182+
LogUtils.LOG.error("Request Lists failed, status:" + response == null ? "" : response.getStatusLine().getStatusCode());
181183
}
182184
httpget.abort();
183185

src/main/java/com/shuzijun/leetcode/plugin/setting/SettingUI.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.shuzijun.leetcode.plugin.model.CodeTypeEnum;
2020
import com.shuzijun.leetcode.plugin.model.Config;
2121
import com.shuzijun.leetcode.plugin.model.Constant;
22+
import com.shuzijun.leetcode.plugin.utils.HttpClientUtils;
2223
import com.shuzijun.leetcode.plugin.utils.MTAUtils;
2324
import com.shuzijun.leetcode.plugin.utils.PropertiesUtils;
2425
import com.shuzijun.leetcode.plugin.utils.URLUtils;
@@ -57,7 +58,6 @@ public SettingUI() {
5758
setContentPane(mainPanel);
5859
}
5960

60-
6161
public void createUI() {
6262

6363
GridBagLayout giGridBagLayout = new GridBagLayout();
@@ -96,6 +96,7 @@ public void createUI() {
9696
addComponent(passwordField, constraints, 4, 1, 5, 1);
9797

9898
proxyCheckBox.setSelected(false);
99+
proxyCheckBox.setToolTipText("Changes need to log in again");
99100
addComponent(proxyCheckBox, constraints, 6, 1, 7, 1);
100101

101102
addComponent(new JLabel("TempFilePath:"), constraints, 0, 2, 0, 2);
@@ -239,6 +240,9 @@ public void apply() {
239240
config.setCodeType(codeComboBox.getSelectedItem().toString());
240241
config.setUrl(webComboBox.getSelectedItem().toString());
241242
config.setUpdate(updateCheckBox.isSelected());
243+
if (config.getProxy() != proxyCheckBox.isSelected()) {
244+
HttpClientUtils.resetHttpclient();
245+
}
242246
config.setProxy(proxyCheckBox.isSelected());
243247
config.setCustomCode(customCodeBox.isSelected());
244248
config.setCustomFileName(fileNameEditor.getDocument().getText());

src/main/java/com/shuzijun/leetcode/plugin/utils/HttpClientUtils.java

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,11 @@
11
package com.shuzijun.leetcode.plugin.utils;
22

3-
import com.intellij.util.net.HttpConfigurable;
3+
import com.intellij.util.proxy.CommonProxy;
44
import com.shuzijun.leetcode.plugin.model.Config;
55
import com.shuzijun.leetcode.plugin.setting.PersistentConfig;
66
import org.apache.commons.lang.StringUtils;
77
import org.apache.http.Header;
88
import org.apache.http.HttpHeaders;
9-
import org.apache.http.HttpHost;
10-
import org.apache.http.auth.AuthScope;
11-
import org.apache.http.auth.UsernamePasswordCredentials;
12-
import org.apache.http.client.CredentialsProvider;
139
import org.apache.http.client.config.AuthSchemes;
1410
import org.apache.http.client.config.CookieSpecs;
1511
import org.apache.http.client.config.RequestConfig;
@@ -20,13 +16,18 @@
2016
import org.apache.http.client.protocol.HttpClientContext;
2117
import org.apache.http.config.Registry;
2218
import org.apache.http.config.RegistryBuilder;
19+
import org.apache.http.conn.routing.HttpRoutePlanner;
2320
import org.apache.http.conn.socket.ConnectionSocketFactory;
2421
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
2522
import org.apache.http.conn.ssl.NoopHostnameVerifier;
2623
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
2724
import org.apache.http.cookie.Cookie;
28-
import org.apache.http.impl.client.*;
25+
import org.apache.http.impl.client.BasicCookieStore;
26+
import org.apache.http.impl.client.CloseableHttpClient;
27+
import org.apache.http.impl.client.HttpClientBuilder;
28+
import org.apache.http.impl.client.HttpClients;
2929
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
30+
import org.apache.http.impl.conn.SystemDefaultRoutePlanner;
3031
import org.apache.http.impl.cookie.BasicClientCookie;
3132
import org.apache.http.message.BasicHeader;
3233

@@ -61,29 +62,22 @@ private static void createHttpClient() {
6162
.setExpectContinueEnabled(Boolean.TRUE).setTargetPreferredAuthSchemes(Arrays.asList(AuthSchemes.NTLM, AuthSchemes.DIGEST))
6263
.setProxyPreferredAuthSchemes(Arrays.asList(AuthSchemes.BASIC));
6364

64-
//proxy
65-
Config config = PersistentConfig.getInstance().getInitConfig();
66-
HttpConfigurable proxySettings = HttpConfigurable.getInstance();
67-
CredentialsProvider provider = null;
68-
if (config != null && config.getProxy() && proxySettings != null && proxySettings.USE_HTTP_PROXY && !proxySettings.PROXY_TYPE_IS_SOCKS) {
69-
HttpHost proxy = new HttpHost(proxySettings.PROXY_HOST, proxySettings.PROXY_PORT, "http");
70-
globalConfigBuilder.setProxy(proxy);
71-
if (proxySettings.PROXY_AUTHENTICATION) {
72-
provider = new BasicCredentialsProvider();
73-
provider.setCredentials(new AuthScope(proxy), new UsernamePasswordCredentials(proxySettings.getProxyLogin(), proxySettings.getPlainProxyPassword()));
74-
}
75-
76-
}
77-
7865

7966
HttpClientBuilder httpClientBuilder = HttpClients.custom()
8067
.setDefaultRequestConfig(globalConfigBuilder.build())
8168
.setDefaultCookieStore(cookieStore)
8269
.setDefaultHeaders(defaultHeader())
8370
.setConnectionManager(getconnectionManager());
84-
if (provider != null) {
85-
httpClientBuilder.setDefaultCredentialsProvider(provider);
71+
72+
//proxy
73+
Config config = PersistentConfig.getInstance().getInitConfig();
74+
75+
if (config != null && config.getProxy()) {
76+
CommonProxy commonProxy = CommonProxy.getInstance();
77+
HttpRoutePlanner routePlanner = new SystemDefaultRoutePlanner(commonProxy);
78+
httpClientBuilder.setRoutePlanner(routePlanner);
8679
}
80+
8781
httpclient = httpClientBuilder.build();
8882

8983
}
@@ -127,7 +121,7 @@ public static CloseableHttpResponse execute(HttpUriRequest httpUriRequest) {
127121
CloseableHttpResponse response = httpclient.execute(httpUriRequest, context);
128122
return response;
129123
} catch (Exception e) {
130-
LogUtils.LOG.error("请求出错:", e);
124+
LogUtils.LOG.error("httpclient request error:", e);
131125
} finally {
132126
}
133127

src/main/java/com/shuzijun/leetcode/plugin/utils/VelocityTool.java

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public class VelocityTool extends StringUtils {
1212
public static String camelCaseName(String underscoreName) {
1313

1414
if (isNotBlank(underscoreName)) {
15-
underscoreName = underscoreName.replace(" ", "");
15+
underscoreName = underscoreName.replace(" ", "_");
1616
StringBuilder result = new StringBuilder();
1717
if (isNumeric(underscoreName.substring(0, 1))) {
1818
underscoreName = numsAry[Integer.valueOf(underscoreName.substring(0, 1))] + "-" + underscoreName.substring(1);
@@ -38,4 +38,29 @@ public static String camelCaseName(String underscoreName) {
3838
return underscoreName;
3939
}
4040
}
41+
42+
43+
public static String snakeCaseName(String underscoreName) {
44+
45+
if (isNotBlank(underscoreName)) {
46+
underscoreName = underscoreName.replace(" ", "_");
47+
StringBuilder result = new StringBuilder();
48+
for (int i = 0, j = underscoreName.length(); i < j; i++) {
49+
char ch = underscoreName.charAt(i);
50+
if ('_' == ch || '-' == ch) {
51+
if (i + 1 < j) {
52+
result.append("_").append(Character.toLowerCase(underscoreName.charAt(i + 1)));
53+
i = i + 1;
54+
}
55+
} else if (Character.isUpperCase(ch)) {
56+
result.append("_").append(Character.toLowerCase(underscoreName.charAt(i)));
57+
} else {
58+
result.append(ch);
59+
}
60+
}
61+
return result.toString();
62+
} else {
63+
return underscoreName;
64+
}
65+
}
4166
}

src/main/resources/i18n/info.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ report=Report to plugin developer
3232
donate.info=Donation
3333
updata=Leetcode Editor new version {0} is found. Please update the plugin
3434
user.email=YOU HAVE NOT VERIFIED YOUR ACCOUNT\nYou cannot submit your code to the judge system until you verify your email.\nYou may resend the verification email or change your email in your profile page.
35-
template.variable=${0}question.title{1}\tquestion title\tex:Two Sum\n${0}question.titleSlug{1}\tquestion title slug \tex:two-sum\n${0}question.frontendQuestionId{1}\tquestion serial number\n${0}question.content{1}\tquestion content\n${0}question.code{1}\tquestion code\n$!velocityTool.camelCaseName(str)\ttransform str camel case
35+
template.variable=${0}question.title{1}\tquestion title\tex:Two Sum\n${0}question.titleSlug{1}\tquestion title slug \tex:two-sum\n${0}question.frontendQuestionId{1}\tquestion serial number\n${0}question.content{1}\tquestion content\n${0}question.code{1}\tquestion code\n$!velocityTool.camelCaseName(str)\ttransform str camel case\n$!velocityTool.snakeCaseName(str)\ttransform str snake case
3636
tree.load=Please load questions first
3737
tree.null=Questions returned are empty
3838
tree.select=Please select a valid question in the list

src/main/resources/i18n/info_zh.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ report=\u5411\u63D2\u4EF6\u4F5C\u8005\u62A5\u544A
3232
donate.info=\u6253\u8D4F
3333
updata=leetcode editor\u65B0\u7248\u672C {0} \u53D1\u5E03,\u8BF7\u53CA\u65F6\u66F4\u65B0
3434
user.email=\u60A8\u5C1A\u672A\u9A8C\u8BC1\u81EA\u5DF1\u7684\u5E10\u6237\n\u5728\u9A8C\u8BC1\u7535\u5B50\u90AE\u4EF6\u4E4B\u524D\uFF0C\u60A8\u65E0\u6CD5\u5C06\u4EE3\u7801\u63D0\u4EA4\u7ED9\u8BC4\u5224\u7CFB\u7EDF\u3002\n\u60A8\u53EF\u4EE5\u5728\u4E2A\u4EBA\u8D44\u6599\u9875\u9762\u4E2D\u91CD\u65B0\u53D1\u9001\u9A8C\u8BC1\u7535\u5B50\u90AE\u4EF6\u6216\u66F4\u6539\u7535\u5B50\u90AE\u4EF6\u3002
35-
template.variable=${0}question.title{1}\t\u9898\u76EE\u6807\u9898\t\u793A\u4F8B:\u4E24\u6570\u4E4B\u548C\n${0}question.titleSlug{1}\t\u9898\u76EE\u6807\u8BB0\t\u793A\u4F8B:two-sum\n${0}question.frontendQuestionId{1}\t\u9898\u76EE\u7F16\u53F7\n${0}question.content{1}\t\u9898\u76EE\u63CF\u8FF0\n${0}question.code{1}\t\u9898\u76EE\u4EE3\u7801\n$!velocityTool.camelCaseName(str)\t\u8F6C\u6362\u5B57\u7B26\u4E3A\u9A7C\u5CF0\u6837\u5F0F
35+
template.variable=${0}question.title{1}\t\u9898\u76EE\u6807\u9898\t\u793A\u4F8B:\u4E24\u6570\u4E4B\u548C\n${0}question.titleSlug{1}\t\u9898\u76EE\u6807\u8BB0\t\u793A\u4F8B:two-sum\n${0}question.frontendQuestionId{1}\t\u9898\u76EE\u7F16\u53F7\n${0}question.content{1}\t\u9898\u76EE\u63CF\u8FF0\n${0}question.code{1}\t\u9898\u76EE\u4EE3\u7801\n$!velocityTool.camelCaseName(str)\t\u8F6C\u6362\u5B57\u7B26\u4E3A\u9A7C\u5CF0\u6837\u5F0F\n$!velocityTool.snakeCaseName(str)\t\u8F6C\u6362\u5B57\u7B26\u4E3A\u86C7\u5F62\u6837\u5F0F
3636
tree.load=\u8BF7\u5148\u52A0\u8F7D\u9898\u76EE
3737
tree.null=\u83B7\u53D6\u9898\u76EE\u4E3A\u7A7A
3838
tree.select=\u8BF7\u5728\u5217\u8868\u4E2D\u9009\u62E9\u4E00\u4E2A\u6709\u6548\u7684\u9898\u76EE

0 commit comments

Comments
 (0)