Added StepikRestService

This commit is contained in:
Petrov Alexander
2017-04-05 17:42:54 +07:00
committed by meanmail
parent aca43e3d76
commit c941b6ab81
3 changed files with 69 additions and 7 deletions
@@ -33,5 +33,6 @@
<orderEntry type="module" module-name="idea-ui" />
<orderEntry type="module" module-name="openapi" />
<orderEntry type="library" name="Guava" level="project" />
<orderEntry type="module" module-name="built-in-server" />
</component>
</module>
@@ -40,14 +40,16 @@
</application-components>
<extensionPoints>
<extensionPoint qualifiedName="Edu.eduIntelliJProjectTemplate" interface="com.jetbrains.edu.learning.intellij.EduIntelliJProjectTemplate"/>
<extensionPoint qualifiedName="Edu.eduIntelliJProjectTemplate"
interface="com.jetbrains.edu.learning.intellij.EduIntelliJProjectTemplate"/>
<extensionPoint qualifiedName="Edu.StudyExecutor" beanClass="com.intellij.lang.LanguageExtensionPoint">
<with attribute="implementationClass" implements="com.jetbrains.edu.learning.checker.StudyExecutor"/>
</extensionPoint>
<extensionPoint qualifiedName="Edu.pluginConfigurator" beanClass="com.intellij.lang.LanguageExtensionPoint">
<with attribute="implementationClass" implements="com.jetbrains.edu.learning.EduPluginConfigurator"/>
</extensionPoint>
<extensionPoint qualifiedName="Edu.studyTwitterPluginConfigurator" interface="com.jetbrains.edu.learning.StudyTwitterPluginConfigurator"/>
<extensionPoint qualifiedName="Edu.studyTwitterPluginConfigurator"
interface="com.jetbrains.edu.learning.StudyTwitterPluginConfigurator"/>
<extensionPoint qualifiedName="Edu.checkListener" interface="com.jetbrains.edu.learning.StudyCheckListener"/>
<extensionPoint qualifiedName="Edu.optionsProvider" beanClass="com.jetbrains.edu.learning.settings.StudyOptionsProviderEP">
<with attribute="instance" implements="com.jetbrains.edu.learning.settings.StudyOptionsProvider"/>
@@ -70,8 +72,9 @@
description="Navigate to the next task"/>
<action id="RefreshTaskAction" class="com.jetbrains.edu.learning.actions.StudyRefreshTaskFileAction" text="Reset Task File"
description="Refresh current task"/>
<action id="RefreshAnswerPlaceholder" class="com.jetbrains.edu.learning.actions.StudyRefreshAnswerPlaceholder" text="Refresh Answer Placeholder">
<add-to-group group-id="EditorPopupMenu" anchor="last"/>
<action id="RefreshAnswerPlaceholder" class="com.jetbrains.edu.learning.actions.StudyRefreshAnswerPlaceholder"
text="Refresh Answer Placeholder">
<add-to-group group-id="EditorPopupMenu" anchor="last"/>
</action>
<action id="WatchInputAction" class="com.jetbrains.edu.learning.actions.StudyEditInputAction" text="Watch Test Input"
description="Watch test input "/>
@@ -157,13 +160,15 @@
<extensions defaultExtensionNs="com.intellij">
<projectService serviceInterface="com.intellij.codeInsight.documentation.DocumentationManager"
serviceImplementation="com.jetbrains.edu.learning.StudyDocumentationManager" overrides="true"/>
serviceImplementation="com.jetbrains.edu.learning.StudyDocumentationManager" overrides="true"/>
<applicationConfigurable groupId="tools" instance="com.jetbrains.edu.learning.settings.StudyConfigurable"
id="com.jetbrains.edu.learning.settings.StudyConfigurable"
displayName="Education"/>
<toolWindow id="Task Description" anchor="right" factoryClass="com.jetbrains.edu.learning.ui.StudyToolWindowFactory" conditionClass="com.jetbrains.edu.learning.ui.StudyCondition"/>
<toolWindow id="Test Results" anchor="bottom" factoryClass="com.jetbrains.edu.learning.ui.StudyTestResultsToolWindowFactory" conditionClass="com.jetbrains.edu.learning.ui.StudyCondition"/>
<toolWindow id="Task Description" anchor="right" factoryClass="com.jetbrains.edu.learning.ui.StudyToolWindowFactory"
conditionClass="com.jetbrains.edu.learning.ui.StudyCondition"/>
<toolWindow id="Test Results" anchor="bottom" factoryClass="com.jetbrains.edu.learning.ui.StudyTestResultsToolWindowFactory"
conditionClass="com.jetbrains.edu.learning.ui.StudyCondition"/>
<fileEditorProvider implementation="com.jetbrains.edu.learning.editor.StudyFileEditorProvider"/>
<treeStructureProvider implementation="com.jetbrains.edu.learning.projectView.StudyTreeStructureProvider"/>
<highlightErrorFilter implementation="com.jetbrains.edu.learning.editor.StudyHighlightErrorFilter"/>
@@ -177,6 +182,7 @@
<applicationService serviceImplementation="com.jetbrains.edu.learning.StudySettings"/>
<editorTabTitleProvider implementation="com.jetbrains.edu.learning.StudyTabTitleProvider"/>
<typedHandler implementation="com.jetbrains.edu.learning.StudyTypeHandlerDelegate" order="first, before completionAutoPopup"/>
<httpRequestHandler implementation="com.jetbrains.edu.learning.builtInServer.StepikRestService"/>
<!--course creator-->
<projectService serviceImplementation="com.jetbrains.edu.coursecreator.CCProjectService"/>
@@ -0,0 +1,55 @@
/*
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.jetbrains.edu.learning.builtInServer;
import com.intellij.openapi.diagnostic.Logger;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpMethod;
import io.netty.handler.codec.http.QueryStringDecoder;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.ide.RestService;
import java.io.IOException;
/**
* @author meanmail
*/
public class StepikRestService extends RestService {
private static final Logger LOG = Logger.getInstance(StepikRestService.class.getName());
private static final String SERVICE_NAME = "stepik";
@NotNull
@Override
protected String getServiceName() {
return SERVICE_NAME;
}
@Override
protected boolean isMethodSupported(@NotNull HttpMethod method) {
return method.equals(HttpMethod.GET);
}
@Nullable
@Override
public String execute(@NotNull QueryStringDecoder urlDecoder, @NotNull FullHttpRequest request, @NotNull ChannelHandlerContext context)
throws IOException {
LOG.info("Request: " + urlDecoder.path());
RestService.sendOk(request, context);
return null;
}
}