Created factory for creating new protocol messages from raw strings
parent
7adc455af9
commit
3b6c900ed3
|
@ -42,7 +42,7 @@ class ClientHandler
|
|||
$id = $this->idGenerator->generate();
|
||||
return $this->protocolWriter->write(
|
||||
new Protocol\Message(
|
||||
new AdvancedJsonRpc\Request($id, $method, (object)$params)
|
||||
(new AdvancedJsonRpc\Request($id, $method, (object)$params))->__toString()
|
||||
)
|
||||
)->then(function () use ($id) {
|
||||
$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;
|
||||
|
||||
use LanguageServer\{ProtocolReader, ProtocolWriter};
|
||||
use LanguageServer\ProtocolBridge\MessageFactory;
|
||||
use LanguageServer\Protocol\Message;
|
||||
use Sabre\Event\{Loop, Emitter, Promise};
|
||||
|
||||
|
@ -21,7 +22,7 @@ class MockProtocolStream extends Emitter implements ProtocolReader, ProtocolWrit
|
|||
public function write(Message $msg): Promise
|
||||
{
|
||||
Loop\nextTick(function () use ($msg) {
|
||||
$this->emit('message', [Message::parse((string)$msg)]);
|
||||
$this->emit('message', [MessageFactory::fromRawMessage((string)$msg)]);
|
||||
});
|
||||
return Promise\resolve(null);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue