Example #1
0
 public static final function callConduitWithDiffusionRequest(PhabricatorUser $user, DiffusionRequest $drequest, $method, array $params = array())
 {
     $repository = $drequest->getRepository();
     $core_params = array('repository' => $repository->getPHID());
     if ($drequest->getBranch() !== null) {
         $core_params['branch'] = $drequest->getBranch();
     }
     // If the method we're calling doesn't actually take some of the implicit
     // parameters we derive from the DiffusionRequest, omit them.
     $method_object = ConduitAPIMethod::getConduitMethod($method);
     $method_params = $method_object->getParamTypes();
     foreach ($core_params as $key => $value) {
         if (empty($method_params[$key])) {
             unset($core_params[$key]);
         }
     }
     $params = $params + $core_params;
     $client = $repository->newConduitClient($user, $drequest->getIsClusterRequest());
     if (!$client) {
         return id(new ConduitCall($method, $params))->setUser($user)->execute();
     } else {
         return $client->callMethodSynchronous($method, $params);
     }
 }
 private function authorizeOAuthMethodAccess(PhabricatorOAuthClientAuthorization $authorization, $method_name)
 {
     $method = ConduitAPIMethod::getConduitMethod($method_name);
     if (!$method) {
         return false;
     }
     $required_scope = $method->getRequiredScope();
     switch ($required_scope) {
         case ConduitAPIMethod::SCOPE_ALWAYS:
             return true;
         case ConduitAPIMethod::SCOPE_NEVER:
             return false;
     }
     $authorization_scope = $authorization->getScope();
     if (!empty($authorization_scope[$required_scope])) {
         return true;
     }
     return false;
 }
 protected function buildMethodHandler($method_name)
 {
     $method = ConduitAPIMethod::getConduitMethod($method_name);
     if (!$method) {
         throw new ConduitMethodDoesNotExistException($method_name);
     }
     $application = $method->getApplication();
     if ($application && !$application->isInstalled()) {
         $app_name = $application->getName();
         throw new ConduitApplicationNotInstalledException($method, $app_name);
     }
     return $method;
 }