mirror of
https://github.com/opensim/opensim.git
synced 2026-05-27 04:16:00 +08:00
* added LLSDStreamHandler.cs to Caps (Haven't enabled it yet, though) * removed last traces of old rest handling
41 lines
1.3 KiB
C#
41 lines
1.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using OpenSim.Framework.Servers;
|
|
using System.IO;
|
|
using System.Collections;
|
|
using libsecondlife;
|
|
|
|
namespace OpenSim.Region.Capabilities
|
|
{
|
|
public class LLSDStreamhandler<TRequest, TResponse> : BaseStreamHandler
|
|
where TRequest : new()
|
|
{
|
|
private LLSDMethod<TRequest, TResponse> m_method;
|
|
|
|
public LLSDStreamhandler(string httpMethod, string path, LLSDMethod<TRequest, TResponse> method)
|
|
: base(httpMethod, path)
|
|
{
|
|
m_method = method;
|
|
}
|
|
|
|
public override byte[] Handle(string path, Stream request)
|
|
{
|
|
Encoding encoding = Encoding.UTF8;
|
|
StreamReader streamReader = new StreamReader(request, encoding);
|
|
|
|
string requestBody = streamReader.ReadToEnd();
|
|
streamReader.Close();
|
|
|
|
Hashtable hash = (Hashtable)LLSD.LLSDDeserialize(encoding.GetBytes(requestBody));
|
|
TRequest llsdRequest = new TRequest();
|
|
LLSDHelpers.DeserialiseLLSDMap(hash, llsdRequest);
|
|
|
|
TResponse response = m_method(llsdRequest);
|
|
|
|
return encoding.GetBytes( LLSDHelpers.SerialiseLLSDReply(response) );
|
|
|
|
}
|
|
}
|
|
}
|