Skip to content

Commit bf6acfd

Browse files
committed
Merge branch 'nashorn'
2 parents 1d10582 + 9e41b9a commit bf6acfd

37 files changed

+270
-205
lines changed

README.zh-CN.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
2. 生成的代码有误?
6868
答: 插件自带的三个脚本通过参照 curl 文档的部分例子进行测试. curl 是一个复杂的工具, 难免有遗漏.
6969
此外, 因为库版本原因, 生成的代码可能包含无效的 API. 对于生成代码问题你只需要修改脚本即可.
70-
3. 为什么生成的代码格式混乱?
70+
3. 为什么生成的代码格式混乱?
7171
答: 请查看插件选项中是否勾选了自动格式化和保持缩进. 如果格式化失败, 请检查 IDEA 是否安装了对应语言的支持插件.
7272
4. 脚本执行慢?
7373
答: 脚本每次修改后执行可能会慢些, 但之后会从编译缓存中执行脚本.

gradle.properties

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ pluginName=Headers
55
pluginRepositoryUrl=https://github.com/bitjerry/Headers
66

77
# SemVer format -> https://semver.org
8-
pluginVersion=2.0.0
8+
pluginVersion=2.0.1
99

1010
# Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
1111
pluginSinceBuild=203
@@ -14,8 +14,8 @@ pluginUntilBuild=
1414
# IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension
1515
platformType=IC
1616
platformVersion=2020.3
17-
platformPlugins=PythonCore:203.5981.165, java
18-
#platformPlugins =
17+
#platformPlugins=PythonCore:203.5981.165, java
18+
platformPlugins =
1919

2020
# Gradle Releases -> https://github.com/gradle/gradle/releases
2121
gradleVersion = 8.4

src/main/java/su/gov/headers/HeadersBundle.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ public final class HeadersBundle extends AbstractBundle {
2323

2424
public static final String BUNDLE = "messages.HeadersBundle";
2525

26-
public static final HeadersBundle INSTANCE = new HeadersBundle();
26+
public static final HeadersBundle INSTANCE = new HeadersBundle();
2727

2828
public HeadersBundle() {
2929
super(BUNDLE);
3030
}
3131

32-
public static String message(@NotNull @PropertyKey(resourceBundle = BUNDLE) String key, Object ... params) {
32+
public static String message(@NotNull @PropertyKey(resourceBundle = BUNDLE) String key, Object... params) {
3333
return INSTANCE.getMessage(key, params);
3434
}
3535

src/main/java/su/gov/headers/HeadersPlugin.java

+41-16
Original file line numberDiff line numberDiff line change
@@ -13,39 +13,60 @@
1313
import com.intellij.ide.BrowserUtil;
1414
import com.intellij.ide.plugins.IdeaPluginDescriptor;
1515
import com.intellij.ide.plugins.PluginManagerCore;
16-
import com.intellij.notification.*;
16+
import com.intellij.notification.Notification;
17+
import com.intellij.notification.NotificationType;
1718
import com.intellij.notification.impl.NotificationFullContent;
19+
import com.intellij.openapi.actionSystem.ActionManager;
20+
import com.intellij.openapi.actionSystem.AnAction;
21+
import com.intellij.openapi.actionSystem.Constraints;
22+
import com.intellij.openapi.actionSystem.DefaultActionGroup;
23+
import com.intellij.openapi.diagnostic.Logger;
1824
import com.intellij.openapi.extensions.PluginId;
1925
import com.intellij.openapi.project.DumbAwareAction;
2026
import com.intellij.openapi.project.Project;
2127
import com.intellij.openapi.startup.StartupActivity;
2228
import org.jetbrains.annotations.NotNull;
29+
import su.gov.headers.actions.CurlAction;
2330
import su.gov.headers.icons.PluginIcon;
2431
import su.gov.headers.setting.SettingsPersistentState;
32+
import su.gov.headers.transform.TransformScriptModel;
33+
34+
import java.util.List;
35+
import java.util.Objects;
2536

2637
public class HeadersPlugin implements StartupActivity {
38+
39+
private static final Logger LOGGER = Logger.getInstance(HeadersPlugin.class);
2740
public static final String PLUGIN_ID = "su.gov.Header";
2841

29-
public static final IdeaPluginDescriptor descriptor = PluginManagerCore.getPlugin(PluginId.getId(PLUGIN_ID));
42+
public static final PluginId ID = PluginId.getId(PLUGIN_ID);
3043

31-
private static String version;
44+
public @NotNull
45+
static final IdeaPluginDescriptor DESCRIPTOR = Objects.requireNonNull(PluginManagerCore.getPlugin(ID));
3246

33-
private static String name;
47+
private static DefaultActionGroup CURL_ACTION_GROUP;
3448

35-
public static @NotNull String getVersion() {
36-
if (version == null) {
37-
assert descriptor != null;
38-
version = descriptor.getVersion();
49+
50+
public static void registerActions(ActionManager manager, List<TransformScriptModel> models) {
51+
unRegisterActions(manager, models);
52+
LOGGER.debug("Registering " + models + "to group:" + CURL_ACTION_GROUP);
53+
for (int i = models.size() - 1; i >= 0; i--) {
54+
CurlAction action = new CurlAction(models.get(i));
55+
manager.registerAction(action.getId(), action, HeadersPlugin.ID);
56+
CURL_ACTION_GROUP.add(action, Constraints.FIRST);
3957
}
40-
return version;
4158
}
4259

43-
public static @NotNull String getName() {
44-
if (name == null) {
45-
assert descriptor != null;
46-
name = descriptor.getName();
60+
public static void unRegisterActions(ActionManager manager, List<TransformScriptModel> models) {
61+
LOGGER.debug("Unregistering " + models + "to group:" + CURL_ACTION_GROUP);
62+
for (TransformScriptModel model : models) {
63+
AnAction action = manager.getActionOrStub(model.getId());
64+
if (action != null) {
65+
CURL_ACTION_GROUP.remove(action);
66+
manager.unregisterAction(model.getId());
67+
}
4768
}
48-
return name;
69+
4970
}
5071

5172
static class WelcomeNotification extends Notification implements NotificationFullContent {
@@ -63,9 +84,13 @@ public WelcomeNotification() {
6384

6485
@Override
6586
public void runActivity(@NotNull Project project) {
87+
ActionManager manager = ActionManager.getInstance();
88+
CURL_ACTION_GROUP = (DefaultActionGroup) manager.getAction("Headers.Group.CurlGroup");
6689
SettingsPersistentState state = SettingsPersistentState.getInstance();
67-
if (!getVersion().equals(state.getVersion())) {
68-
state.setVersion(getVersion());
90+
registerActions(manager, state.getTransformModels());
91+
String version = state.getVersion();
92+
if (!DESCRIPTOR.getVersion().equals(version)) {
93+
state.setVersion(DESCRIPTOR.getVersion());
6994
new WelcomeNotification().notify(project);
7095
}
7196
}

src/main/java/su/gov/headers/actions/CookieAction.java

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
/**
2-
*
32
* @Time: 2021/12/28 21:38
43
* @author Mr.lin
54
* @File: Cookies.java
@@ -23,18 +22,17 @@ public class CookieAction extends TransformAction {
2322
public String transform(String text) {
2423
LinkedHashMap<String, String> cookieMap = new LinkedHashMap<>();
2524
String[] cookieItems = text.split("\\s*;\\s*");
26-
for (String cookieItem : cookieItems){
25+
for (String cookieItem : cookieItems) {
2726
String[] cookieKV = cookieItem.split("\\s*=\\s*", 2);
28-
if (cookieKV.length != 2){
27+
if (cookieKV.length != 2) {
2928
break;
3029
}
3130
cookieMap.put(cookieKV[0], cookieKV[1]);
3231
}
3332
ObjectMapper objectMapper = new ObjectMapper();
3433
try {
3534
return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(cookieMap);
36-
}
37-
catch (JsonProcessingException e){
35+
} catch (JsonProcessingException e) {
3836
LOGGER.error("Transform request cookie failure", e);
3937
NotificationUtils.error(HeadersBundle.message("error.transform.cookie"), project);
4038
}

src/main/java/su/gov/headers/actions/curlAction/CurlAction.java src/main/java/su/gov/headers/actions/CurlAction.java

+3-5
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
* @Version V1.0.0
99
* @Copyright © 2023 by Mr.lin. All rights reserved.
1010
*/
11-
package su.gov.headers.actions.curlAction;
11+
package su.gov.headers.actions;
1212

1313
import com.intellij.openapi.diagnostic.Logger;
1414
import com.intellij.openapi.util.text.StringUtil;
@@ -31,7 +31,6 @@ public CurlAction(TransformScriptModel model) {
3131
super(model);
3232
}
3333

34-
3534
@Override
3635
public String transform(String curlCommand) {
3736
CurlObject curlObject;
@@ -63,16 +62,15 @@ public String transform(String curlCommand) {
6362
return null;
6463
}
6564

66-
try(Scope scope = Scope.enter()){
65+
try (Scope scope = Scope.enter()) {
6766
script.eval(scope);
6867
String result = scope.call("transform", null, curlObject.getRoot().getObject());
6968
if (result == null) {
7069
NotificationUtils.error(HeadersBundle.message("error.transform.no.transform.function"), project);
7170
return null;
7271
}
7372
return result;
74-
}
75-
catch (Exception e){
73+
} catch (Exception e) {
7674
LOGGER.error("An error occurred while running the script.", e);
7775
NotificationUtils.error(HeadersBundle.message("error.transform.script.runtime"), project);
7876
return null;

src/main/java/su/gov/headers/actions/FormDataAction.java

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
/**
2-
*
32
* @Time: 2022/1/10 20:39
43
* @Author: Mr.lin
54
* @File: FormData.java
@@ -24,16 +23,16 @@ public String transform(String text) {
2423
LinkedHashMap<String, String> formDataMap = new LinkedHashMap<>();
2524
ObjectMapper objectMapper = new ObjectMapper();
2625
String[] formDataItems = text.split("\\s*&\\s*");
27-
for (String formDataItem : formDataItems){
26+
for (String formDataItem : formDataItems) {
2827
String[] formDataKV = formDataItem.split("\\s*=\\s*", 2);
29-
if (formDataKV.length != 2){
28+
if (formDataKV.length != 2) {
3029
break;
3130
}
3231
formDataMap.put(formDataKV[0], formDataKV[1]);
3332
}
34-
try{
33+
try {
3534
return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(formDataMap);
36-
}catch (JsonProcessingException e){
35+
} catch (JsonProcessingException e) {
3736
LOGGER.error("Transform request form data failure", e);
3837
NotificationUtils.error(HeadersBundle.message("error.transform.form.data", e.getMessage()), project);
3938
}

src/main/java/su/gov/headers/actions/HeaderAction.java

+9-14
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
/**
2-
*
32
* @Time: 2021/12/28 21:38
43
* @author Mr.lin
54
* @File: Headers.java
@@ -20,39 +19,35 @@ public class HeaderAction extends TransformAction {
2019

2120
private static final Logger LOGGER = Logger.getInstance(HeaderAction.class);
2221

23-
private static void parseHeader(String head, HashMap<String, String> headMap){
22+
private static void parseHeader(String head, HashMap<String, String> headMap) {
2423
String key;
2524
String[] valueParts;
2625
String[] headerParts = head.split("\\s", 2);
27-
if ( headerParts.length != 2 ){
26+
if (headerParts.length != 2) {
2827
return;
2928
}
3029
String firstPart = headerParts[0];
3130
String lastPart = headerParts[1];
32-
if (lastPart.isEmpty()){
31+
if (lastPart.isEmpty()) {
3332
return;
34-
}
35-
else if (firstPart.isEmpty()){
33+
} else if (firstPart.isEmpty()) {
3634
parseHeader(lastPart, headMap);
3735
return;
3836
}
3937
if (firstPart.endsWith(":")) {
4038
key = firstPart.substring(0, firstPart.length() - 1);
41-
}
42-
else if (lastPart.startsWith(":")){
39+
} else if (lastPart.startsWith(":")) {
4340
key = firstPart;
4441
lastPart = lastPart.substring(1).trim();
45-
}
46-
else {
42+
} else {
4743
key = firstPart;
4844
}
4945

5046
valueParts = lastPart.split("\\s*?\n\\s*", 2);
51-
if ( valueParts.length == 2 ){
47+
if (valueParts.length == 2) {
5248
headMap.put(key, valueParts[0].trim());
5349
parseHeader(valueParts[1], headMap);
54-
}
55-
else {
50+
} else {
5651
headMap.put(key, lastPart.trim());
5752
}
5853
}
@@ -64,7 +59,7 @@ public String transform(String text) {
6459
ObjectMapper objectMapper = new ObjectMapper();
6560
try {
6661
return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(headers);
67-
}catch (JsonProcessingException e){
62+
} catch (JsonProcessingException e) {
6863
LOGGER.error("Transform request headers failure", e);
6964
NotificationUtils.error(HeadersBundle.message("error.transform.header", e.getMessage()), project);
7065
}

src/main/java/su/gov/headers/actions/curlAction/CurlGroup.java

-35
This file was deleted.

src/main/java/su/gov/headers/curl/CurlObject.java

+17-16
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,11 @@
1010
*/
1111
package su.gov.headers.curl;
1212

13-
import com.intellij.openapi.diagnostic.Logger;
1413
import su.gov.headers.scripts.objects.JSArrayWarp;
1514
import su.gov.headers.scripts.objects.JSObjectWarp;
1615

1716
public class CurlObject {
1817

19-
private final static Logger LOGGER = Logger.getInstance(CurlObject.class);
20-
2118
private final JSObjectWarp rootObject;
2219

2320
private JSObjectWarp params;
@@ -64,26 +61,29 @@ public void setUrl(String url) {
6461
}
6562

6663
public JSObjectWarp getParams() {
67-
if (params == null) {
68-
params = JSObjectWarp.newObject();
69-
rootObject.set("params", params.getObject());
64+
if (params != null) {
65+
return params;
7066
}
67+
params = JSObjectWarp.newObject();
68+
rootObject.set("params", params.getObject());
7169
return params;
7270
}
7371

7472
public JSObjectWarp getHeaders() {
75-
if (headers == null) {
76-
headers = JSObjectWarp.newObject();
77-
rootObject.set("headers", headers.getObject());
73+
if (headers != null) {
74+
return headers;
7875
}
76+
headers = JSObjectWarp.newObject();
77+
rootObject.set("headers", headers.getObject());
7978
return headers;
8079
}
8180

8281
public JSObjectWarp getCookies() {
83-
if (cookies == null) {
84-
cookies = JSObjectWarp.newObject();
85-
rootObject.set("cookies", cookies.getObject());
82+
if (cookies != null) {
83+
return cookies;
8684
}
85+
cookies = JSObjectWarp.newObject();
86+
rootObject.set("cookies", cookies.getObject());
8787
return cookies;
8888
}
8989

@@ -96,11 +96,12 @@ public void setData(String data) {
9696
}
9797

9898
public Form getForm() {
99-
if (form == null) {
100-
JSArrayWarp jsArrayWarp = JSArrayWarp.newObject();
101-
form = new Form(jsArrayWarp);
102-
rootObject.set("form", jsArrayWarp.getObject());
99+
if (form != null) {
100+
return form;
103101
}
102+
JSArrayWarp jsArrayWarp = JSArrayWarp.newObject();
103+
form = new Form(jsArrayWarp);
104+
rootObject.set("form", jsArrayWarp.getObject());
104105
return form;
105106
}
106107

0 commit comments

Comments
 (0)