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
Esta ferramente define 3 obxectos:
Provee métodos para validar a estructura do json
-
Source.validate(data, schema)
source
é o contido dometagroup.json
schema
é o contido dovigotech-schema.json
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.
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.
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.