From 3eb3b254ee0fc429da89db84a79917e9584034f6 Mon Sep 17 00:00:00 2001 From: Luke Carr Date: Thu, 21 May 2020 17:35:07 +0100 Subject: [PATCH] refactor(modules): separated module responses into separate files --- src/modules/auth/email/index.ts | 18 +++++++++ .../{email.ts => email/sign-up-settings.ts} | 21 +--------- src/modules/core/user/get-users-by-field.ts | 10 +++++ src/modules/core/user/get-users.ts | 26 +++++++++++++ src/modules/core/{user.ts => user/index.ts} | 39 ++----------------- .../get-site-info.ts} | 19 +-------- src/modules/core/webservice/index.ts | 18 +++++++++ src/modules/shared/index.ts | 4 +- src/modules/shared/user.ts | 2 +- src/modules/shared/warning.ts | 2 +- 10 files changed, 83 insertions(+), 76 deletions(-) create mode 100644 src/modules/auth/email/index.ts rename src/modules/auth/{email.ts => email/sign-up-settings.ts} (84%) create mode 100644 src/modules/core/user/get-users-by-field.ts create mode 100644 src/modules/core/user/get-users.ts rename src/modules/core/{user.ts => user/index.ts} (61%) rename src/modules/core/{webservice.ts => webservice/get-site-info.ts} (85%) create mode 100644 src/modules/core/webservice/index.ts diff --git a/src/modules/auth/email/index.ts b/src/modules/auth/email/index.ts new file mode 100644 index 0000000..8a21c40 --- /dev/null +++ b/src/modules/auth/email/index.ts @@ -0,0 +1,18 @@ +import Module from "../.."; +import { SignUpSettingsResponse } from "./sign-up-settings"; + +/** + * Functions relating to Moodle's email-based self-registration. + * + * This module's function calls may throw errors if self registration is disabled. + */ +export default class AuthEmailModule extends Module { + /** + * Get the sign-up required settings and profile fields. + */ + public async getSignUpSettings(): Promise { + return (await this.get( + "auth_email_get_signup_settings" + )) as SignUpSettingsResponse; + } +} diff --git a/src/modules/auth/email.ts b/src/modules/auth/email/sign-up-settings.ts similarity index 84% rename from src/modules/auth/email.ts rename to src/modules/auth/email/sign-up-settings.ts index 3aa7a72..9b8b851 100644 --- a/src/modules/auth/email.ts +++ b/src/modules/auth/email/sign-up-settings.ts @@ -1,6 +1,5 @@ -import Module from ".."; -import { FunctionResponse } from "../../functions"; -import { Warning } from "../shared"; +import { FunctionResponse } from "../../../functions"; +import { Warning } from "../../shared"; interface ProfileField { /** @@ -191,19 +190,3 @@ export interface SignUpSettingsResponse extends FunctionResponse { warnings?: Warning[]; } - -/** - * Functions relating to Moodle's email-based self-registration. - * - * This module's function calls may throw errors if self registration is disabled. - */ -export default class AuthEmailModule extends Module { - /** - * Get the sign-up required settings and profile fields. - */ - public async getSignUpSettings(): Promise { - return (await this.get( - "auth_email_get_signup_settings" - )) as SignUpSettingsResponse; - } -} diff --git a/src/modules/core/user/get-users-by-field.ts b/src/modules/core/user/get-users-by-field.ts new file mode 100644 index 0000000..dcc8e8c --- /dev/null +++ b/src/modules/core/user/get-users-by-field.ts @@ -0,0 +1,10 @@ +import { FunctionResponse } from "../../../functions"; +import { User } from "../../shared"; + +export interface GetUsersByFieldResponse extends FunctionResponse { + /** + * The array of users that match the provided field + * crtieria. + */ + users: User[]; +} diff --git a/src/modules/core/user/get-users.ts b/src/modules/core/user/get-users.ts new file mode 100644 index 0000000..eb18b0a --- /dev/null +++ b/src/modules/core/user/get-users.ts @@ -0,0 +1,26 @@ +import { FunctionResponse } from "../../../functions"; +import { User, Warning } from "../../shared"; + +export interface SearchCriteria { + /** + * The name of the field used to search + * for users. + */ + key: string; + + /** + * The field value to match when searching + * for users. + */ + value: string | number; +} + +export interface GetUsersResponse extends FunctionResponse { + /** + * The array of users that match the provided search + * crtieria. + */ + users: User[]; + + warnings?: Warning[]; +} diff --git a/src/modules/core/user.ts b/src/modules/core/user/index.ts similarity index 61% rename from src/modules/core/user.ts rename to src/modules/core/user/index.ts index 461d685..ec78b31 100644 --- a/src/modules/core/user.ts +++ b/src/modules/core/user/index.ts @@ -1,38 +1,7 @@ -import Module from ".."; -import { FunctionResponse } from "../../functions"; -import { Warning, User } from "../shared"; - -interface SearchCriteria { - /** - * The name of the field used to search - * for users. - */ - key: string; - - /** - * The field value to match when searching - * for users. - */ - value: string | number; -} - -export interface GetUsersResponse extends FunctionResponse { - /** - * The array of users that match the provided search - * crtieria. - */ - users: User[]; - - warnings?: Warning[]; -} - -export interface GetUsersByFieldResponse extends FunctionResponse { - /** - * The array of users that match the provided field - * crtieria. - */ - users: User[]; -} +import Module from "../.."; +import { FunctionResponse } from "../../../functions"; +import { SearchCriteria, GetUsersResponse } from "./get-users"; +import { GetUsersByFieldResponse } from "./get-users-by-field"; /** * Functions for user-related actions. diff --git a/src/modules/core/webservice.ts b/src/modules/core/webservice/get-site-info.ts similarity index 85% rename from src/modules/core/webservice.ts rename to src/modules/core/webservice/get-site-info.ts index b7c36f1..21fe15e 100644 --- a/src/modules/core/webservice.ts +++ b/src/modules/core/webservice/get-site-info.ts @@ -1,5 +1,4 @@ -import Module from ".."; -import { FunctionResponse } from "../../functions"; +import { FunctionResponse } from "../../../functions"; interface WebServiceFunction { /** @@ -182,19 +181,3 @@ export interface SiteInfoResponse extends FunctionResponse { */ theme: string; } - -/** - * Functions relating to system actions. - */ -export default class WebServiceModule extends Module { - /** - * Returns information about the Moodle site and the Web Services API. - * This function's response also contains information relating to the - * web service user, such as capabilities and authorized API actions. - */ - public async getSiteInfo(): Promise { - return (await this.get( - "core_webservice_get_site_info" - )) as SiteInfoResponse; - } -} diff --git a/src/modules/core/webservice/index.ts b/src/modules/core/webservice/index.ts new file mode 100644 index 0000000..4b74b01 --- /dev/null +++ b/src/modules/core/webservice/index.ts @@ -0,0 +1,18 @@ +import Module from "../.."; +import { SiteInfoResponse } from "./get-site-info"; + +/** + * Functions relating to system actions. + */ +export default class WebServiceModule extends Module { + /** + * Returns information about the Moodle site and the Web Services API. + * This function's response also contains information relating to the + * web service user, such as capabilities and authorized API actions. + */ + public async getSiteInfo(): Promise { + return (await this.get( + "core_webservice_get_site_info" + )) as SiteInfoResponse; + } +} diff --git a/src/modules/shared/index.ts b/src/modules/shared/index.ts index 8f6e652..c12363b 100644 --- a/src/modules/shared/index.ts +++ b/src/modules/shared/index.ts @@ -1,2 +1,2 @@ -export { default as User } from "./user"; -export { default as Warning } from "./warning"; +export * from "./user"; +export * from "./warning"; diff --git a/src/modules/shared/user.ts b/src/modules/shared/user.ts index 9c5fae1..a649605 100644 --- a/src/modules/shared/user.ts +++ b/src/modules/shared/user.ts @@ -33,7 +33,7 @@ interface Preference { value: string; } -export default interface User { +export interface User { /** * The unique identifier of the user. */ diff --git a/src/modules/shared/warning.ts b/src/modules/shared/warning.ts index b5d5af1..ed8bc89 100644 --- a/src/modules/shared/warning.ts +++ b/src/modules/shared/warning.ts @@ -1,4 +1,4 @@ -export default interface Warning { +export interface Warning { /** * @todo Add documentation. Moodle's * documentation does not provide an