Skip to content
This repository has been archived by the owner on Jun 9, 2021. It is now read-only.
/ fluminus Public archive

A library in Elixir to access the reverse-engineered LumiNUS API

License

Notifications You must be signed in to change notification settings

indocomsoft/fluminus

Repository files navigation

Looking for new maintainer

I am graduating at the end of this semester (December 2020 == AY2020/2021 Semester 1 == Fall 2020), and so I will most likely not have time to maintain nor the necessary access to test and dogfood the features. If you are interested in maintaining the project, do contact me at the email address I use to author the commits on this repository.

If I can't find a new maintainer by the end of 2020, I will archive the project. Feel free to fork this project, as it was released under the MIT license.

Fluminus

Build Status Coverage Status

F LumiNUS! IVLE ftw! Why fix what ain't broken?!

If you are looking for the CLI tool, it has been refactored as a separate package: https://github.com/indocomsoft/fluminus_cli

Since IVLE was deprecated on AY2019/2020, while LumiNUS had consistently pushed back its schedule to release an API, I have decided to reverse-engineer the API used by the Angular front-end of LumiNUS.

Recall all the posts that complained about how slow LumiNUS is? That’s an example of the difference between code that works and well-designed code that works efficiently.

  • A/P Ooi Wei Tsang, NUS School of Computing1

As evident from the quote, LumiNUS is infamous for its slow speed (and in my opinion, ridiculous API). As such, for Fluminus, I try to keep to best coding practices and do things efficiently, such as HTTP connection pooling, ensuring that there is no O(n^2) algorithm, not creating requests for information that has previously been obtained, and only creating requests to the backend that are absolutely necessary (looking at you, LumiNUS Angular Frontend).

Do let me know if you have any suggestions!

PR's are welcome.

Note that this is created through reverse-engineering LumiNUS's Angular Frontend. The API might change at any time (although I doubt it since LumiNUS is using OpenID Connect)

Features

  • Authentication via ADFS (vafs.nus.edu.sg)
  • Get name of student
  • Get list of modules
    • Taking/Teaching
    • Only this semester's modules
  • Get announcements
  • Get listing of workbin files and download them
  • Get listing of webcasts and download them
  • Get listing of weekly lesson plans and their associated files, and download them
  • Get listing of multimedia files and download them

Installation

As a dependency

This package can be installed by adding fluminus to your list of dependencies in mix.exs:

def deps do
  [
    {:fluminus, "~> 2.0"}
  ]
end

Documentation can be found at https://hexdocs.pm/fluminus.

Footnotes

  1. https://www.facebook.com/nuswhispers/posts/2555462971190815?comment_id=2556787264391719

About

A library in Elixir to access the reverse-engineered LumiNUS API

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages