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:

diagram

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.