Exemplo n.º 1
0
def get_update(transaction, **parameters):
    force = parameters.get("force")
    parameters["force"] = {
        FORCE_MAIN_MAPPING.query_value: FORCE_MAIN_MAPPING,
        FORCE_FALLBACK_MAPPING.query_value: FORCE_FALLBACK_MAPPING
    }.get(force)
    release = AUS.evaluateRules(parameters, transaction=transaction)[0]
    if not release:
        return Response(status=404)

    headers = {}
    response = json.dumps(
        release.getResponse(parameters, app.config["WHITELISTED_DOMAINS"]))

    if app.config.get("AUTOGRAPH_URL"):
        hash_ = make_hash(response)

        def sign():
            return sign_hash(app.config["AUTOGRAPH_URL"],
                             app.config["AUTOGRAPH_KEYID"],
                             app.config["AUTOGRAPH_USERNAME"],
                             app.config["AUTOGRAPH_PASSWORD"], hash_)

        signature, x5u = cache.get("content_signatures", hash_, sign)
        headers["Content-Signature"] = f"x5u={x5u}; p384ecdsa={signature}"

    return Response(response=response,
                    status=200,
                    headers=headers,
                    mimetype="application/json")
Exemplo n.º 2
0
    def getSchema(self):
        def loadSchema():
            return yaml.load(
                open(
                    path.join(path.dirname(path.abspath(__file__)), "schemas",
                              self.jsonschema)))

        return cache.get("blob_schema", self.jsonschema, loadSchema)
Exemplo n.º 3
0
    def updates_are_disabled(self, product, channel, transaction=None):
        cache_key = (product, channel)
        v = cache.get("updates_disabled", cache_key)
        if v is not None:
            return v

        where = dict(product=product, channel=channel)
        emergency_shutoffs = dbo.emergencyShutoffs.select(where=where, transaction=transaction)
        v = bool(emergency_shutoffs)
        cache.put("updates_disabled", cache_key, v)
        return v
Exemplo n.º 4
0
    def updates_are_disabled(self, product, channel, transaction=None):
        cache_key = (product, channel)
        v = cache.get("updates_disabled", cache_key)
        if v is not None:
            return v

        where = dict(product=product, channel=channel)
        emergency_shutoffs = dbo.emergencyShutoffs.select(
            where=where, transaction=transaction)
        v = bool(emergency_shutoffs)
        cache.put("updates_disabled", cache_key, v)
        return v
Exemplo n.º 5
0
    def getSchema(self):
        def loadSchema():
            return yaml.safe_load(open(path.join(path.dirname(path.abspath(__file__)), "schemas", self.jsonschema)))

        return cache.get("blob_schema", self.jsonschema, loadSchema)