-
Notifications
You must be signed in to change notification settings - Fork 0
/
api.html
1 lines (1 loc) · 12.3 KB
/
api.html
1
<!DOCTYPE html><html lang="de"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="description" content="Website ob.cs.hm.edu"><meta name="author" content="Oliver Braun"><meta name="viewport" content="width=device-width, initial-scale=1"><title>ob | api</title><link rel="stylesheet" href="/css/plugins/plugins.css"><link rel="stylesheet" href="/css/style.css"></head><body><div id="preloader"><div id="preloader-inner"></div></div><nav class="navbar navbar-toggleable-sm navbar-light bg-faded yamm"><div class="container"><button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button><a class="navbar-brand" href="/index.html">ob.cs.hm.edu</a><div class="collapse navbar-collapse" id="navbarSupportedContent"><ul class="nav navbar-nav ml-auto"><li class="dropdown nav-item"><a href="#" class="dropdown-toggle nav-link" data-toggle="dropdown">Lehre</a><ul class="dropdown-menu dropdown-menu-right"><li><a class="dropdown-item" href="/exercises.html">Praktikumsaufgaben</a></li><li><a class="dropdown-item" href="/devbox.html">DevBox-VM</a></li><li class="dropdown-submenu"><a tabindex="-1" href="#" class="dropdown-item" data-toggle="dropdown">Aktuell im WS 19/20</a><ul class="dropdown-menu"><li><a href="/lectures/algdati.html" class="dropdown-item">Algorithmen und Datenstrukturen I</a></li><li><a href="/lectures/vss.html" class="dropdown-item">Verteilte Softwaresysteme</a></li></ul></li><li class="dropdown-submenu"><a tabindex="-1" href="#" class="dropdown-item" data-toggle="dropdown">Geplant für SS 20</a><ul class="dropdown-menu"><li><a href="/lectures/algdatii.html" class="dropdown-item">Algorithmen und Datenstrukturen II</a></li><li><a href="/lectures/fun.html" class="dropdown-item">Funktionale Programmierung</a></li><li><a href="/lectures/vss.html" class="dropdown-item">Verteilte Softwaresysteme</a></li></ul></li><li class="dropdown-submenu"><a tabindex="-1" href="#" class="dropdown-item" data-toggle="dropdown">Alle Lehrveranstaltungen</a><ul class="dropdown-menu"><li><a href="/lectures/algdati.html" class="dropdown-item">Algorithmen und Datenstrukturen I</a></li><li><a href="/lectures/algdatii.html" class="dropdown-item">Algorithmen und Datenstrukturen II</a></li><li><a href="/lectures/compiler.html" class="dropdown-item">Compiler</a></li><li><a href="/lectures/fun.html" class="dropdown-item">Funktionale Programmierung</a></li><li><a href="/lectures/sa.html" class="dropdown-item">Software-Architektur</a></li><li><a href="/lectures/seiib.html" class="dropdown-item">Softwareentwicklung I (IB)</a></li><li><a href="/lectures/seiiib.html" class="dropdown-item">Softwareentwicklung II (IB)</a></li><li><a href="/lectures/swengiib.html" class="dropdown-item">Software Engineering I (IB)</a></li><li><a href="/lectures/swengiiib.html" class="dropdown-item">Software Engineering II (IB)</a></li><li><a href="/lectures/vss.html" class="dropdown-item">Verteilte Softwaresysteme</a></li><li><a href="/lectures/webtech.html" class="dropdown-item">Web-Techniken</a></li><li><a href="/lectures/webtechFK12.html" class="dropdown-item">Web-Techniken (mit FK12)</a></li></ul></li></ul></li><li class="nav-item"><a class="nav-link" href="/theses.html">Abschlußarbeiten</a></li><li class="nav-item"><a class="nav-link" href="/about.html">Prof. Dr. Oliver Braun</a></li><li class="social-nav nav-item"><a href="https://github.com/obcode" class="nav-link"><i class="ion-social-github" data-toggle="tooltip" data-placement="bottom" data-original-title="obcode @ GitHub"></i></a></li><li class="social-nav nav-item"><a href="https://twitter.com/obcode" class="nav-link"><i class="ion-social-twitter" data-toggle="tooltip" data-placement="bottom" data-original-title="@obcode"></i></a></li><li class="social-nav nav-item"><a href="https://www.linkedin.com/in/obcode/" class="nav-link"><i class="ion-social-linkedin" data-toggle="tooltip" data-placement="bottom" data-original-title="LinkedIn"></i></a></li><li class="social-nav nav-item"><a href="https://gitter.im/obcode" class="nav-link"><i class="ion-chatbubbles" data-toggle="tooltip" data-placement="bottom" data-original-title="Gitter"></i></a></li></ul></div></div></nav><section id="content-region-3" class="padding-40 page-tree-bg"><div class="container"><h3 class="page-tree-text">API</h3></div></section><div class="space-70"></div><div class="container"><div class="row"><div class="col-lg-6"><p>Die Informationen von dieser Seite können auch als <a href="http://www.json.org/">JSON</a>-Objekte abgerufen werden. Die Seite bietet jedoch keine <a href="https://de.wikipedia.org/wiki/Representational_State_Transfer">REST</a>-Schnittstelle.</p><h3>Informationen zu den einzelnen Veranstaltungen</h3><p>Für jede Veranstaltung finden Sie eine JSON-Datei. Der Link ist jeweils im Bild zur Veranstaltung zu finden. Für die Veranstaltung “Algorithmen und Datenstrukturen II” beispielsweise finden Sie die Seite unter <code>/lectures/algdatii.html</code>, das dazugehörige JSON finden Sie unter <code>/api/lectures/algdatii/base.json</code>.</p><h4>Veranstaltungsobjekte</h4><p>Veranstaltungsobjekte haben folgende Felder:</p><ul><li><code>short</code>: Abkürzung der Veranstaltung</li><li><code>long</code>: Titel der Veranstaltung</li><li><code>last</code>: Semester in dem die Veranstaltung zuletzt statt fand</li><li><code>semesters</code>: Abkürzungen aller Semester mit Veranstaltung</li><li><code>sidebar</code>: Array von Sidebar-Objekten</li><li><code>maincontent</code>: Array von Content-Objekten</li></ul><p>Die Objekte aus denen der Sidebar-Content generiert wird, haben folgenden Aufbau:</p><ul><li><code>title</code>: Überschrift der Sidebar-Box</li><li><code>text</code>: Sidebar-Box-Inhalt, wenn Text</li><li><code>listitems</code>: Sidebar-Box-Inhalt als Array, wenn Aufzählung</li></ul><p>Jedes Sidebar-Listitem-Objekt besteht aus einem <code>text</code>- und einem <code>url</code>-Feld.</p><p>Es gibt 4 verschiedene Felder in einem Content-Objekt:</p><ul><li><code>lecture</code>: Vorlesungstermine und -inhalte</li><li><code>lab</code>: Praktikumstermine und -inhalte</li><li><code>slides</code>: Vorlesungsfolien und Handouts</li><li><code>exercises</code>: Übungsblätter</li></ul><p>Ist etwas davon nicht vorhanden, z.B. wenn es keine Folien gibt, hat das entsprechende Feld den Wert <code>null</code>.</p><p>Das Lecture-Objekt enthält 3 Felder:</p><ul><li><code>daytime</code>: Wochentag und Uhrzeit</li><li><code>room</code>: Hörsaal</li><li><code>lectures</code>: Array mit Objekten die die folgenden Felder enthalten: <ul><li><code>date</code>: Datum des Vorlesungstermins</li><li><code>topic</code>: Inhalt des Vorlesungstermins</li></ul></li></ul><p><strong>Achtung:</strong> Das <code>lectures</code>-Array befindet sich ab sofort in der Datei <code>lectures.json</code>.</p><p>Das Lab-Objekt enthält 2 Felder mit Arrays:</p><ul><li><code>groups</code>: Teilgruppen mit je <ul><li><code>name</code>: Name der Teilgruppe</li><li><code>daytime</code>: Wochentag und Uhrzeit</li><li><code>room</code>: Praktikumsraum</li></ul></li><li><code>labs</code>: Praktikumstermine mit je <ul><li><code>dates</code>: Array mit je einem Termin pro Teilgruppe</li><li><code>topic</code>: Inhalt des Praktikumstermins</li></ul></li></ul><p><strong>Achtung:</strong> Das <code>labs</code>-Array befindet sich ab sofort in der Datei <code>labs.json</code>.</p><p>Das Slides-Array enthält Objekte je Folie mit folgenden Feldern:</p><ul><li><code>name</code>: Titel des Foliensatzes, des Handouts und des dazugehörigen Changelogs</li><li><code>file</code>: Dateiname des Foliensatzes <strong>ohne</strong> Dateiendung</li></ul><p>Das Excercises-Array enthält Objekte je Übungsblatt mit folgenden Feldern:</p><ul><li><code>name</code>: Titel des Übungsblatt und des dazugehörigen Changelogs</li><li><code>file</code>: Dateiname des Übungsblatt <strong>ohne</strong> Dateiendung</li></ul><p>Die Changelogs selbst sind auch wieder JSON-Objekte, die die Git-Commits für die Datei <code>source</code> seit <code>changesSince</code> im Array <code>changes</code> enthalten. Dabei besteht ein <code>change</code> aus <code>date</code>, dem Commitdatum, und <code>subject</code>, der Commitmessage. Dadurch erfahren Sie was sich in letzter Zeit an dem entsprechenden Dokument geändert hat. Nachdem Slides und Handouts aus einem Markdown-Dokument generiert werden, gibt es die Changelogs nur für Folien und für Übungsblätter.</p></div><div class="col-lg-6"><h3>Basis-Informationen</h3><p>Um die Folien und Aufgabenblätter direkt herunterladen zu können, fehlen noch einige Informationen. Diese finden Sie in der Datei <a href="/api/base.json"><code>/api/base.json</code></a>. Das darin Base-Objekt enthält folgende Felder:</p><ul><li><code>filesPrefix</code>: Präfix-URL</li><li><code>dirs</code>: Verzeichnisnamen für die verschiedenen Artefakte: <ul><li><code>slides</code></li><li><code>handouts</code></li><li><code>exercises</code></li><li><code>exams</code></li><li><code>changelog</code><ul><li><code>slides</code></li><li><code>exercises</code></li></ul></li></ul></li><li><code>suffixes</code>: Dateiendungen für die selben Artefakte</li></ul><h3>Beispiele</h3><ol><li><p>Sie wollen wissen, was im dritten Praktikumstermin der Veranstaltung “Algorithmen und Datenstrukturen I” statt findet und wann er ist.</p><p>Sie holen sich das Objekt <a href="/api/lectures/algdati.json">/api/lectures/algdati.json</a> als <code>algdati</code>.</p><p>Dort finden Sie unter <code>algdati.maincontent.lab.labs</code> das Array mit den Praktikumsterminen. Sie holen sich das dritte Objekt aus dem Array. Darin finden Sie unter <code>topic</code> was gemacht wird. Unter <code>dates</code> finden Sie ein Array mit den Datumsangaben.</p><p>Wenn Sie z.B. in der zweiten Teilgruppe sind, finden Sie als zweites Element das Datum ihres dritten Praktikums.</p></li><li><p>Sie wollen alle Handouts der Veranstaltung “Algorithmen und Datenstrukturen II” herunterladen.</p><p>Dazu benötigen Sie neben dem Objekt <a href="/api/lectures/algdatii.json">/api/lectures/algdatii.json</a> auch noch das <a href="/api/base.json">Base-Objekt</a>.</p><p>Aus dem <code>algdatii</code>-Objekt holen Sie sich aus dem Array <code>algdatii.maincontent.slides</code> alle Dateinamen (Feld <code>file</code>) als <code>filename</code>.</p><p>Mit dem Base-Objekt <code>base</code> bekommen Sie nun die Informationen um die Download-URLs zusammen zu bauen. Der grundsätzliche Aufbau einer solchen URL ist <code>filesPrefix/lecturename/artefaktDir/file.suffix</code>.</p><p>Dabei gilt also:</p><ul><li><code>filesPrefix</code> = <code>https://ob.cs.hm.edu/public/</code></li><li><code>lecturename</code> = <code>algdatii</code></li><li><code>artefaktDir</code> = <code>handouts</code></li><li><code>file</code> = <code>01_Hashverfahren</code></li><li><code>suffix</code> = <code>pdf</code></li></ul></li><li><p>Einzig die Klausuren finden Sie etwas versteckt in einer Sidebar-Box. Andererseits sind die Dateinamen immer <code>Klausur</code> gefolgt von <code>SS</code> für Sommersemester oder <code>WS</code> für Wintersemester sowie der zweistelligen Jahreszahl des Datums an dem das Semester begonnen hat. Die Klausur in “Software Engineering II (IB)” vom Wintersemester 2015/16 hat also den Dateinamen <code>KlausurWS15</code>. Zusammen mit den Informationen aus dem Base-Objekt können Sie daraus die folgende URL berechnen.</p><p>Das heisst die einfachste Methode alle alten Klausuren automatisch zu finden ist für alle Semester seit dem Wintersemester 2012/13 die URLs zu berechnen und zu versuchen die Datei herunter zu laden.</p></li></ol></div></div></div><div class="space-70"></div><div><div class="row"><div class="col-md-12 text-center"><span>Generated with <a href="https://spike.js.org/">Spike</a> on <a href="https://travis-ci.org/obcode/ob.cs.hm.edu">Travic CI</a> — Please report issues on <a href="https://github.com/obcode/ob.cs.hm.edu/issues">GitHub</a></span><div></div><span>© 2020 Oliver Braun | <a href="/impressum.html">Impressum</a>| <a href="/privacy.html">Datenschutzerklärung</a>| <a href="/api.html">API</a>| <a href="https://terraform.cs.hm.edu/">Jenkins</a></span></div></div></div><script src="/js/plugins/plugins.js"></script><script src="/js/app.js"></script></body></html>