'Parse key/value formatted source listing and return potential URLs.
The fundamental shape of this format is as follows:
key: value   # here : = separator
key : value
URI: [URL]   # here URI = uri_key
[URL]      # this is where it becomes trickey because [URL]
[URL]      # can contain \'separator\' specially if separator is :
key: value
The key uri_key is of interest to us and since the next line
in the config could contain another [URL], we need to keep track of context
when we hit uri_key  to be able to check if the next line(s)
have more [URL].
Args:
data: unprocessed lines from a file
separator: how the key/value pairs are seperated
uri_key: starting name of the key containing URI.
Returns:
A list of potential URLs found in data'

def ParseURIFromKeyValues(self, data, separator, uri_key):

    kv_entries = KeyValueParser(kv_sep=separator).ParseEntries(data)
    spaced_entries = FieldParser().ParseEntries(data)
    uris = []
    check_uri_on_next_line = False
    for (kv_entry, sp_entry) in zip(kv_entries, spaced_entries):
        for (k, v) in kv_entry.iteritems():
            if (check_uri_on_next_line and ((not v) or ((separator == ':') and v[0].startswith('/')))):
                uris.append(sp_entry[0])
            else:
                check_uri_on_next_line = False
                if (k.lower().startswith(uri_key) and v):
                    check_uri_on_next_line = True
                    uris.append(v[0])
    return uris
