ArcObjects Library Reference  

SimpleRESTSOE_VBNet

About the Simple REST SOE Sample

[C#]

SimpleRESTSOE_VBNet.cs


[Visual Basic .NET]

SimpleRESTSOE_VBNet.vb

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