Skip to content

Commit 71c13c9

Browse files
committed
feat(http-client): add support for creating temporary scratch files #198 && closed #198
Added functionality to create temporary scratch files for HTTP requests in the Intellij HTTP client executor. - Create temporary scratch file for HTTP request - Set file path in configuration settings - Add configuration to run manager
1 parent 30efd49 commit 71c13c9

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

exts/ext-http-client/src/main/kotlin/cc/unitmesh/httpclient/IntellijHttpClientExecutor.kt

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,23 @@ import com.intellij.httpClient.http.request.run.HttpRequestExecutorExtensionFact
99
import com.intellij.httpClient.http.request.run.HttpRequestRunConfigurationExecutor
1010
import com.intellij.httpClient.http.request.run.config.HttpRequestRunConfiguration
1111
import com.intellij.httpClient.http.request.run.config.HttpRequestRunConfigurationType
12+
import com.intellij.ide.scratch.ScratchFileService
13+
import com.intellij.ide.scratch.ScratchRootType
1214
import com.intellij.openapi.project.Project
1315
import com.intellij.openapi.vfs.VirtualFile
1416
import com.intellij.psi.PsiFile
1517
import com.intellij.psi.PsiManager
1618

1719
class IntellijHttpClientExecutor : HttpClientProvider {
1820
override fun execute(project: Project, virtualFile: VirtualFile, text: String) {
19-
val psiFile: PsiFile = PsiManager.getInstance(project).findFile(virtualFile) ?: return
21+
val originFile: PsiFile = PsiManager.getInstance(project).findFile(virtualFile) ?: return
22+
23+
// create temporary file for http request
24+
ScratchFileService.getInstance()
25+
val scratchFile = ScratchRootType.getInstance()
26+
.createScratchFile(project, "autodev-http-request.http", originFile.language, text) ?: return
27+
28+
val psiFile = PsiManager.getInstance(project).findFile(scratchFile) ?: return
2029

2130
val runner: RunnerAndConfigurationSettings = ConfigurationContext(psiFile)
2231
.configurationsFromContext
@@ -28,10 +37,12 @@ class IntellijHttpClientExecutor : HttpClientProvider {
2837
val configuration = HttpRequestRunConfiguration(project, factory, "HttpRequest")
2938

3039
val runManager: RunManager = RunManager.getInstance(project)
31-
runManager.setUniqueNameIfNeeded(configuration)
32-
runManager.addConfiguration(runner)
3340

41+
configuration.settings.filePath = virtualFile.path
42+
43+
runManager.setUniqueNameIfNeeded(configuration)
3444
runner.isTemporary = true
45+
runManager.addConfiguration(runner)
3546

3647
val selectedRunner = runManager.selectedConfiguration
3748
if ((selectedRunner == null || selectedRunner.isTemporary) && runManager.shouldSetRunConfigurationFromContext()) {

0 commit comments

Comments
 (0)