Created factory for creating new protocol messages from raw strings
parent
7adc455af9
commit
3b6c900ed3
|
@ -42,7 +42,7 @@ class ClientHandler
|
||||||
$id = $this->idGenerator->generate();
|
$id = $this->idGenerator->generate();
|
||||||
return $this->protocolWriter->write(
|
return $this->protocolWriter->write(
|
||||||
new Protocol\Message(
|
new Protocol\Message(
|
||||||
new AdvancedJsonRpc\Request($id, $method, (object)$params)
|
(new AdvancedJsonRpc\Request($id, $method, (object)$params))->__toString()
|
||||||
)
|
)
|
||||||
)->then(function () use ($id) {
|
)->then(function () use ($id) {
|
||||||
$promise = new Promise;
|
$promise = new Promise;
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace LanguageServer\ProtocolBridge;
|
||||||
|
|
||||||
|
use AdvancedJsonRpc\Message as AdvancedJsonRpcMessage;
|
||||||
|
use LanguageServer\Protocol\Message;
|
||||||
|
|
||||||
|
class MessageFactory
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Returns a LSP Message from a raw requets string.
|
||||||
|
*
|
||||||
|
* NOTE: This is only used in the MockProtocolStream. Consider moving it
|
||||||
|
* somewhere else.
|
||||||
|
*
|
||||||
|
* @param string $msg
|
||||||
|
* @return Message
|
||||||
|
*/
|
||||||
|
public static function fromRawMessage(string $msg): Message
|
||||||
|
{
|
||||||
|
$obj = new Message();
|
||||||
|
$parts = explode("\r\n", $msg);
|
||||||
|
$obj->body = AdvancedJsonRpcMessage::parse(array_pop($parts))->__toString();
|
||||||
|
foreach ($parts as $line) {
|
||||||
|
if ($line) {
|
||||||
|
$pair = explode(': ', $line);
|
||||||
|
$obj->headers[$pair[0]] = $pair[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $obj;
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,6 +4,7 @@ declare(strict_types = 1);
|
||||||
namespace LanguageServer\Tests;
|
namespace LanguageServer\Tests;
|
||||||
|
|
||||||
use LanguageServer\{ProtocolReader, ProtocolWriter};
|
use LanguageServer\{ProtocolReader, ProtocolWriter};
|
||||||
|
use LanguageServer\ProtocolBridge\MessageFactory;
|
||||||
use LanguageServer\Protocol\Message;
|
use LanguageServer\Protocol\Message;
|
||||||
use Sabre\Event\{Loop, Emitter, Promise};
|
use Sabre\Event\{Loop, Emitter, Promise};
|
||||||
|
|
||||||
|
@ -21,7 +22,7 @@ class MockProtocolStream extends Emitter implements ProtocolReader, ProtocolWrit
|
||||||
public function write(Message $msg): Promise
|
public function write(Message $msg): Promise
|
||||||
{
|
{
|
||||||
Loop\nextTick(function () use ($msg) {
|
Loop\nextTick(function () use ($msg) {
|
||||||
$this->emit('message', [Message::parse((string)$msg)]);
|
$this->emit('message', [MessageFactory::fromRawMessage((string)$msg)]);
|
||||||
});
|
});
|
||||||
return Promise\resolve(null);
|
return Promise\resolve(null);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue