def add_callback_url(callback, base_url, data="", timeout=2):
        """Build a url that, when requested by the client, will cause a callback to be triggered

        Arguments:
            callback: The function to be called. It should take 1 argument(the
              data or None on
                      timeout) and returns if the callback shoudl remain mapped.
            base_url: The base url to use to build the detection URL on top of.
            data: The data to include to the callback. if empty the data can be
              appended to the
                  returned url at a latter time
            timeout: How long the callback should remain live for.

        Returns the url to trigger detection. If data is empty it is safe to
          append the data
        to the url directly.
        """
        id = callbacks.add(callback, timeout=timeout)
        id = base64.standard_b64encode(str(id))
        url = base_url + "?%s:%s,%s" % (ClientReportDetection.token, id, data)
        return url
Build a url that, when requested by the client, will cause a callback to be triggered

        Arguments:
            callback: The function to be called. It should take 1 argument(the
              data or None on
                      timeout) and returns if the callback shoudl remain mapped.
            base_url: The base url to use to build the detection URL on top of.
            data: The data to include to the callback. if empty the data can be
              appended to the
                  returned url at a latter time
            timeout: How long the callback should remain live for.

        Returns the url to trigger detection. If data is empty it is safe to
          append the data
        to the url directly.
        
nogotofail/mitm/connection/handlers/data/report.py