diff --git a/src/applications/repository/conduit/RepositoryCreateConduitAPIMethod.php b/src/applications/repository/conduit/RepositoryCreateConduitAPIMethod.php --- a/src/applications/repository/conduit/RepositoryCreateConduitAPIMethod.php +++ b/src/applications/repository/conduit/RepositoryCreateConduitAPIMethod.php @@ -21,6 +21,7 @@ protected function defineParamTypes() { $vcs_const = $this->formatStringConstants(array('git', 'hg', 'svn')); + $vcs_serve = $this->formatStringConstants(array(PhabricatorRepository::SERVE_OFF,PhabricatorRepository::SERVE_READONLY,PhabricatorRepository::SERVE_READWRITE)); return array( 'name' => 'required string', @@ -30,6 +31,8 @@ 'encoding' => 'optional string', 'tracking' => 'optional bool', 'uri' => 'required string', + 'serveOverHttp' => 'optional '.$vcs_serve.', require uri=false, default = '.PhabricatorRepository::SERVE_OFF, + 'serveOverSsh' => 'optional '.$vcs_serve.', require uri=false, default = '.PhabricatorRepository::SERVE_OFF, 'credentialPHID' => 'optional string', 'svnSubpath' => 'optional string', 'branchFilter' => 'optional list', @@ -102,14 +105,10 @@ $repository->setCredentialPHID($request->getValue('credentialPHID')); - $remote_uri = $request->getValue('uri'); - PhabricatorRepository::assertValidRemoteURI($remote_uri); - $details = array( 'encoding' => $request->getValue('encoding'), 'description' => $request->getValue('description'), 'tracking-enabled' => (bool)$request->getValue('tracking', true), - 'remote-uri' => $remote_uri, 'local-path' => $local_path, 'branch-filter' => array_fill_keys( $request->getValue('branchFilter', array()), @@ -124,6 +123,24 @@ 'disable-autoclose' => !$request->getValue('autocloseEnabled', true), ); + $remote_uri = $request->getValue('uri'); + + if ($remote_uri == false || empty($remote_uri)) { + $vcs_serve = array(PhabricatorRepository::SERVE_OFF,PhabricatorRepository::SERVE_READONLY,PhabricatorRepository::SERVE_READWRITE); + + $details['hosting-enabled'] = true; + + if (in_array($request->getValue('serveOverHttp', PhabricatorRepository::SERVE_OFF),$vcs_serve)) { + $details['serve-over-http'] = $request->getValue('serveOverHttp', PhabricatorRepository::SERVE_OFF); + } + if (in_array($request->getValue('serveOverSsh', PhabricatorRepository::SERVE_OFF),$vcs_serve)) { + $details['serve-over-ssh'] = $request->getValue('serveOverSsh', PhabricatorRepository::SERVE_OFF); + } + } else { + PhabricatorRepository::assertValidRemoteURI($remote_uri); + $details['remote-uri'] = $remote_uri; + } + foreach ($details as $key => $value) { $repository->setDetail($key, $value); }