From 65d2f39dcd7de16bdbdabceb569b95ef4f32a0b8 Mon Sep 17 00:00:00 2001 From: Gergely Polonkai Date: Fri, 19 Feb 2016 14:32:20 +0100 Subject: [PATCH] Move MatrixError to Vala --- .gitignore | 1 - src/Makefile.am | 22 ------- src/c-api.vapi | 22 ------- src/matrix-enums.vala | 51 +++++++++++++++ src/matrix-enumtypes.c.template | 59 ----------------- src/matrix-enumtypes.h.template | 42 ------------ src/matrix-types.c | 111 -------------------------------- src/matrix-types.h | 77 ---------------------- 8 files changed, 51 insertions(+), 334 deletions(-) delete mode 100644 src/matrix-enumtypes.c.template delete mode 100644 src/matrix-enumtypes.h.template delete mode 100644 src/matrix-types.c delete mode 100644 src/matrix-types.h diff --git a/.gitignore b/.gitignore index db191e5..9cfa4bf 100644 --- a/.gitignore +++ b/.gitignore @@ -36,7 +36,6 @@ Makefile.in /INSTALL /ChangeLog /src/matrix-version.h -/src/matrix-enumtypes.[ch] /src/matrix-marshalers.[ch] /src/stamp-matrix-marshalers /docs/reference/matrix-glib/version.xml diff --git a/src/Makefile.am b/src/Makefile.am index b5dabc6..e0f79c0 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -75,24 +75,16 @@ $(libmatrix_glib_0_0_la_VALA_SOURCES:.vala=.c): vala-stamp bin_PROGRAMS = test-api-client INST_H_SRC_FILES = \ - matrix-types.h \ $(NULL) INST_H_BUILT_FILES = \ matrix-version.h \ - matrix-enumtypes.h \ - $(NULL) - -matrix_enum_headers = \ - matrix-types.h \ $(NULL) libmatrix_glib_0_0_la_SOURCES = \ $(INST_H_BUILT_FILES) \ $(libmatrix_glib_0_0_la_VALA_SOURCES:.vala=.c) \ matrix-version.c \ - matrix-types.c \ - matrix-enumtypes.c \ $(INST_H_SRC_FILES) \ $(NULL) @@ -116,8 +108,6 @@ libmatrix_glib_0_0_la_LDFLAGS = \ $(PUBLIC_HEADER): vala-stamp BUILT_SOURCES += \ - matrix-enumtypes.c \ - matrix-enumtypes.h \ $(NULL) test_api_client_SOURCES = test-api-client.c @@ -129,21 +119,9 @@ test_api_client_LDADD = \ CLEANFILES += $(BUILT_SOURCES) EXTRA_DIST += \ - matrix-enumtypes.h.template \ - matrix-enumtypes.c.template \ $(INST_H_SRC_FILES) \ $(NULL) -matrix-enumtypes.h: $(matrix_enum_headers) matrix-enumtypes.h.template - $(AM_V_GEN) $(GLIB_MKENUMS) --template $(filter %.template,$^) \ - $(filter-out %.template,$^) > $@.tmp \ - && mv $@.tmp $@ - -matrix-enumtypes.c: $(matrix_enum_headers) matrix-enumtypes.h matrix-enumtypes.c.template - $(AM_V_GEN) $(GLIB_MKENUMS) --template $(filter %.template,$^) \ - $(filter-out %.template,$^) > $@.tmp \ - && mv $@.tmp $@ - include $(INTROSPECTION_MAKEFILE) Matrix-0.0.gir: libmatrix-glib-$(MATRIX_GLIB_API_VERSION).la diff --git a/src/c-api.vapi b/src/c-api.vapi index 829a19c..610bebe 100644 --- a/src/c-api.vapi +++ b/src/c-api.vapi @@ -18,26 +18,4 @@ [CCode (cprefix = "Matrix", gir_namespace = "Matrix", gir_version = "0.0", lower_case_cprefix = "matrix_")] namespace Matrix { - [CCode (cheader_filename = "matrix-enumtypes.h", cprefix = "MATRIX_ERROR_")] - public errordomain Error { - NONE, - COMMUNICATION_ERROR, - INCOMPLETE, - BAD_REQUEST, - BAD_RESPONSE, - INVALID_ROOM_ID, - UNKNOWN_VALUE, - INVALID_TYPE, - UNSUPPORTED, - INVALID_FORMAT, - M_MISSING_TOKEN, - M_FORBIDDEN, - M_UNKNOWN, - M_UNKNOWN_TOKEN, - M_NOT_JSON, - M_UNRECOGNIZED, - UNSPECIFIED, - UNKNOWN_ERROR; - public static GLib.Quark quark (); - } } diff --git a/src/matrix-enums.vala b/src/matrix-enums.vala index 4e050a9..bed3ad5 100644 --- a/src/matrix-enums.vala +++ b/src/matrix-enums.vala @@ -17,6 +17,57 @@ */ namespace Matrix { + public errordomain Error { + NONE, /// no error + COMMUNICATION_ERROR, /// there was a problem in communication (e.g. connection error) + INCOMPLETE, /// the passed/generated data is incomplete + BAD_REQUEST, /// the request is invalid + BAD_RESPONSE, /// malformed response, or the response is not a JSON object + INVALID_ROOM_ID, /// the provided string doesn’t contain a valid room ID + UNKNOWN_VALUE, /// the response from the Matrix.org server contains a value unknown to this library. These should be reported to the Matrix GLib SDK developers + INVALID_TYPE, /// the provided type is invalid + UNSUPPORTED, ///the operation is unsupported + INVALID_FORMAT, /// the format of the JSON node is invalid (e.g. it is an array instead of an object) + + /* Add Matrix-defined error codes under here, prefixing them with + * `MATRIX_ERROR_`, i.e. `M_FORBIDDEN` => + * `MATRIX_ERROR_M_FORBIDDEN` */ + M_MISSING_TOKEN = 500, /// authorization token is missing from the request + M_FORBIDDEN, /// access was forbidden (e.g. due to a missing/invalid token, or using a bad password during login) + M_UNKNOWN, /// an error unknown to the Matrix homeserver + M_UNKNOWN_TOKEN, /// the token provided is not known for the homeserver + M_NOT_JSON, /// illegal request, the content is not valid JSON + M_UNRECOGNIZED, /// the homeserver didn't understand the request + M_UNAUTHORIZED, /// the request is unauthorized + M_BAD_JSON, /// the JSON data is not in the required format + M_USER_IN_USE, /// the specified username is in use + M_ROOM_IN_USE, /// the specified room is in use + M_BAD_PAGINATION, /// invalid pagination parameters + M_BAD_STATE, /// invalid state event + M_NOT_FOUND, /// the requested resource is not found + M_GUEST_ACCESS_FORBIDDEN, /// guest access was requested, but it is forbidden + M_LIMIT_EXCEEDED, /// the request was rate limited + M_CAPTCHA_NEEDED, /// a captcha is needed to continue + M_CAPTCHA_INVALID, /// the provided captcha is invalid + M_MISSING_PARAM, /// a parameter is missing from the request + M_TOO_LARGE, /// the request data is too large + M_EXCLUSIVE, /// the desired user ID is in an exclusive namespace claimed by an application server + M_THREEPID_AUTH_FAILED, /// 3rd party authentication failed + M_THREEPID_IN_USE, /// the provided 3rd party ID is already in use + M_INVALID_USERNAME, /// the given username is invalid + + /* Allow for a lot of Matrix.org defined codes + * Do not define error codes after this! */ + UNSPECIFIED = 16383, /// no error code was sent by the homeserver. If you see this error, that usually indicates a homeserver bug + UNKNOWN_ERROR; /// an error unknown to this library + + public static GLib.Quark + quark () + { + return Quark.from_string("matrix-error-quark"); + } + } + /** * User account types. */ diff --git a/src/matrix-enumtypes.c.template b/src/matrix-enumtypes.c.template deleted file mode 100644 index 82f02a8..0000000 --- a/src/matrix-enumtypes.c.template +++ /dev/null @@ -1,59 +0,0 @@ -/*** BEGIN file-header ***/ -/* - * This file is part of matrix-glib-sdk - * - * matrix-glib-sdk is free software: you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation, either - * version 3 of the License, or (at your option) any later version. - * - * matrix-glib-sdk 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with matrix-glib-sdk. If not, see - * . - */ - -#include "matrix-enumtypes.h" -/*** END file-header ***/ - -/*** BEGIN file-production ***/ - -/* enumerations from @filename@ */ -/*** END file-production ***/ - -/*** BEGIN value-header ***/ - -GType -@enum_name@_get_type(void) -{ - static volatile gsize g_define_type_id__volatile = 0; - - if (g_once_init_enter(&g_define_type_id__volatile)) { - static const G@Type@Value values[] = { -/*** END value-header ***/ - -/*** BEGIN value-production ***/ - { - @VALUENAME@, - "@VALUENAME@", - "@valuenick@" - }, -/*** END value-production ***/ - -/*** BEGIN value-tail ***/ - {0, NULL, NULL} - }; - - GType g_define_type_id = g_@type@_register_static( - g_intern_static_string("@EnumName@"), - values); - g_once_init_leave(&g_define_type_id__volatile, g_define_type_id); - } - - return g_define_type_id__volatile; -} -/*** END value-tail ***/ diff --git a/src/matrix-enumtypes.h.template b/src/matrix-enumtypes.h.template deleted file mode 100644 index 0327afa..0000000 --- a/src/matrix-enumtypes.h.template +++ /dev/null @@ -1,42 +0,0 @@ -/*** BEGIN file-header ***/ -/* - * This file is part of matrix-glib-sdk - * - * matrix-glib-sdk is free software: you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation, either - * version 3 of the License, or (at your option) any later version. - * - * matrix-glib-sdk 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with matrix-glib-sdk. If not, see - * . - */ - -#ifndef __MATRIX_ENUMTYPES_H__ -#define __MATRIX_ENUMTYPES_H__ - -#include - -/*** END file-header ***/ - -/*** BEGIN file-production ***/ -/* enumerations from "@filename@" */ - -#include "@filename@" -/*** END file-production ***/ - -/*** BEGIN value-header ***/ - -GType @enum_name@_get_type(void); -#define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type()) -/*** END value-header ***/ - -/*** BEGIN file-tail ***/ - -#endif /* __MATRIX_ENUMTYPES_H__ */ -/*** END file-tail ***/ diff --git a/src/matrix-types.c b/src/matrix-types.c deleted file mode 100644 index e0c4e70..0000000 --- a/src/matrix-types.c +++ /dev/null @@ -1,111 +0,0 @@ -/* - * This file is part of matrix-glib-sdk - * - * matrix-glib-sdk is free software: you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation, either - * version 3 of the License, or (at your option) any later version. - * - * matrix-glib-sdk 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with matrix-glib-sdk. If not, see - * . - */ - -#include "matrix-types.h" -#include "matrix-enumtypes.h" -#include "matrix-glib.h" - -/** - * SECTION:matrix-types - * @title: Generic types - * @short_description: Generic types for Matrix GLib SDK calls - * - * These are the generic types used by many SDK calls for - * communication with the homeserver. - */ - -/** - * MatrixError: - * @MATRIX_ERROR_NONE: no error - * @MATRIX_ERROR_COMMUNICATION_ERROR: there was a problem in - * communication (e.g. connection - * error) - * @MATRIX_ERROR_INCOMPLETE: the passed/generated data is incomplete - * @MATRIX_ERROR_BAD_REQUEST: the request is invalid - * @MATRIX_ERROR_BAD_RESPONSE: malformed response, or the response is - * not a JSON object - * @MATRIX_ERROR_INVALID_ROOM_ID: the provided string doesn’t contain - * a valid room ID - * @MATRIX_ERROR_INVALID_TYPE: the provided type is invalid - * @MATRIX_ERROR_UNSUPPORTED: the operation is unsupported - * @MATRIX_ERROR_INVALID_FORMAT: the format of the JSON node is - * invalid (e.g. it is an array instead - * of an object) - * @MATRIX_ERROR_UNKNOWN_VALUE: the response from the Matrix.org - * server contains a value unknown to - * this library. These should be reported - * to the Matrix GLib SDK developers - * @MATRIX_ERROR_M_MISSING_TOKEN: authorization token is missing from - * the request - * @MATRIX_ERROR_M_FORBIDDEN: access was forbidden (e.g. due to a - * missing/invalid token, or using a bad - * password during login) - * @MATRIX_ERROR_M_UNKNOWN: an error unknown to the Matrix homeserver - * @MATRIX_ERROR_M_UNKNOWN_TOKEN: the token provided is not known for - * the homeserver - * @MATRIX_ERROR_M_NOT_JSON: illegal request, the content is not valid - * JSON - * @MATRIX_ERROR_M_UNRECOGNIZED: the homeserver didn't understand the - * request - * @MATRIX_ERROR_M_UNAUTHORIZED: the request is unauthorized - * @MATRIX_ERROR_M_BAD_JSON: the JSON data is not in the required - * format - * @MATRIX_ERROR_M_USER_IN_USE: the specified username is in use - * @MATRIX_ERROR_M_ROOM_IN_USE: the specified room is in use - * @MATRIX_ERROR_M_BAD_PAGINATION: invalid pagination parameters - * @MATRIX_ERROR_M_BAD_STATE: invalid state event - * @MATRIX_ERROR_M_NOT_FOUND: the requested resource is not found - * @MATRIX_ERROR_M_GUEST_ACCESS_FORBIDDEN: guest access was requested, - * but it is forbidden - * @MATRIX_ERROR_M_LIMIT_EXCEEDED: the request was rate limited - * @MATRIX_ERROR_M_CAPTCHA_NEEDED: a captcha is needed to continue - * @MATRIX_ERROR_M_CAPTCHA_INVALID: the provided captcha is invalid - * @MATRIX_ERROR_M_MISSING_PARAM: a parameter is missing from the - * request - * @MATRIX_ERROR_M_TOO_LARGE: the request data is too large - * @MATRIX_ERROR_M_EXCLUSIVE: the desired user ID is in an exclusive - * namespace claimed by an application - * server - * @MATRIX_ERROR_M_THREEPID_AUTH_FAILED: 3rd party authentication - * failed - * @MATRIX_ERROR_M_THREEPID_IN_USE: the provided 3rd party ID is - * already in use - * @MATRIX_ERROR_M_INVALID_USERNAME: the given username is invalid - * @MATRIX_ERROR_UNSPECIFIED: no error code was sent by the - * homeserver. If you see this error, that - * usually indicates a homeserver bug - * @MATRIX_ERROR_UNKNOWN_ERROR: an error unknown to this library - * - * Value mappings from Matrix.org API error codes - * (e.g. M_MISSING_TOKEN). They should be set - * automatically by API calls, if the response contains an error code. - */ - -/** - * MATRIX_ERROR: - * - * Error domain for Matrix GLib SDK. See #GError for more information - * on error domains. - */ - -/** - * matrix_error_quark: - * - * Gets the Matrix error #GQuark - */ -G_DEFINE_QUARK(matrix-error-quark, matrix_error); diff --git a/src/matrix-types.h b/src/matrix-types.h deleted file mode 100644 index a77e7a9..0000000 --- a/src/matrix-types.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * This file is part of matrix-glib-sdk - * - * matrix-glib-sdk is free software: you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation, either - * version 3 of the License, or (at your option) any later version. - * - * matrix-glib-sdk 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with matrix-glib-sdk. If not, see - * . - */ - -#ifndef __MATRIX_TYPES_H__ -#define __MATRIX_TYPES_H__ - -#include -#include - -G_BEGIN_DECLS - -typedef enum { - MATRIX_ERROR_NONE, - MATRIX_ERROR_COMMUNICATION_ERROR, - MATRIX_ERROR_INCOMPLETE, - MATRIX_ERROR_BAD_REQUEST, - MATRIX_ERROR_BAD_RESPONSE, - MATRIX_ERROR_INVALID_ROOM_ID, - MATRIX_ERROR_UNKNOWN_VALUE, - MATRIX_ERROR_INVALID_TYPE, - MATRIX_ERROR_UNSUPPORTED, - MATRIX_ERROR_INVALID_FORMAT, - - /* Add Matrix-defined error codes under here, prefixing them with - * `MATRIX_ERROR_`, i.e. `M_FORBIDDEN` => - * `MATRIX_ERROR_M_FORBIDDEN` */ - MATRIX_ERROR_M_MISSING_TOKEN = 500, - MATRIX_ERROR_M_FORBIDDEN, - MATRIX_ERROR_M_UNKNOWN, - MATRIX_ERROR_M_UNKNOWN_TOKEN, - MATRIX_ERROR_M_NOT_JSON, - MATRIX_ERROR_M_UNRECOGNIZED, - MATRIX_ERROR_M_UNAUTHORIZED, - MATRIX_ERROR_M_BAD_JSON, - MATRIX_ERROR_M_USER_IN_USE, - MATRIX_ERROR_M_ROOM_IN_USE, - MATRIX_ERROR_M_BAD_PAGINATION, - MATRIX_ERROR_M_BAD_STATE, - MATRIX_ERROR_M_NOT_FOUND, - MATRIX_ERROR_M_GUEST_ACCESS_FORBIDDEN, - MATRIX_ERROR_M_LIMIT_EXCEEDED, - MATRIX_ERROR_M_CAPTCHA_NEEDED, - MATRIX_ERROR_M_CAPTCHA_INVALID, - MATRIX_ERROR_M_MISSING_PARAM, - MATRIX_ERROR_M_TOO_LARGE, - MATRIX_ERROR_M_EXCLUSIVE, - MATRIX_ERROR_M_THREEPID_AUTH_FAILED, - MATRIX_ERROR_M_THREEPID_IN_USE, - MATRIX_ERROR_M_INVALID_USERNAME, - - /* Allow for a lot of Matrix.org defined codes - Do not define error codes after this! */ - MATRIX_ERROR_UNSPECIFIED = 16383, - MATRIX_ERROR_UNKNOWN_ERROR -} MatrixError; - -#define MATRIX_ERROR matrix_error_quark() -GQuark matrix_error_quark(void); - -G_END_DECLS - -#endif /* __MATRIX_TYPES_H__ */