aboutsummaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
Diffstat (limited to 'util')
-rw-r--r--util/address.go26
-rw-r--r--util/validators.go54
2 files changed, 80 insertions, 0 deletions
diff --git a/util/address.go b/util/address.go
new file mode 100644
index 0000000..45c80c9
--- /dev/null
+++ b/util/address.go
@@ -0,0 +1,26 @@
+/* openbills - Server for web based Libre Billing Software
+ * Copyright (C) 2023-2024 Vidhu Kant Sharma <vidhukant@vidhukant.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package util
+
+type Address struct {
+ AddressText string
+ City string
+ State string
+ PostalCode string
+ Country string
+}
diff --git a/util/validators.go b/util/validators.go
new file mode 100644
index 0000000..c180daf
--- /dev/null
+++ b/util/validators.go
@@ -0,0 +1,54 @@
+/* openbills - Server for web based Libre Billing Software
+ * Copyright (C) 2023-2024 Vidhu Kant Sharma <vidhukant@vidhukant.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package util
+
+import (
+ "regexp"
+ "net/mail"
+ "net/url"
+)
+
+var phoneRegex, gstinRegex *regexp.Regexp
+func init() {
+ phoneRegex = regexp.MustCompile(`^(?:(?:\(?(?:00|\+)([1-4]\d\d|[1-9]\d?)\)?)?[\-\.\ \\\/]?)?((?:\(?\d{1,}\)?[\-\.\ \\\/]?){0,})(?:[\-\.\ \\\/]?(?:#|ext\.?|extension|x)[\-\.\ \\\/]?(\d+))?$`)
+ gstinRegex = regexp.MustCompile(`^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z]{1}[1-9A-Z]{1}Z[0-9A-Z]{1}$`)
+}
+
+func ValidateEmail(email string) bool {
+ _, err := mail.ParseAddress(email)
+ if err != nil {
+ return false
+ }
+ return true
+}
+
+func ValidateWebsite(website string) bool {
+ _, err := url.ParseRequestURI(website)
+ if err != nil {
+ return false
+ }
+ return true
+}
+
+func ValidateGstin(gstin string) bool {
+ return gstinRegex.MatchString(gstin)
+}
+
+func ValidatePhone(phone string) bool {
+ return phoneRegex.MatchString(phone)
+}