metagroup-schema-tools

1.0.8 • Public • Published

Metagroup schema tools

Este conxunto de ferramentas pretende simplificar a validación e o parseado da estrutura json creada no seu momento para vigotech.org.

Esta estructura de grupos ven definida por un fichero metagroup.json (segundo o schema definido en https://vigotech.org/vigotech-schema.json)

Básicamente esta estructura permite definir o Metagrupo (co seu logo, links a redes sociais e fontes de eventos) e os grupos membros de dito metagrupo, cada membro, tambien dispon de fontes definidas de onde estraer informacion dos eventos, videos, etc. Por exemplo (extraido de https://vigotech.org/vigotech.json):

.... "phpvigo": { "name": "PHPVigo", "logo": "https://vigotech.org/images/php_vigo.jpg", "links": { "web": "http://phpvigo.com/", "meetup": "https://www.meetup.com/es-ES/PHPVigo/", "twitter": "https://twitter.com/phpvigo", "github": "https://github.com/phpvigo", "youtube": "https://www.youtube.com/c/phpvigo" }, "events": [ { "type": "meetup", "meetupid": "phpvigo" } ], "videos": [ { "type": "youtube", "channel_id": "UCzcSOwRc7bfKs9jPehJRNxQ" } ] }, ....

A chave events poder ser un obxecto único ou un array de obxectos, que define as fontes de eventos de dito grupo

As fontes posibles actuais son:

  • Meetup: { "type": "meetup", "meetupid": "AIndustriosa" }
  • Eventbrite: { "type": "eventbrite", "eventbriteid": "17365087639" }
  • Json: { "type": "json", "source": "https://www.python-vigo.es/events.json" }

Mais info en https://github.com/VigoTech/vigotech.github.io

Ferramenta

Esta ferramente define 3 obxectos:

Source

Provee métodos para validar a estructura do json

  • Source.validate(data, schema)

    source é o contido do metagroup.json schema é o contido do vigotech-schema.json

Events

Provee métodos para importar e normalizar os próximos das distintas fontes

  • Events.getEventsEmitter() obten o EventEmitter do obxecto Events, os eventos disparados son:

    • getNextFromSourceInit o que se lle pasan os parametros source e options
    • getNextFromSourceCompleted o que se lle pasan os parametros nextEvents e options

    Exemplo de como capturar un evento:

    eventEmitter.on('getNextFromSourceInit', (source, options) => { console.log(``Getting upcoming events json for ${options.member.name} from ${source.type}``); })

  • getGroupNextEvents(sources, options) obten todos os eventos (independentemente da fonte) dun grupo, ordeados por data de más próximo a máis lonxano.

  • getNextFromSource(source, options) obten os eventos dunha fonte

  • getGroupPrevEvents(sources, options) obten todos os eventos (independentemente da fonte) pasados dun grupo, ordeados por data de más próximo a máis lonxano.

  • getPrevFromSource(source, options) obten os eventos pasado dunha fonte

  • sortByDate(events)

En todos os casos options é un obxecto no que se pasan elementos que poden precisar cada un dos importadores, por exemplo, o importador de eventbrite precisa o eventbriteToken para poder funcionar.

Videos

Provee métodos para importar e normalizar os videos de cada grupo

  • Videos.getEventsEmitter() obten o EventEmitter do obxecto Videos, os eventos disparados son:

    • getVideosFromSourceInit o que se lle pasan os parametros source e options
    • getVideosFromSourceCompleted o que se lle pasan os parametros videos e options
  • getGroupVideos(sources, limit, options) obten todos os videos (independentemente da fonte) dun grupo. Método asíncrono

  • getVideosFromSource(source, limit, options) obten os videos dunha fonte. Método asíncrono

En todos os casos options é un obxecto no que se pasan elementos que poden precisar cada un dos importadores, por exemplo, o importador de youtube precisa o youtubeApiKey para poder funcionar.

Exemplo de importador

Un exemplo de importador pode atoparse no prepare-json.js en https://github.com/VigoTech/vigotech.github.io

Neste ficheiro obtense o seguinte evento de cada grupo e a lista de videos e se xenera un ficheiro vigotech-generated.json con esta información engadida o vigotech.json para facilitar o seu uso no resto da web.

Readme

Keywords

none

Package Sidebar

Install

npm i metagroup-schema-tools

Weekly Downloads

35

Version

1.0.8

License

MIT

Unpacked Size

15.4 kB

Total Files

11

Last publish

Collaborators

  • sergiocarracedo
  • vigotechalliance