3 \meW" @ s d dl Z d dlZd dlZd dlmZmZ ejeZe ej gZG dd dZG dd dZ dd Zddd ZdddZdddZdddZdS ) N) url_helperutilc @ s e Zd ZdZdd Zdd ZdS )MetadataLeafDecoderz.Decodes a leaf blob into something meaningful.c C s, |sdS |j }|jdr(|jdr(dS dS )NF{}T)strip startswithendswith)selftext r /usr/lib/python3.6/ec2.py_maybe_json_object s z&MetadataLeafDecoder._maybe_json_objectc C s |sdS yt j|}W n tk r* |S X | j|rvy tj|S ttfk rt } ztj d|| W Y d d }~X nX |j ddkr|j S |S )N z6Field %s looked like a json object, but it was not: %s )r decode_binaryUnicodeDecodeErrorr jsonloads ValueError TypeErrorLOGwarningfind splitlines)r fieldblober r r __call__ s" zMetadataLeafDecoder.__call__N)__name__ __module____qualname____doc__r r r r r r r s r c @ s. e Zd Zd ddZdd Zdd Zdd ZdS )MetadataMaterializerNc C s4 || _ d | _|| _|| _|d kr*t | _n|| _d S )N)_blob_md _base_url_callerr _leaf_decoder)r r base_urlcallerleaf_decoderr r r __init__7 s zMetadataMaterializer.__init__c C s i }g }t j|}|s||fS dd }dd }x|j D ]}|j }||}| s8| rZq8|dkrdq8||r||kr|j| q8|jdd}|} t|dkr|\} }t j| } | d k rd| } |}| ||<