Kathmandu-backend Прогуляйся прямоугольником.

Auth

  1. register /auth/register/

    Веб-форма для регистрации нового пользователя. Отобразит на форме Succesfully registered, если регистрация прошла успешно. Иначе отобразит на форме сообщение об ошибке. На самом деле, не очень отобразит, так что убедись, что всё вводишь правильно. При успехе, редиректит на индекс.

  2. DEPRECATED login [POST] /auth/login/

    создаст и вернет токен пользователя, если он зарегистрирован. Ммм.. Токен немножко неправильный, и это надо поправить

     $ http POST localhost:5000/auth/login/ email=test1@test.com password=1234
    HTTP/1.0 200 OK
    Content-Length: 49
    Content-Type: application/json
    Date: Fri, 24 Jul 2015 10:37:03 GMT
    Server: Werkzeug/0.10.4 Python/2.7.10
    
    {
        "auth_token": "Sj_6dvW5AkotGZZA5KN8Dr1dYI"
    }
    

    иначе вернет
    
    HTTP/1.0 403 FORBIDDEN
    Content-Length: 68
    Content-Type: application/json
    Date: Fri, 24 Jul 2015 10:43:44 GMT
    Server: Werkzeug/0.10.4 Python/2.7.10
    
    {
        "error": "User with such password and username does not exist"
    }
    
    
  3. logout [POST] /auth/logout/

    Разлогинить пользователя и удалить его токен. Если пользователя нет, возвращает 403

     $ http POST localhost:5000/auth/logout/ auth_token=Sj_6dvW5AkotGZZA5KN8Dr1dYI
    HTTP/1.0 204 NO CONTENT
    Content-Length: 0
    Content-Type: application/json
    Date: Fri, 24 Jul 2015 10:41:29 GMT
    Server: Werkzeug/0.10.4 Python/2.7.10
    
    иначе вернет:
    
    HTTP/1.0 403 FORBIDDEN
    Content-Length: 47
    Content-Type: application/json
    Date: Fri, 24 Jul 2015 10:45:20 GMT
    Server: Werkzeug/0.10.4 Python/2.7.10
    
    {
        "error": "User with such token not exist"
    } 
    


API

Запросы по API используют HTTPBasicAuth, вместо которой рекомендуется использовать токены. Тогда для получения токена как раз понадобится авторизация, но дальше можно будет без него

 $ http GET localhost:5000/api/v1/token/ --auth test@test.com:trololo
HTTP/1.0 200 OK
Content-Length: 162
Content-Type: application/json
Date: Fri, 24 Jul 2015 23:05:22 GMT
Server: Werkzeug/0.10.4 Python/2.7.10

{
    "expiration": 3600,
    "token": "eyJhbGciOiJIU[...]QQFfmda4E-d5EwRA"
}

Тестовые заглушки (stubs)

[DEPRECATED] Без GeoJSON

  1. DEPRECATED get_single [GET] /api/v1/stubs/single/

    Одинокая точка просто lat/long. Вбитая статическая точка примерно соответствует городу Одинцово МО.

     $ http GET localhost:5000/api/v1/stubs/single/
    HTTP/1.0 200 OK
    Content-Length: 45
    Content-Type: application/json
    Date: Sun, 19 Jul 2015 18:53:17 GMT
    Server: Werkzeug/0.10.4 Python/2.7.10
    
    {
        "lat": 55.6806789,
        "long": 37.281859
    }
    

  2. DEPRECATED get_square [GET] /api/v1/stubs/square/

    «квадратик». Без аргументов — статический квадрат из четырёх точек lat/long. Вбитый квадрат примерно соответствует четырёхугольнику где-то в лесу на территории лагеря "Волга". Последняя точка совпадает с первой.

     $ http GET localhost:5000/api/v1/stubs/square/
    HTTP/1.0 200 OK
    Content-Length: 240
    Content-Type: application/json
    Date: Sun, 19 Jul 2015 20:19:38 GMT
    Server: Werkzeug/0.10.4 Python/2.7.10
    
    {
        "1": {
            "lat": 56.808013,
            "long": 37.285683
        },
        "2": {
            "lat": 56.810503,
            "long": 37.286841
        },
        "3": {
            "lat": 56.809892,
            "long": 37.291862
        },
        "4": {
            "lat": 56.80806,
            "long": 37.289674
        },
        "5": {
            "lat": 56.808013,
            "long": 37.285683
        }
    }
    
    Принимает опциональные аргументы, задающие отправную точку и периметр квадрата (в километрах). Периметр считает топорно, без учёта закруглений поверхности:
     $ http GET localhost:5000/api/v1/stubs/square/ reference_lat==15.0 reference_long==10.0 walk_distance==3.14
    HTTP/1.0 200 OK
    Content-Length: 307
    Content-Type: application/json
    Date: Mon, 20 Jul 2015 07:35:47 GMT
    Server: Werkzeug/0.10.4 Python/2.7.10
    
    {
        "1": {
            "lat": 15.0,
            "long": 10.0
        },
        "2": {
            "lat": 15.0,
            "long": 10.007072072072072
        },
        "3": {
            "lat": 15.007072072072072,
            "long": 10.007072072072072
        },
        "4": {
            "lat": 15.007072072072072,
            "long": 10.0
        },
        "5": {
            "lat": 15.0,
            "long": 10.0
        }
    }
    

То же самое, но на GeoJSON (all the cool kids do that)

  1. get_geojson_single [GET] /api/v1/stubs/geojson/single/

    Одинокая точка просто lat/long. Вбитая статическая точка примерно соответствует городу Одинцово МО.

     $ http GET localhost:5000/api/v1/stubs/geojson/single/
    HTTP/1.0 200 OK
    Content-Length: 77
    Content-Type: application/json
    Date: Tue, 21 Jul 2015 08:56:01 GMT
    Server: Werkzeug/0.10.4 Python/2.7.10
    
    {
        "coordinates": [
                55.6806789,
                37.281859
         ],
         "type": "Point"
    }
    

  2. get_geojson_square [GET] /api/v1/stubs/geojson/square/

    Без аргументов -- статический квадрат из четырёх точек lat/long. Вбитый квадрат примерно соответствует четырёхугольнику где-то в лесу на территории лагеря "Волга". Последняя точка совпадает с первой.

     $ http GET localhost:5000/api/v1/stubs/geojson/square/
    HTTP/1.0 200 OK
    Content-Length: 288
    Content-Type: application/json
    Date: Tue, 21 Jul 2015 08:59:27 GMT
    Server: Werkzeug/0.10.4 Python/2.7.10
    
    {
        "coordinates": [
            [
                56.808013,
                37.285683
            ],
            [
                56.810503,
                37.286841
            ],
            [
                56.809892,
                37.291862
            ],
            [
                56.80806,
                37.289674
            ],
            [
                56.808013,
                37.285683
            ]
        ],
        "type": "Polygon"
    }
    
    Принимает опциональные аргументы, задающие отправную точку и периметр квадрата (в километрах). Периметр считает топорно, без учёта закруглений поверхности:
     $ http GET localhost:5000/api/v1/stubs/geojson/square/ reference_lat==15.0 reference_long==10.0 walk_distance==3.14
    HTTP/1.0 200 OK
    Content-Length: 295
    Content-Type: application/json
    Date: Tue, 21 Jul 2015 09:04:52 GMT
    Server: Werkzeug/0.10.4 Python/2.7.10
    {
        "coordinates": [
            [
                15.0,
                10.0
            ],
            [
                15.0,
                10.007072072072072
            ],
            [
                15.007072072072072,
                10.007072072072072
            ],
            [
                15.007072072072072,
                10.0
            ],
            [
                15.0,
                10.0
            ]
        ],
        "type": "Polygon"
    }
    

Statistics

  1. /api/v1/statistics/ — [POST] сохраняет статистику пользователя на сервере
    
      $ http POST 127.0.0.1:5000/api/v1/statistics/ statistics='{"test":1234}'
    HTTP/1.0 200 OK
    Content-Length: 2
    Content-Type: application/json
    Location: http://127.0.0.1/api/v1/statistics
    Date: Tue, 21 Jul 2015 09:04:52 GMT
    Server: Werkzeug/0.10.4 Python/2.7.10
    {}
    
  2. /api/v1/statistics/ — [GET] возвращает статистику пользователя
    
      $ http GET 127.0.0.1:5000/api/v1/statistics/
    HTTP/1.0 200 OK
    Content-Length: 231
    Content-Type: application/json
    Date: Tue, 21 Jul 2015 09:04:52 GMT
    Server: Werkzeug/0.10.4 Python/2.7.10
    {
        "statistics": {
            "2015-07-25 20:45:35": "{"test": 1234}"
        }
    }
    

Only for developing

  1. /users/ — список всех зарегистрированных пользователей
  2. /api/v1/me/ — Информация о текущем залогиненном пользователе (превращает токен в емейл)
DEBUG
True