Skip to content

Instantly share code, notes, and snippets.

@nop33
Forked from pferreir/mock_livesync_server.py
Created January 18, 2017 13:17
Show Gist options
  • Select an option

  • Save nop33/69dc1e8980de396b86ecfe1503c45147 to your computer and use it in GitHub Desktop.

Select an option

Save nop33/69dc1e8980de396b86ecfe1503c45147 to your computer and use it in GitHub Desktop.

Revisions

  1. @pferreir pferreir created this gist Aug 12, 2016.
    51 changes: 51 additions & 0 deletions mock_livesync_server.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,51 @@
    from lxml import etree
    from flask import Flask, request

    app = Flask(__name__)


    @app.route("/")
    def hello():
    return "Hello World!"


    @app.route("/batchuploader/robotupload", methods=("GET",))
    def upload_get():
    return 'hello'


    def _print_records(data):
    root = etree.fromstring(data.encode('utf-8'))
    ns = {'marc': root.nsmap[None]}
    count = 0

    for record in root.findall('marc:record', namespaces=ns):
    rid = record.find('marc:datafield[@tag="970"]/marc:subfield[@code="a"]', namespaces=ns).text
    deleted = record.find('marc:datafield[@tag="980"]/marc:subfield[@code="c"]', namespaces=ns)
    if deleted is None:
    deleted = False
    else:
    deleted = deleted.text == 'DELETED'

    count += 1
    print(("-" if deleted else "+") + " " + rid)


    @app.route("/batchuploader/robotupload", methods=("POST",))
    def upload_post():
    data = request.form['file']

    _print_records(data)
    return "[INFO] Records uploaded"


    @app.route("/cern", methods=("POST",))
    def upload_post_xml():
    data = request.form['xml']

    _print_records(data)
    return "<result>true</result>"


    if __name__ == "__main__":
    app.run()