''
import datetime
import requests
import json
import io
import sqlite3
import sys
from sqlite3 import Error
from requests.exceptions import RequestException


database = "/srv/yandex.db"


def create_connection(db_file):
    conn = None
    try:
        conn = sqlite3.connect(db_file,
                               detect_types=sqlite3.PARSE_DECLTYPES |
                               sqlite3.PARSE_COLNAMES)
    except Error as e:
        SystemExit(e)
    return conn


def create_ride(conn):
    sql = """ CREATE TABLE IF NOT EXISTS RIDE (
                distance REAL NOT NULL,
                class_name TEXT NOT NULL,
                min_price INT NOT NULL,
                price INT NOT NULL,
                waiting_time INT NOT NULL,
                time INT NOT NULL,
                timestamp TIMESTAMP NOT NULL) """
    cur = conn.cursor()
    cur.execute(sql)
    conn.commit()
    return cur.lastrowid


def insert_ride(conn, ride):
    sql = """ INSERT INTO ride(distance,class_name,min_price,
              price,waiting_time,time,timestamp)
              VALUES(?,?,?,?,?,?,?) """
    cur = conn.cursor()
    cur.execute(sql, ride)
    conn.commit()
    return cur.lastrowid


def get_api_json(json_data):
    headers = json_data['headers']
    params = json_data['params']
    uri = 'https://taxi-routeinfo.taxi.yandex.net/taxi_info'

    try:
        r = requests.get(uri, params=params, headers=headers)
    except RequestException as e:
        raise SystemExit(e)
    return r.json()


def read_params(filename):
    try:
        with io.open(filename, 'r', encoding='utf-8') as in_file:
            json_data = json.load(in_file)
    except Exception as e:
        SystemExit(e)
    return json_data


def main():
    params_file = sys.argv[1]
    conn = create_connection(database)
    with conn:
        create_ride(conn)

        params_json = read_params(params_file)
        json_data = get_api_json(params_json)
        currentDateTime = datetime.datetime.now()

        for i in range(2):
            opt = json_data['options'][i]
            ride = (json_data['distance'], opt['class_name'],
                    opt['min_price'], opt['price'],
                    opt['waiting_time'], json_data['time'],
                    currentDateTime)
            insert_ride(conn, ride)


if __name__ == '__main__':
    main()
''
