mirror of
https://github.com/classchartsapi/classcharts-api-js.git
synced 2026-05-14 11:58:13 +00:00
feat: i know how to use optional arguments
This commit is contained in:
parent
d0ed8b1cd7
commit
0f8f0a5027
23 changed files with 110 additions and 82 deletions
|
|
@ -1 +0,0 @@
|
||||||
release.js
|
|
||||||
|
|
@ -1,22 +1,71 @@
|
||||||
:root {
|
:root {
|
||||||
|
--light-hl-0: #AF00DB;
|
||||||
|
--dark-hl-0: #C586C0;
|
||||||
|
--light-hl-1: #000000;
|
||||||
|
--dark-hl-1: #D4D4D4;
|
||||||
|
--light-hl-2: #001080;
|
||||||
|
--dark-hl-2: #9CDCFE;
|
||||||
|
--light-hl-3: #A31515;
|
||||||
|
--dark-hl-3: #CE9178;
|
||||||
|
--light-hl-4: #0000FF;
|
||||||
|
--dark-hl-4: #569CD6;
|
||||||
|
--light-hl-5: #795E26;
|
||||||
|
--dark-hl-5: #DCDCAA;
|
||||||
|
--light-hl-6: #0070C1;
|
||||||
|
--dark-hl-6: #4FC1FF;
|
||||||
--light-code-background: #FFFFFF;
|
--light-code-background: #FFFFFF;
|
||||||
--dark-code-background: #1E1E1E;
|
--dark-code-background: #1E1E1E;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (prefers-color-scheme: light) { :root {
|
@media (prefers-color-scheme: light) { :root {
|
||||||
|
--hl-0: var(--light-hl-0);
|
||||||
|
--hl-1: var(--light-hl-1);
|
||||||
|
--hl-2: var(--light-hl-2);
|
||||||
|
--hl-3: var(--light-hl-3);
|
||||||
|
--hl-4: var(--light-hl-4);
|
||||||
|
--hl-5: var(--light-hl-5);
|
||||||
|
--hl-6: var(--light-hl-6);
|
||||||
--code-background: var(--light-code-background);
|
--code-background: var(--light-code-background);
|
||||||
} }
|
} }
|
||||||
|
|
||||||
@media (prefers-color-scheme: dark) { :root {
|
@media (prefers-color-scheme: dark) { :root {
|
||||||
|
--hl-0: var(--dark-hl-0);
|
||||||
|
--hl-1: var(--dark-hl-1);
|
||||||
|
--hl-2: var(--dark-hl-2);
|
||||||
|
--hl-3: var(--dark-hl-3);
|
||||||
|
--hl-4: var(--dark-hl-4);
|
||||||
|
--hl-5: var(--dark-hl-5);
|
||||||
|
--hl-6: var(--dark-hl-6);
|
||||||
--code-background: var(--dark-code-background);
|
--code-background: var(--dark-code-background);
|
||||||
} }
|
} }
|
||||||
|
|
||||||
body.light {
|
body.light {
|
||||||
|
--hl-0: var(--light-hl-0);
|
||||||
|
--hl-1: var(--light-hl-1);
|
||||||
|
--hl-2: var(--light-hl-2);
|
||||||
|
--hl-3: var(--light-hl-3);
|
||||||
|
--hl-4: var(--light-hl-4);
|
||||||
|
--hl-5: var(--light-hl-5);
|
||||||
|
--hl-6: var(--light-hl-6);
|
||||||
--code-background: var(--light-code-background);
|
--code-background: var(--light-code-background);
|
||||||
}
|
}
|
||||||
|
|
||||||
body.dark {
|
body.dark {
|
||||||
|
--hl-0: var(--dark-hl-0);
|
||||||
|
--hl-1: var(--dark-hl-1);
|
||||||
|
--hl-2: var(--dark-hl-2);
|
||||||
|
--hl-3: var(--dark-hl-3);
|
||||||
|
--hl-4: var(--dark-hl-4);
|
||||||
|
--hl-5: var(--dark-hl-5);
|
||||||
|
--hl-6: var(--dark-hl-6);
|
||||||
--code-background: var(--dark-code-background);
|
--code-background: var(--dark-code-background);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.hl-0 { color: var(--hl-0); }
|
||||||
|
.hl-1 { color: var(--hl-1); }
|
||||||
|
.hl-2 { color: var(--hl-2); }
|
||||||
|
.hl-3 { color: var(--hl-3); }
|
||||||
|
.hl-4 { color: var(--hl-4); }
|
||||||
|
.hl-5 { color: var(--hl-5); }
|
||||||
|
.hl-6 { color: var(--hl-6); }
|
||||||
pre, code { background: var(--code-background); }
|
pre, code { background: var(--code-background); }
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -3,4 +3,11 @@
|
||||||
<h1>Classcharts API</h1>
|
<h1>Classcharts API</h1>
|
||||||
</a>
|
</a>
|
||||||
<p>A very WIP client for the classcharts API</p>
|
<p>A very WIP client for the classcharts API</p>
|
||||||
|
<p><a href="https://jamesatjaminit.github.io/classcharts-api/index.html">Documentation</a></p>
|
||||||
|
|
||||||
|
<a href="#examples" id="examples" style="color: inherit; text-decoration: none;">
|
||||||
|
<h1>Examples</h1>
|
||||||
|
</a>
|
||||||
|
<pre><code class="language-typescript"><span class="hl-0">import</span><span class="hl-1"> { </span><span class="hl-2">ClasschartsClient</span><span class="hl-1"> } </span><span class="hl-0">from</span><span class="hl-1"> </span><span class="hl-3">'classcharts-api'</span><br/><span class="hl-4">async</span><span class="hl-1"> </span><span class="hl-4">function</span><span class="hl-1"> </span><span class="hl-5">main</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-6">client</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-5">ClasschartsClient</span><span class="hl-1">(</span><span class="hl-3">'classchartsCode'</span><span class="hl-1">, </span><span class="hl-3">'01/1/2000'</span><span class="hl-1">)</span><br/><span class="hl-1"> </span><span class="hl-0">await</span><span class="hl-1"> </span><span class="hl-2">client</span><span class="hl-1">.</span><span class="hl-5">init</span><span class="hl-1">()</span><br/><span class="hl-1"> </span><span class="hl-2">console</span><span class="hl-1">.</span><span class="hl-5">log</span><span class="hl-1">(</span><br/><span class="hl-1"> </span><span class="hl-0">await</span><span class="hl-1"> </span><span class="hl-2">client</span><span class="hl-1">.</span><span class="hl-5">getBehaviour</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-2">displayDate:</span><span class="hl-1"> </span><span class="hl-3">'due_date'</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-2">fromDate:</span><span class="hl-1"> </span><span class="hl-3">'20/01/2000'</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-2">toDate:</span><span class="hl-1"> </span><span class="hl-3">'01/02/2000'</span><span class="hl-1">,</span><br/><span class="hl-1"> })</span><br/><span class="hl-1"> )</span><br/><span class="hl-1"> </span><span class="hl-2">console</span><span class="hl-1">.</span><span class="hl-5">log</span><span class="hl-1">(</span><span class="hl-0">await</span><span class="hl-1"> </span><span class="hl-2">client</span><span class="hl-1">.</span><span class="hl-5">getActivity</span><span class="hl-1">(</span><span class="hl-4">null</span><span class="hl-1">))</span><br/><span class="hl-1"> </span><span class="hl-2">console</span><span class="hl-1">.</span><span class="hl-5">log</span><span class="hl-1">(</span><span class="hl-0">await</span><span class="hl-1"> </span><span class="hl-2">client</span><span class="hl-1">.</span><span class="hl-5">getStudentInfo</span><span class="hl-1">())</span><br/><span class="hl-1"> </span><span class="hl-2">console</span><span class="hl-1">.</span><span class="hl-5">log</span><span class="hl-1">(</span><span class="hl-0">await</span><span class="hl-1"> </span><span class="hl-2">client</span><span class="hl-1">.</span><span class="hl-5">getActivity</span><span class="hl-1">(</span><span class="hl-4">null</span><span class="hl-1">))</span><br/><span class="hl-1"> </span><span class="hl-2">console</span><span class="hl-1">.</span><span class="hl-5">log</span><span class="hl-1">(</span><span class="hl-0">await</span><span class="hl-1"> </span><span class="hl-2">client</span><span class="hl-1">.</span><span class="hl-5">getActivity</span><span class="hl-1">(</span><span class="hl-4">null</span><span class="hl-1">))</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-5">main</span><span class="hl-1">()</span>
|
||||||
|
</code></pre>
|
||||||
</div></div><div class="col-4 col-menu menu-sticky-wrap menu-highlight"><nav class="tsd-navigation primary"><ul><li class="current"><a href="modules.html">Modules</a></li><li class=" tsd-kind-module"><a href="modules/api.html">api</a></li><li class=" tsd-kind-module"><a href="modules/client.html">client</a></li><li class=" tsd-kind-module"><a href="modules/consts.html">consts</a></li><li class=" tsd-kind-module"><a href="modules/index.html">index</a></li><li class=" tsd-kind-module"><a href="modules/types.html">types</a></li></ul></nav></div></div></div><footer class="with-border-bottom"><div class="container"><h2>Legend</h2><div class="tsd-legend-group"><ul class="tsd-legend"><li class="tsd-kind-variable"><span class="tsd-kind-icon">Variable</span></li><li class="tsd-kind-function"><span class="tsd-kind-icon">Function</span></li><li class="tsd-kind-type-alias"><span class="tsd-kind-icon">Type alias</span></li></ul><ul class="tsd-legend"><li class="tsd-kind-interface"><span class="tsd-kind-icon">Interface</span></li></ul><ul class="tsd-legend"><li class="tsd-kind-class"><span class="tsd-kind-icon">Class</span></li></ul></div><h2>Settings</h2><p>Theme <select id="theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></p></div></footer><div class="container tsd-generator"><p>Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></div><div class="overlay"></div><script src="assets/main.js"></script></body></html>
|
</div></div><div class="col-4 col-menu menu-sticky-wrap menu-highlight"><nav class="tsd-navigation primary"><ul><li class="current"><a href="modules.html">Modules</a></li><li class=" tsd-kind-module"><a href="modules/api.html">api</a></li><li class=" tsd-kind-module"><a href="modules/client.html">client</a></li><li class=" tsd-kind-module"><a href="modules/consts.html">consts</a></li><li class=" tsd-kind-module"><a href="modules/index.html">index</a></li><li class=" tsd-kind-module"><a href="modules/types.html">types</a></li></ul></nav></div></div></div><footer class="with-border-bottom"><div class="container"><h2>Legend</h2><div class="tsd-legend-group"><ul class="tsd-legend"><li class="tsd-kind-variable"><span class="tsd-kind-icon">Variable</span></li><li class="tsd-kind-function"><span class="tsd-kind-icon">Function</span></li><li class="tsd-kind-type-alias"><span class="tsd-kind-icon">Type alias</span></li></ul><ul class="tsd-legend"><li class="tsd-kind-interface"><span class="tsd-kind-icon">Interface</span></li></ul><ul class="tsd-legend"><li class="tsd-kind-class"><span class="tsd-kind-icon">Class</span></li></ul></div><h2>Settings</h2><p>Theme <select id="theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></p></div></footer><div class="container tsd-generator"><p>Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></div><div class="overlay"></div><script src="assets/main.js"></script></body></html>
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -5,9 +5,8 @@
|
||||||
"repository": {
|
"repository": {
|
||||||
"url": "https://github.com/jamesatjaminit/classcharts-api"
|
"url": "https://github.com/jamesatjaminit/classcharts-api"
|
||||||
},
|
},
|
||||||
"main": "./index.js",
|
"main": "./dist/index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"buildReady": "pnpm tsc && node dist/release.js",
|
|
||||||
"generateDocs": "pnpm typedoc --entryPointStrategy expand ./src"
|
"generateDocs": "pnpm typedoc --entryPointStrategy expand ./src"
|
||||||
},
|
},
|
||||||
"author": "",
|
"author": "",
|
||||||
|
|
@ -15,10 +14,13 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"undici": "^4.9.2"
|
"undici": "^4.9.2"
|
||||||
},
|
},
|
||||||
|
"files": [
|
||||||
|
"dist/**"
|
||||||
|
],
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^16.11.6",
|
"@types/node": "^16.11.6",
|
||||||
"typedoc": "^0.22.7",
|
"typedoc": "^0.22.7",
|
||||||
"typescript": "^4.4.4"
|
"typescript": "^4.4.4"
|
||||||
},
|
},
|
||||||
"types": "./types.d.ts"
|
"types": "./dist/index.d.ts"
|
||||||
}
|
}
|
||||||
18
src/api.ts
18
src/api.ts
|
|
@ -16,39 +16,39 @@ import {
|
||||||
} from './types'
|
} from './types'
|
||||||
export async function getStudentInfo(
|
export async function getStudentInfo(
|
||||||
studentCode: string,
|
studentCode: string,
|
||||||
dateOfBirth: string | null
|
dateOfBirth?: string
|
||||||
): Promise<Student> {
|
): Promise<Student> {
|
||||||
const client = new ClasschartsClient(studentCode, dateOfBirth)
|
const client = new ClasschartsClient(studentCode, dateOfBirth)
|
||||||
return await client.getStudentInfo()
|
return await client.getStudentInfo()
|
||||||
}
|
}
|
||||||
export async function getActivity(
|
export async function getActivity(
|
||||||
studentCode: string,
|
studentCode: string,
|
||||||
dateOfBirth: string | null,
|
dateOfBirth?: string,
|
||||||
options: GetActivityOptions | null
|
options?: GetActivityOptions
|
||||||
): Promise<ActivityResponse> {
|
): Promise<ActivityResponse> {
|
||||||
const client = new ClasschartsClient(studentCode, dateOfBirth)
|
const client = new ClasschartsClient(studentCode, dateOfBirth)
|
||||||
return await client.getActivity(options)
|
return await client.getActivity(options)
|
||||||
}
|
}
|
||||||
export async function getBehaviour(
|
export async function getBehaviour(
|
||||||
studentCode: string,
|
studentCode: string,
|
||||||
dateOfBirth: string | null,
|
dateOfBirth?: string,
|
||||||
options: GetBehaviourOptions | null
|
options?: GetBehaviourOptions
|
||||||
): Promise<BehaviourResponse> {
|
): Promise<BehaviourResponse> {
|
||||||
const client = new ClasschartsClient(studentCode, dateOfBirth)
|
const client = new ClasschartsClient(studentCode, dateOfBirth)
|
||||||
return await client.getBehaviour(options)
|
return await client.getBehaviour(options)
|
||||||
}
|
}
|
||||||
export async function listHomeworks(
|
export async function listHomeworks(
|
||||||
studentCode: string,
|
studentCode: string,
|
||||||
dateOfBirth: string | null,
|
dateOfBirth?: string,
|
||||||
options: GetHomeworkOptions | null
|
options?: GetHomeworkOptions
|
||||||
): Promise<HomeworksResponse> {
|
): Promise<HomeworksResponse> {
|
||||||
const client = new ClasschartsClient(studentCode, dateOfBirth)
|
const client = new ClasschartsClient(studentCode, dateOfBirth)
|
||||||
return await client.listHomeworks(options)
|
return await client.listHomeworks(options)
|
||||||
}
|
}
|
||||||
export async function getLessons(
|
export async function getLessons(
|
||||||
studentCode: string,
|
studentCode: string,
|
||||||
dateOfBirth: string | null,
|
dateOfBirth?: string,
|
||||||
options: GetLessonsOptions
|
options?: GetLessonsOptions
|
||||||
): Promise<LessonsResponse> {
|
): Promise<LessonsResponse> {
|
||||||
const client = new ClasschartsClient(studentCode, dateOfBirth)
|
const client = new ClasschartsClient(studentCode, dateOfBirth)
|
||||||
return await client.getLessons(options)
|
return await client.getLessons(options)
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ export class ClasschartsClient {
|
||||||
* @param studentCode Classcharts student code
|
* @param studentCode Classcharts student code
|
||||||
* @param dateOfBirth Student's date of birth
|
* @param dateOfBirth Student's date of birth
|
||||||
*/
|
*/
|
||||||
constructor(studentCode: string, dateOfBirth: string) {
|
constructor(studentCode: string, dateOfBirth?: string) {
|
||||||
this.studentCode = String(studentCode)
|
this.studentCode = String(studentCode)
|
||||||
this.dateOfBirth = String(dateOfBirth)
|
this.dateOfBirth = String(dateOfBirth)
|
||||||
}
|
}
|
||||||
|
|
@ -110,7 +110,7 @@ export class ClasschartsClient {
|
||||||
* @returns Activity data
|
* @returns Activity data
|
||||||
*/
|
*/
|
||||||
async getActivity(
|
async getActivity(
|
||||||
options: GetActivityOptions | null
|
options?: GetActivityOptions
|
||||||
): Promise<ActivityResponse> {
|
): Promise<ActivityResponse> {
|
||||||
const params = new URLSearchParams()
|
const params = new URLSearchParams()
|
||||||
options?.from && params.append('form', options?.from)
|
options?.from && params.append('form', options?.from)
|
||||||
|
|
@ -128,7 +128,7 @@ export class ClasschartsClient {
|
||||||
* @returns Array of behaviour points
|
* @returns Array of behaviour points
|
||||||
*/
|
*/
|
||||||
async getBehaviour(
|
async getBehaviour(
|
||||||
options: GetBehaviourOptions | null
|
options?: GetBehaviourOptions
|
||||||
): Promise<BehaviourResponse> {
|
): Promise<BehaviourResponse> {
|
||||||
const params = new URLSearchParams()
|
const params = new URLSearchParams()
|
||||||
options?.from && params.append('form', options?.from)
|
options?.from && params.append('form', options?.from)
|
||||||
|
|
@ -147,7 +147,7 @@ export class ClasschartsClient {
|
||||||
* @returns Array of homeworks
|
* @returns Array of homeworks
|
||||||
*/
|
*/
|
||||||
async listHomeworks(
|
async listHomeworks(
|
||||||
options: GetHomeworkOptions | null
|
options?: GetHomeworkOptions
|
||||||
): Promise<HomeworksResponse> {
|
): Promise<HomeworksResponse> {
|
||||||
if (!this.authCookies) throw new Error('Not authenticated')
|
if (!this.authCookies) throw new Error('Not authenticated')
|
||||||
const params = new URLSearchParams()
|
const params = new URLSearchParams()
|
||||||
|
|
@ -176,7 +176,7 @@ export class ClasschartsClient {
|
||||||
* @param options GetLessonsOptions
|
* @param options GetLessonsOptions
|
||||||
* @returns Array of lessons
|
* @returns Array of lessons
|
||||||
*/
|
*/
|
||||||
async getLessons(options: GetLessonsOptions): Promise<LessonsResponse> {
|
async getLessons(options?: GetLessonsOptions): Promise<LessonsResponse> {
|
||||||
if (!this.authCookies) throw new Error('Not authenticated')
|
if (!this.authCookies) throw new Error('Not authenticated')
|
||||||
if (!options?.date) throw new Error('No date specified')
|
if (!options?.date) throw new Error('No date specified')
|
||||||
const params = new URLSearchParams()
|
const params = new URLSearchParams()
|
||||||
|
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
import fs from 'fs'
|
|
||||||
|
|
||||||
// DO NOT DELETE THIS FILE
|
|
||||||
// This file is used by build system to build a clean npm package with the compiled js files in the root of the package.
|
|
||||||
// It will not be included in the npm package.
|
|
||||||
|
|
||||||
function main() {
|
|
||||||
const source = fs
|
|
||||||
.readFileSync(__dirname + '/../package.json')
|
|
||||||
.toString('utf-8')
|
|
||||||
const sourceObj = JSON.parse(source)
|
|
||||||
sourceObj.scripts = {}
|
|
||||||
sourceObj.devDependencies = {}
|
|
||||||
if (sourceObj.main.startsWith('dist/')) {
|
|
||||||
sourceObj.main = sourceObj.main.slice(5)
|
|
||||||
}
|
|
||||||
fs.writeFileSync(
|
|
||||||
__dirname + '/package.json',
|
|
||||||
Buffer.from(JSON.stringify(sourceObj, null, 2), 'utf-8')
|
|
||||||
)
|
|
||||||
fs.writeFileSync(
|
|
||||||
__dirname + '/version.txt',
|
|
||||||
Buffer.from(sourceObj.version, 'utf-8')
|
|
||||||
)
|
|
||||||
fs.copyFileSync(__dirname + '/../.npmignore', __dirname + '/.npmignore')
|
|
||||||
fs.copyFileSync(__dirname + '/../README.MD', __dirname + '/README.MD')
|
|
||||||
}
|
|
||||||
|
|
||||||
main()
|
|
||||||
|
|
@ -3,8 +3,8 @@ const { code, dob } = require('../../src/tests/config.json')
|
||||||
async function main() {
|
async function main() {
|
||||||
const client = new ClasschartsClient(code, dob)
|
const client = new ClasschartsClient(code, dob)
|
||||||
await client.init()
|
await client.init()
|
||||||
console.log(await client.getBehaviour(null))
|
console.log(await client.getBehaviour())
|
||||||
console.log(await client.getActivity(null))
|
console.log(await client.getActivity())
|
||||||
}
|
}
|
||||||
|
|
||||||
main()
|
main()
|
||||||
|
|
|
||||||
10
src/types.d.ts
vendored
10
src/types.d.ts
vendored
|
|
@ -37,8 +37,8 @@ export interface Student {
|
||||||
detention_alias_plural_uc: string
|
detention_alias_plural_uc: string
|
||||||
}
|
}
|
||||||
export interface GetActivityOptions {
|
export interface GetActivityOptions {
|
||||||
from: string | undefined
|
from?: string
|
||||||
to: string | undefined
|
to?: string
|
||||||
}
|
}
|
||||||
export interface ActivityTimelinePoint {
|
export interface ActivityTimelinePoint {
|
||||||
positive: number
|
positive: number
|
||||||
|
|
@ -57,9 +57,9 @@ export interface ActivityResponse {
|
||||||
other_negative_count: Array<any>
|
other_negative_count: Array<any>
|
||||||
}
|
}
|
||||||
export interface GetBehaviourOptions {
|
export interface GetBehaviourOptions {
|
||||||
from: string | undefined
|
from?: string
|
||||||
to: string | undefined
|
to?: string
|
||||||
last_id: string | undefined
|
last_id?: string
|
||||||
}
|
}
|
||||||
export interface BehaviourPoint {
|
export interface BehaviourPoint {
|
||||||
id: number
|
id: number
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue