diff --git a/lib/apis/githost.dart b/lib/apis/githost.dart index b3a58fb0..c8ffddb0 100644 --- a/lib/apis/githost.dart +++ b/lib/apis/githost.dart @@ -23,7 +23,10 @@ class GitRepo { class GitHostException implements Exception { static const OAuthFailed = const GitHostException("OAuthFailed"); + static const MissingAccessCode = const GitHostException("MissingAccessCode"); static const RepoExists = const GitHostException("RepoExists"); + static const CreateRepoFailed = const GitHostException("CreateRepoFailed"); + static const DeployKeyFailed = const GitHostException("DeployKeyFailed"); final String cause; const GitHostException(this.cause); diff --git a/lib/apis/github.dart b/lib/apis/github.dart index 2efa61fd..b1684675 100644 --- a/lib/apis/github.dart +++ b/lib/apis/github.dart @@ -72,7 +72,7 @@ class GitHub implements GitHost { @override Future> listRepos() async { if (_accessCode.isEmpty) { - throw "GitHub Access Code Missing"; + throw GitHostException.MissingAccessCode; } var url = @@ -103,7 +103,7 @@ class GitHub implements GitHost { Future createRepo(String name) async { // FIXME: Proper error when the repo exists! if (_accessCode.isEmpty) { - throw "GitHub Access Code Missing"; + throw GitHostException.MissingAccessCode; } var url = "https://api.github.com/user/repos?access_token=$_accessCode"; @@ -123,7 +123,8 @@ class GitHub implements GitHost { response.statusCode.toString() + ": " + response.body); - return null; + + throw GitHostException.CreateRepoFailed; } print("GitHub createRepo: " + response.body); @@ -134,7 +135,7 @@ class GitHub implements GitHost { // FIXME: Proper error when the repo exists! Future addDeployKey(String sshPublicKey, String repo) async { if (_accessCode.isEmpty) { - throw "GitHub Access Code Missing"; + throw GitHostException.MissingAccessCode; } var url = @@ -157,7 +158,7 @@ class GitHub implements GitHost { response.statusCode.toString() + ": " + response.body); - return null; + throw GitHostException.DeployKeyFailed; } print("GitHub addDeployKey: " + response.body); diff --git a/lib/apis/gitlab.dart b/lib/apis/gitlab.dart index 6fff6d5f..fee11e83 100644 --- a/lib/apis/gitlab.dart +++ b/lib/apis/gitlab.dart @@ -63,7 +63,7 @@ class GitLab implements GitHost { @override Future> listRepos() async { if (_accessCode.isEmpty) { - throw "GitHub Access Code Missing"; + throw GitHostException.MissingAccessCode; } // FIXME: pagination! @@ -95,7 +95,7 @@ class GitLab implements GitHost { Future createRepo(String name) async { // FIXME: Proper error when the repo exists! if (_accessCode.isEmpty) { - throw "GitLab Access Code Missing"; + throw GitHostException.MissingAccessCode; } var url = "https://gitlab.com/api/v4/projects?access_token=$_accessCode"; @@ -115,7 +115,15 @@ class GitLab implements GitHost { response.statusCode.toString() + ": " + response.body); - return null; + + if (response.statusCode == 400) { + Map data = json.decode(response.body); + Map message = data['message']; + var name = message['name']; + print(name); + } + + throw GitHostException.CreateRepoFailed; } print("GitLab createRepo: " + response.body); @@ -126,7 +134,7 @@ class GitLab implements GitHost { @override Future addDeployKey(String sshPublicKey, String repo) async { if (_accessCode.isEmpty) { - throw "GitLab Access Code Missing"; + throw GitHostException.MissingAccessCode; } repo = repo.replaceAll('/', '%2F'); @@ -150,7 +158,7 @@ class GitLab implements GitHost { response.statusCode.toString() + ": " + response.body); - return null; + throw GitHostException.DeployKeyFailed; } print("GitLab addDeployKey: " + response.body);