console/app/cloud/views/api/__init__.py

101 lines
3.1 KiB
Python
Raw Normal View History

2015-12-01 02:43:10 +03:00
# coding: utf-8
import uuid
from datetime import datetime
from datetime import timedelta
from flask import jsonify
from flask import render_template
from flask import session
from flask import redirect
from flask import url_for
from flask import request
from flask import Blueprint
from app import models
from app.settings import settings
from app.cloud.controllers.users import ControllerUsers
2015-12-23 02:31:43 +03:00
from app.cloud.controllers.containers import ControllerContainers
from cloudnsru import CloudnsClient
2015-12-01 02:43:10 +03:00
viewAPI = Blueprint('api', __name__, url_prefix='/api')
2015-12-23 02:31:43 +03:00
# /auth
@viewAPI.route('/auth', methods=['POST'])
def auth():
"""
Процесс авторизации
- получаем емейл и секретный ключ
- создаём временный токен
- выдаём токен
:return:
"""
email = request.form['email']
secret = request.form['secret']
expire = request.form['expire']
token = ''
return jsonify(token=token)
# /container/create
# /container/details/<uuid:container_id>
@viewAPI.route('/container/list', methods=['GET', 'POST', 'PUT', 'DELETE'])
def container_list():
# get containers list
containers = ControllerContainers(session['user_id']).get_items()
return jsonify(status=0, message='ok', containers=containers)
2015-12-01 02:43:10 +03:00
@viewAPI.route('/stats/<uuid:rule_id>')
def stats(rule_id):
# auth user
if not ControllerUsers().auth(session['email'], session['password']):
return redirect(url_for("app_id_logout"))
rules = ControllerRules(session['user_id'])
# check the user have a selected rule
# if user not have a container then redirect to the container list
if not rules.check_exists_item(rule_id):
return redirect(url_for('rules.index'))
rules_statistics = ControllerRulesStatistics(rule_id)
errors = {'total': 0, 'items': []}
stats_string = {'requests': '', 'traffic': ''}
last_days = datetime.today() - timedelta(days=30)
# get rule details
rule_details = rules.get_item(rule_id)
stats_string['traffic'] = rules_statistics.traffic_total_get(last_days)
stats_string['requests'] = rules_statistics.requests_total_get(last_days)
traffic_by_country = rules_statistics.traffic_by_country_get(last_days)
if stats_string['traffic'] > 0:
stats_string['cost'] = 0
elif stats_string['traffic'] > 50:
stats_string['cost'] = 4
elif stats_string['traffic'] > 1000:
stats_string['cost'] = 3
elif stats_string['traffic'] > 2000:
stats_string['cost'] = 2.7
elif stats_string['traffic'] > 3000:
stats_string['cost'] = 2.6
elif stats_string['traffic'] > 4000:
stats_string['cost'] = 2.5
elif stats_string['traffic'] > 5000:
stats_string['cost'] = 2.4
# for data_item in data:
# print data_item.timestamp, data_item.body_bytes_sent
return render_template('rules/stats.twig',
rule=rule_details,
stats_string=stats_string,
traffic_by_country=traffic_by_country,
errors=errors)