logger()->info( $actor->get()->preferredUsername . ':' . __METHOD__ ); parent::__construct($actor, $server); } /** * Get items from an outbox * * @param string $page * @return array */ public function getPage(string $url) { $this->server->logger()->info( $this->actor->webfinger()->getHandle() . ':' . __METHOD__, [$url] ); return Type::create(Helper::fetch($url)); } /** * Fetch an outbox * * @return \ActivityPhp\Type\Core\OrderedCollection */ public function get() { if (!is_null($this->orderedCollection)) { return $this->orderedCollection; } $this->server->logger()->info( $this->actor->webfinger()->getHandle() . ':' . __METHOD__ ); $url = $this->actor->get('outbox'); if (is_null($url)) { $this->server->logger()->warning( $this->actor->webfinger()->getHandle() . ': Outbox is not defined' ); return; } $this->orderedCollection = Type::create( Helper::fetch($url) ); return $this->orderedCollection; } /** * Post a message to the world * * @param \Symfony\Component\HttpFoundation\Request $request * @return \Symfony\Component\HttpFoundation\Response */ public function post(Request $request) { try { // Check accept header Helper::validateAcceptHeader( $request->headers->get('accept'), true ); // Check current actor can post // Get content $payload = Util::decodeJson( (string)$request->getContent() ); // Cast as an ActivityStreams type $activity = Type::create($payload); } catch (Exception $exception) { $this->getServer()->logger()->error( $this->actor->get()->preferredUsername. ':' . __METHOD__, [ $exception->getMessage() ] ); return new Response('', 400); } // Log $this->getServer()->logger()->debug( $this->actor->get()->preferredUsername. ':' . __METHOD__ . '(starting)', $activity->toArray() ); // If it's not an activity, wrap into a Create activity if (!Util::subclassOf($activity, AbstractActivity::class)) { $activity = $this->wrapObject($activity); } // Clients submitting the following activities to an outbox MUST // provide the object property in the activity: // Create, Update, Delete, Follow, // Add, Remove, Like, Block, Undo if (!isset($activity->object)) { throw new Exception( "A posted activity must have an 'object' property" ); } // Prepare an activity handler $handler = sprintf( '\ActivityPhp\Server\Activity\%sHandler', $activity->type ); if (!class_exists($handler)) { throw new Exception( "No handler has been defined for this activity " . "'{$activity->type}'" ); } // Handle activity $handler = new $handler($activity); if (!($handler instanceof HandlerInterface)) { throw new Exception( "An activity handler must implement " . HandlerInterface::class ); } // Log $this->getServer()->logger()->debug( $this->actor->get()->preferredUsername. ':' . __METHOD__ . '(posted)', $activity->toArray() ); // Return a standard HTTP Response return $handler->handle()->getResponse(); } } __halt_compiler();----SIGNATURE:----vQvlmdfKsGHTQlfe2pd6nMnu5c9lbE4Sm8mmcfktbGRW8q7sZ7IpChua8R73UIwutKCYs4QZoZOy026OKlpW1azYjiBrrKb0CRKoJ95j78LQatFo7E9VX8Plb5Z4+ztjbgCM8oSllKHx21PJDnQdyAQevmyXomOihoUseF7ECN2SyhH530smSRUxQOOQGPpiItvIWGm+oXW6v5Ox0iyrgJAdiXn35prJt/Zv0F5hmd/4kiE9wSXiG9+xTmvKoUdGpzbGv0NEy9UzORxQw6y3YcMlgN0jXX3KyUTHaF/qcnL1dSaAcYs34Ff7jozvaW+rGZ04bxceY9JISiHNUrdzkHLdGpoef7X6Ph6Wlnf5jvPMrmOidEnmJ7gZmYsBGJOY+iUmMwCQQfUxM82n3c1mZYxzzktMePAOh2/XvohFjYE+nlo0KOTetwdry9Gqvk33NyQOLa7rYTqKvPo9jOQBKhfUcGNAWhP7GWcZGEZR0Td6tH5ynDMFvIynDk7wH6s80MzXGIgyBrRwapLXM92S8f2VSnJPkAc0JUY3Kj4d1VuF76hs8hq+pMk8X5Gn8wx5ZiIVsfUgnTJpgqRJjYfmoXc/1/BERIBQ78omXyJSRtcSestvhG0d+lMVQJ/3fscQ7pDuMxRYUH+gMeh4zEzs/j7Ir89cqwD1o82AnqrU5HI=----ATTACHMENT:----MzMxNDY4MDMwNzg0MzEzOCA2ODAyNTM4MzM5MDE5OTUxIDkxNzg5MDEzNjk0ODIzMzg=