Markdown.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. namespace App\Tools;
  3. use Illuminate\Support\Str;
  4. use Illuminate\Support\Facades\Log;
  5. class Markdown
  6. {
  7. public static function driver($driver){
  8. $GLOBALS['markdown.driver'] = $driver;
  9. }
  10. public static function render($text){
  11. if(isset($GLOBALS['markdown.driver'])){
  12. if($GLOBALS['markdown.driver'] === 'str'){
  13. return Markdown::strdown($text);
  14. }else{
  15. return Markdown::morus($text);
  16. }
  17. }else{
  18. return Markdown::morus($text);
  19. }
  20. }
  21. public static function morus($text){
  22. if(isset($GLOBALS['morus_client'])){
  23. $client = $GLOBALS['morus_client'];
  24. }else{
  25. $host = config('mint.server.rpc.morus.host') . ':'. config('mint.server.rpc.morus.port');
  26. Log::debug('morus host='.$host);
  27. $client = new \Mint\Morus\V1\MarkdownClient($host, [
  28. 'credentials' => \Grpc\ChannelCredentials::createInsecure(),
  29. ]);
  30. $GLOBALS['morus_client'] = $client;
  31. }
  32. $request = new \Mint\Morus\V1\MarkdownToHtmlRequest();
  33. $request->setPayload($text);
  34. $request->setSanitize(true);
  35. list($response, $status) = $client->ToHtml($request)->wait();
  36. if ($status->code !== \Grpc\STATUS_OK) {
  37. Log::error("ERROR: " . $status->code . ", " . $status->details);
  38. return Str::markdown($text);
  39. }
  40. return $response->getPayload();
  41. }
  42. public static function strdown($text){
  43. return Str::markdown($text);
  44. }
  45. }