edupage-api
Version:
Simple node.js package to manage your EduPage account.
248 lines (247 loc) • 8.53 kB
TypeScript
export = User;
/**
* @typedef {import("../lib/RawData").RawDataObject} RawDataObject
*/
/**
* @typedef {import("./Teacher")} Teacher
*/
/**
* @typedef {import("./Student")} Student
*/
/**
* @typedef {import("./Parent")} Parent
*/
/**
* @typedef {import("./Message")} Message
*/
/**
* @typedef {import("./enums").EntityType} EntityType
*/
/**
* @typedef {Object} LoginOptions
* @prop {string | null | undefined} [code2FA=undefined] If the provided value is typeof `string`, it's considired as a 2FA code (should be provided after first unsuccessful login). If it's `null` the 2FA will be skipped. If omitted or `undefined` and the 2FA is requested by the Edupage, the function will resolve with `null`.
* @prop {string} [user] Can be used to select a specific user in case there are more.
* @prop {string} [edupage=""] The edupage subdomain (origin) to login to. Try to set this if you have trouble logging in (e.g. incorrect password error).
*/
declare class User extends RawData {
/**
* Creates an instance of Student or Teacher from user data.
* @static
* @param {string} userString Userstring to create an instance of
* @param {RawDataObject} [data={}] Raw data to use for the instance
* @param {Edupage} [edupage=null] Edupage instance to use for the instance
* @return {User | Teacher | Student | Parent} User instance
* @memberof User
*/
static from(userString: string, data?: RawDataObject, edupage?: Edupage): User | Teacher | Student | Parent;
/**
* Parses the user string to provide some useful information
* @static
* @param {string} userString Userstring to parse
* @return {{id: string, type: EntityType, wildcard: boolean}} Parsed userstring
* @memberof User
*/
static parseUserString(userString: string): {
id: string;
type: EntityType;
wildcard: boolean;
};
/**
* Creates an instance of User.
* @param {RawDataObject} [data={}] Raw data to initialize the instance with.
* @param {Edupage} [edupage=null] Edupage instance to use.
* @memberof User
*/
constructor(data?: RawDataObject, edupage?: Edupage);
/**
* Edupage instance associated to this object.
* @type {Edupage}
*/
edupage: Edupage;
/**
* Date since when the user is registered
* @type {Date}
*/
dateFrom: Date;
/**
* Date of expected leave of the user
* @type {Date}
*/
dateTo: Date;
/**
* Firstname of the user
* @type {string}
*/
firstname: string;
/**
* Lastname of the user
* @type {string}
*/
lastname: string;
/**
* Gender of the user
* @type {GENDER}
*/
gender: GENDER;
/**
* Edupage identifier of the user in format of number
* @example "845796"
* @type {string}
*/
id: string;
/**
* Edupage userstring of the user
* @example "Student845796"
* @type {string}
*/
userString: string;
/**
* Flag marking if the user has left the school
* @type {boolean}
*/
isOut: boolean;
/**
* Edupage origin of the user (subdomain)
* @type {string}
*/
origin: string;
/**
* Login credentials of the user. Set if the user is logged in or has attempted to log in.
* @type {{username: string, password: string} | null}
*/
credentials: {
username: string;
password: string;
};
/**
* CookieJar object storing current session cookies for logged in user
* @type {CookieJar}
*/
cookies: CookieJar;
/**
* Flag telling if the user is logged in
* @type {boolean}
*/
isLoggedIn: boolean;
/**
* Email address of the logged in user
* @type {string}
*/
email: string;
/**
* Initializes instance with raw data
* @param {Edupage} [edupage=null]
* @memberof Class
*/
init(edupage?: Edupage): void;
/**
* @typedef {Object} PollOption
* @prop {string} text Text of the option.
* @prop {string} [id] Id of the option. If not provided, a new one will be generated.
*/
/**
* @typedef {Object} PollOptions
* @prop {PollOption[]} options Options to be added to the poll.
* @prop {boolean} [multiple=false] If `true` multiple choices can be selected.
*/
/**
* @typedef {Object} MessageOptions
* @prop {string} text Text of the message.
* @prop {boolean} [important=false] If `true` the message will be marked as important. You will also be able to track who has read the message.
* @prop {boolean} [parents=false] If `true` the message will be sent to student as well as their parents.
* @prop {Attachment[]} [attachments=[]] Attachments to be added to the message.
* @prop {PollOptions} [poll] Poll to be added to the message.
*/
/**
* Sends a message to the user
* @param {MessageOptions} options Message options
* @this {User | Teacher | Student | Parent}
* @memberof User
*/
sendMessage(options: {
/**
* Text of the message.
*/
text: string;
/**
* If `true` the message will be marked as important. You will also be able to track who has read the message.
*/
important?: boolean;
/**
* If `true` the message will be sent to student as well as their parents.
*/
parents?: boolean;
/**
* Attachments to be added to the message.
*/
attachments?: Attachment[];
/**
* Poll to be added to the message.
*/
poll?: {
/**
* Options to be added to the poll.
*/
options: {
/**
* Text of the option.
*/
text: string;
/**
* Id of the option. If not provided, a new one will be generated.
*/
id?: string;
}[];
/**
* If `true` multiple choices can be selected.
*/
multiple?: boolean;
};
}): Promise<import("./Message")>;
/**
* @typedef {import("../lib/ResponseTypings").MAuthResponse} MAuthResponse
*/
/**
* Logs in the user. Provide third parameter as login options if you have troubles logging in.
* @param {string} username Username of the user
* @param {string} password Password of the user
* @param {LoginOptions} [options] Login options
* @return {Promise<User | null>} Returns a promise that resolves with the `User` object if successful. If the 2FA is requested by the Edupage, the promise will resolve with `null`.
* @memberof User
*/
login(username: string, password: string, options?: LoginOptions): Promise<User | null>;
/**
* Retruns Edupage's representation of the user id.
* @return {string} Userstring
* @memberof User
*/
getUserString(): string;
}
declare namespace User {
export { RawDataObject, Teacher, Student, Parent, Message, EntityType, LoginOptions };
}
import RawData = require("../lib/RawData");
import Edupage = require("./Edupage");
import { GENDER } from "./enums";
import CookieJar = require("../lib/CookieJar");
import Attachment = require("./Attachment");
type LoginOptions = {
/**
* If the provided value is typeof `string`, it's considired as a 2FA code (should be provided after first unsuccessful login). If it's `null` the 2FA will be skipped. If omitted or `undefined` and the 2FA is requested by the Edupage, the function will resolve with `null`.
*/
code2FA?: string | null | undefined;
/**
* Can be used to select a specific user in case there are more.
*/
user?: string;
/**
* The edupage subdomain (origin) to login to. Try to set this if you have trouble logging in (e.g. incorrect password error).
*/
edupage?: string;
};
type RawDataObject = import("../lib/RawData").RawDataObject;
type Teacher = import("./Teacher");
type Student = import("./Student");
type Parent = import("./Parent");
type EntityType = import("./enums").EntityType;
type Message = import("./Message");