SimpleRESTSOE_VBNet\SimpleRESTSOE_VBNet.vb
' Copyright 2010 ESRI ' ' All rights reserved under the copyright laws of the United States ' and applicable international laws, treaties, and conventions. ' ' You may freely redistribute and use this sample code, with or ' without modification, provided you include the original copyright ' notice and use restrictions. ' ' See the use restrictions. ' Imports Microsoft.VisualBasic Imports System Imports System.Collections.Generic Imports System.Linq Imports System.Text Imports System.Runtime.InteropServices Imports System.EnterpriseServices Imports ESRI.ArcGIS.Server Imports ESRI.ArcGIS.esriSystem Imports ESRI.ArcGIS.SOESupport Imports System.Collections.Specialized Namespace SimpleRESTSOE_VBNet <ComVisible(True), Guid("4FC42575-D03C-4059-A7C8-BBFB05B34B67"), ClassInterface(ClassInterfaceType.None)> _ Public Class SimpleRESTSOE_VBNet Inherits ServicedComponent Implements IServerObjectExtension, IObjectConstruct, IRESTRequestHandler Private _reqHandler As IRESTRequestHandler Public Sub New() Dim rootResource As RestResource = CreateRestSchema() Dim restImpl As New SoeRestImpl("SimpleRESTSOE_VBNet", rootResource) _reqHandler = CType(restImpl, IRESTRequestHandler) End Sub Public Sub Init(ByVal pSOH As IServerObjectHelper) Implements IServerObjectExtension.Init End Sub Public Sub Shutdown() Implements IServerObjectExtension.Shutdown End Sub Public Overloads Sub Construct(ByVal props As IPropertySet) Implements IObjectConstruct.Construct End Sub Private Function CreateRestSchema() As RestResource Dim soeResource As New RestResource("SimpleRESTSOE_VBNet", False, AddressOf RootSOE) Dim findNearFeatsOp As New RestOperation("echo", New String() {"text"}, New String() {"json", "html"}, AddressOf EchoInput) soeResource.operations.Add(findNearFeatsOp) Return soeResource End Function Public Function GetSchema() As String Implements IRESTRequestHandler.GetSchema Return _reqHandler.GetSchema() End Function Private Function HandleRESTRequest(ByVal Capabilities As String, ByVal resourceName As String, ByVal operationName As String, ByVal operationInput As String, ByVal outputFormat As String, ByVal requestProperties As String, <System.Runtime.InteropServices.Out()> ByRef responseProperties As String) As Byte() Implements IRESTRequestHandler.HandleRESTRequest Return _reqHandler.HandleRESTRequest(Capabilities, resourceName, operationName, operationInput, outputFormat, requestProperties, responseProperties) End Function Private Function RootSOE(ByVal boundVariables As System.Collections.Specialized.NameValueCollection, ByVal outputFormat As String, ByVal requestProperties As String, <System.Runtime.InteropServices.Out()> ByRef responseProperties As String) As Byte() responseProperties = Nothing Dim jObject As New JsonObject() Return Encoding.UTF8.GetBytes(jObject.ToJson()) End Function Private Function EchoInput(ByVal boundVariables As System.Collections.Specialized.NameValueCollection, ByVal operationInput As ESRI.ArcGIS.SOESupport.JsonObject, ByVal outputFormat As String, ByVal requestProperties As String, <System.Runtime.InteropServices.Out()> ByRef responseProperties As String) As Byte() responseProperties = Nothing Dim inputText As String If (Not operationInput.TryGetString("text", inputText)) Then Throw New ArgumentNullException("text") End If Dim jObject As New JsonObject() jObject.AddString("text", inputText) Return Encoding.UTF8.GetBytes(jObject.ToJson()) End Function End Class End Namespace