[gnome-builder/wip/gtk4-port: 1251/1774] libide/vcs: add basic input validation to form
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/gtk4-port: 1251/1774] libide/vcs: add basic input validation to form
- Date: Mon, 11 Jul 2022 22:31:40 +0000 (UTC)
commit dcf5287a8385f1905ef60c978fa95ec60cc5c9ed
Author: Christian Hergert <chergert redhat com>
Date: Tue May 31 21:59:52 2022 -0700
libide/vcs: add basic input validation to form
src/libide/vcs/ide-vcs-clone-request.c | 36 ++++++++++++++++++++++++++++++++++
src/libide/vcs/ide-vcs-clone-request.h | 11 +++++++++++
2 files changed, 47 insertions(+)
---
diff --git a/src/libide/vcs/ide-vcs-clone-request.c b/src/libide/vcs/ide-vcs-clone-request.c
index a71741b38..4fc3e1463 100644
--- a/src/libide/vcs/ide-vcs-clone-request.c
+++ b/src/libide/vcs/ide-vcs-clone-request.c
@@ -524,3 +524,39 @@ ide_vcs_clone_request_populate_branches (IdeVcsCloneRequest *self)
IDE_EXIT;
}
+
+IdeVcsCloneRequestValidation
+ide_vcs_clone_request_validate (IdeVcsCloneRequest *self)
+{
+ IdeVcsCloneRequestValidation flags = 0;
+ g_autoptr(IdeVcsUri) uri = NULL;
+
+ g_return_val_if_fail (IDE_IS_VCS_CLONE_REQUEST (self), 0);
+ g_return_val_if_fail (IDE_IS_VCS_CLONER (self->cloner), 0);
+
+ if (ide_str_empty0 (self->uri) || !ide_vcs_uri_is_valid (self->uri))
+ flags |= IDE_VCS_CLONE_REQUEST_INVAL_URI;
+ else
+ uri = ide_vcs_uri_new (self->uri);
+
+ if (uri != NULL)
+ {
+ const char *path;
+
+ if ((path = ide_vcs_uri_get_path (uri)))
+ {
+ g_autofree char *name = ide_vcs_cloner_get_directory_name (self->cloner, uri);
+ g_autoptr(GFile) new_directory = g_file_get_child (self->directory, name);
+
+ if (g_file_query_exists (new_directory, NULL))
+ flags |= IDE_VCS_CLONE_REQUEST_INVAL_DIRECTORY;
+ }
+ }
+
+ /* I mean, who really wants to validate email anyway */
+ if (!ide_str_empty0 (self->author_email) &&
+ strchr (self->author_email, '@') == NULL)
+ flags |= IDE_VCS_CLONE_REQUEST_INVAL_EMAIL;
+
+ return flags;
+}
diff --git a/src/libide/vcs/ide-vcs-clone-request.h b/src/libide/vcs/ide-vcs-clone-request.h
index 839fbc2d9..60c1802ba 100644
--- a/src/libide/vcs/ide-vcs-clone-request.h
+++ b/src/libide/vcs/ide-vcs-clone-request.h
@@ -30,6 +30,14 @@ G_BEGIN_DECLS
#define IDE_TYPE_VCS_CLONE_REQUEST (ide_vcs_clone_request_get_type())
+typedef enum
+{
+ IDE_VCS_CLONE_REQUEST_VALID = 0,
+ IDE_VCS_CLONE_REQUEST_INVAL_URI = 1 << 0,
+ IDE_VCS_CLONE_REQUEST_INVAL_DIRECTORY = 1 << 1,
+ IDE_VCS_CLONE_REQUEST_INVAL_EMAIL = 1 << 2,
+} IdeVcsCloneRequestValidation;
+
IDE_AVAILABLE_IN_ALL
G_DECLARE_FINAL_TYPE (IdeVcsCloneRequest, ide_vcs_clone_request, IDE, VCS_CLONE_REQUEST, IdeObject)
@@ -68,5 +76,8 @@ void ide_vcs_clone_request_set_directory (IdeVcsCloneRequest
GFile *directory);
IDE_AVAILABLE_IN_ALL
void ide_vcs_clone_request_populate_branches (IdeVcsCloneRequest *self);
+IDE_AVAILABLE_IN_ALL
+IdeVcsCloneRequestValidation
+ ide_vcs_clone_request_validate (IdeVcsCloneRequest *self);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]