0.1.4 • Published 7 years ago

oh.snap v0.1.4

Weekly downloads
2
License
ISC
Repository
github
Last release
7 years ago

oh.snap

oh.snap ist ein Framework welches ein generisches soziales Netzwerk aufbaut.

Installation

npm install oh.snap --save

API

Oh.Snap einbinden

Um die API zu verwenden muss das Paket geladen werden und die Konfiguration für die zu verwendende Datenbank muss übergeben werden. Derzeit wird MongoDB als Datenbank voll unterstützt, an einer vollen Unterstützung für Neo4J wird derzeit noch gearbeitet.

const snap = require('oh.snap').init({
    "type": DATABASETYPE, // Beispiel: "mongodb"
    "host": HOST, // Beispiel: "mongodb://127.0.0.1:27017/"
    "dataStore": DATENBANK-NAME, // Beipiel: "test"
    "login": DATENBANK-LOGIN,
    "password": DATENBANK-PASSWORT
})

API verwenden

Die API umfasst folgede Funktionen

users

snap.users.reducers.register(identifer, func)
snap.users.reducers.keys()
snap.users.builders.register(identifer, func)
snap.users.builders.keys()
snap.users.login(loginData, callback)
snap.users.register(newUserObj, builders, callback)
snap.users.authenticate(authToken, reducers)
snap.users.get(authToken, options, reducers, callback)
snap.users.connect(token, userIdFrom, userIdTo, callback)
snap.users.disconnect(token, userIdFrom, userIdTo, callback)
snap.users.logout(token, callback)

content

snap.content.reducers.register(identifer, func)
snap.content.reducers.keys()
snap.content.builders.register(identifer, func)
snap.content.builders.keys()
snap.content.create(authToken, newContentObj, builders, callback)
snap.content.get(authToken, options, reducers, callback)
snap.content.update(authToken, updatedContentObj, builders, callback)

Beispiele

Benutzer registrieren

let userName = "ein User"
let password = "myPassword"
snap.users.login(
  {userName, password, passwordConf: password},
  ["myBuilder"], // siehe Builder und Reducer
  (err, userObject) => {
    if (!!err) {
        console.log(err)
     }
     else {
        console.log(userObject)
     }
  })

Einlogen

let userName = "ein User"
let password = "myPassword"
snap.users.login(
  {userName, password},
  ["myReducer"], // siehe Builder und Reducer
  (err, userArray) => {
    if (!!err) {
        console.log(err)
     }
     else {
        console.log(userArray)
     }
  })

Benutzer suchen

Suchen aller Benutzer die das Feld online = true haben

let jwtToken = "USER-JWT-TOKEN"
snap.users.get(
  jwtToken,
  {online: true},
  ["myReducer"], // siehe Builder und Reducer
  (err, userList) => {
    if (!!err) {
        console.log(err)
     }
     else {
        console.log(userList)
     }
  })

Suchen eines Benutzers anhand der ID

let jwtToken = "USER-JWT-TOKEN"
snap.users.get(
  jwtToken,
  {_id: 1},
  ["myReducer"], // siehe Builder und Reducer
  (err, userList) => {
    if (!!err) {
        console.log(err)
     }
     else {
        console.log(userList)
     }
  })

User verbinden

Follow Beziehung zwischen zwei Nutzern erzeugen

let jwtToken = "USER-JWT-TOKEN"
snap.users.connect(
    jwtToken,
    userIdFrom,
    userIdTo,
    (err, userToObject) => {
      if (!!err) {
          console.log(err)
       }
       else {
          console.log(userToObject)
       }
  })

Soll die Verbindung wie eine Freundschaft funktionieren ist die Funktion erneut auszuführen, mit den userIdFrom und userIdTo getauscht.

Builder und Reducer

Builder und Reducer sind Funktionen die zum verarbeiten von User- und Content-Objekten beim laden oder speichern verwendet werden können. Zukünfig sollen hier default mehrere Funktionen zur verfügung gestellt werden, es können jedoch auch eigene Builder & Reducer registriert und verwendet werden.

Per Default sind folgende die Builder addRegisterTimestamp für User und addCreationTimestamp für Content verfügbar, die bei der Registrierung / dem Anlegen ein timesptamp Feld in das jeweilige Objekt schreiben.

Userrollen Builder

Beispiel für die Nutzung von Usergruppen.

snap.users.builders.register("benutzer-gruppe-1", (userObj) => {
    userObj.role="group1"
    return userObj
})
snap.users.builders.register("benutzer-gruppe-2", (userObj) => {
    userObj.role="group2"
    return userObj
})

Beim Registrieren kann dann eine Rolle übergeben werden.

let userName = "ein User"
let password = "myPassword"
snap.users.register(
  {userName, password, passwordConf: password, publicKey},
  ["benutzer-gruppe-1"], // siehe Builder und Reducer
  (err, data) => {
    if (!!err) {
        console.log(err)
     }
     else {
        console.log(data)
     }
  })
})