Overall Structure
Class Diagram
As an image says more than a thousand words, here is a class diagram representing the most important classes and their relationships to each other in the Friedolyn project:
The core: Friedolyn
The Friedolyn class is the most important class: It is the class that ties everything together and provides the main functionality. It contains objects of all the classes that are necessary to monitor grades and send notifications and provides an easy-to-use high-level API to do so.
Fetch data with Friedolyn
Learn how to use the Friedolyn class in your code.
Configurations are key
The Configuration class is the hidden hero of the Friedolyn project: It stores all the settings and preferences that are necessary to construct the other objects. It can be serialised into JSON and deserialised from it, so that the user’s preferences can be easily saved and then loaded at a later time.
Configuration Reference
Learn more about the settings available in the Configuration class.
FriedolinClient: The gate to hell
A FriedolinClient
is the component responsible for communicating with the Friedolin server and actually fetching
the student’s grades table and personal data.
In order to allow different approaches to provide this functionality, the FriedolinClient
class is abstract.
There are two implementations of the FriedolinClient
class shipped by default with Friedolyn:
- The
Client
relies on pre-defined HTTP requests and parses the responses based on a-priori knowledge of the HTML document structure. - The
HeadlessBrowser
uses Selenium to automate the Firefox web and interact with Friedolin via its graphical user interface, based on a-priori knowledge of the website’s layout, design and behaviour.
Due to the differences in the underlying technologies, these two implementations have different advantages and disadvantages.