Source code for ftp.decoders
#! /usr/bin/env python
# -*- coding: utf-8 -*-
#
# Interpreter version: python 2.7
#
"""
Decoders module used to parser metadata file into :class:`EPublication
<edeposit.amqp.aleph.datastructures.epublication.EPublication>` structure.
"""
#= Imports ====================================================================
import validator
import parser_csv
import parser_xml
import parser_yaml
import parser_json
from meta_exceptions import MetaParsingException
#= Variables ==================================================================
SUPPORTED_FILES = {
"csv": parser_csv.decode,
"json": parser_json.decode,
"xml": parser_xml.decode,
"yaml": parser_yaml.decode
}
#= Functions & objects ========================================================
[docs]def parse_meta(filename, data):
"""
Parse `data` to EPublication.
Args:
filename (str): Used to choose right parser based at suffix.
data (str): Content of the metadata file.
Returns:
EPublication: object.
"""
if "." not in filename:
raise MetaParsingException(
"Can't recognize type of your metadata ('%s')!" % filename
)
suffix = filename.rsplit(".", 1)[1].lower()
if suffix not in SUPPORTED_FILES:
raise MetaParsingException("Can't parse file of type '%s'!" % suffix)
fp = validator.FieldParser()
for key, val in SUPPORTED_FILES[suffix](data).items():
fp.process(key, val)
return fp.get_epublication()