metagroup-schema-tools
v1.0.8
Published
Metagroup (like vigotech.org) schema tools
Downloads
156
Readme
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 dometagroup.json
schema
é o contido dovigotech-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 fontegetGroupPrevEvents(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 fontesortByDate(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íncronogetVideosFromSource(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.