Exemple #1
0
def put_static(id, static):
    service = helpers.get_entity(Service, id)
    field = static.get("field")
    service.statics = filter(lambda x: x.get("field") != field,
                             service.statics) + [static]
    service.put()
    return service
Exemple #2
0
def call(id, action, body):
    service = helpers.get_entity(Service, id, urlsafe=True)
    if not _is_service_authorized(service, body.get("key")):
        raise ServiceUnauthorized()
    provider = service.provider.get()
    method = provider.get_method(action)
    if not method:
        raise ServiceMethodNotFound(
            "Action '{}' is unregistered".format(action))
    if not service.unlimit and service.balance <= 0:
        raise ServiceBalanceDepleted()
    msg = request(service.vendor_key, service.statics, provider.config, method,
                  body)
    if msg.get("status") == "success":
        if not service.unlimit:
            service.balance -= msg.get("cost", 0)
            service.put()
        if msg.get("balance"):
            provider.balance = msg.get("balance")
            provider.put()
    return messages.create(service.key, msg)
Exemple #3
0
def put_config(id, config):
    provider = helpers.get_entity(Provider, id)
    provider.config = merge(provider.config or {}, config)
    provider.put()
    return provider
Exemple #4
0
def remove_method(id, action):
    provider = helpers.get_entity(Provider, id)
    provider.methods = dissoc(provider.methods or {}, action)
    provider.put()
    return provider
Exemple #5
0
def put_method(id, method):
    provider = helpers.get_entity(Provider, id)
    action = method.get("action")
    provider.methods = merge(provider.methods or {}, {action: method})
    provider.put()
    return provider
Exemple #6
0
def generate_api_key(id):
    account = helpers.get_entity(Account, id)
    return account.generate_api_key()
Exemple #7
0
def remove_static(id, field):
    service = helpers.get_entity(Service, id)
    service.statics = filter(lambda x: x.get("field") != field,
                             service.statics)
    service.put()
    return service
Exemple #8
0
def load_balance(id, amount):
    service = helpers.get_entity(Service, id, urlsafe=True)
    service.balance += amount
    service.put()
    return service
Exemple #9
0
def reset_balance(id):
    service = helpers.get_entity(Service, id, urlsafe=True)
    service.balance = service.quota
    service.put()
    return service
Exemple #10
0
def get_balance(id):
    service = helpers.get_entity(Service, id, urlsafe=True)
    return pick(["id", "balance", "quota"], service.to_dict())