Главная страница
Навигация по странице:

  • ОПИСАНИЕ API ДЛЯ СОЗДАНИЯ СКРИПТОВ ДЛЯ PROCEDURE

  • ПРИМЕР 1 ИСПОЛНЯЕМОГО СКРИПТА ДЛЯ PROCEDURE НА ЯЗЫКЕ PYTHON Получение и преобразование объектов из удаленной MySQL базы данных

  • ПРИМЕР 2 ИСПОЛНЯЕМОГО СКРИПТА ДЛЯ PROCEDURE НА ЯЗЫКЕ PYTHON Получение и преобразование объектов-фотографий из социальной сети Instagram для заданного пользователя

  • ПРИМЕР СТРУКТУРЫ ПРИЛОЖЕНИЯ В ФОРМАТЕ JSON

  • ОПИСАНИЕ СЕРВЕРНОГО API ТЕХНОЛОГИЧЕСКОЙ ПЛАТФОРМЫ 1. Получение конфигурации структуры приложенияGET

  • POST

  • ПРОГРАММНЫЙ КОД РАЗРАБОТАННОГО РЕШЕНИЯ

  • Диссертация. "Технология создания кроссплатформенных приложений с динамическим формированием структуры и контента"


    Скачать 1.73 Mb.
    Название"Технология создания кроссплатформенных приложений с динамическим формированием структуры и контента"
    АнкорДиссертация
    Дата22.02.2022
    Размер1.73 Mb.
    Формат файлаpdf
    Имя файлаDissertation.pdf
    ТипДокументы
    #369742
    страница5 из 5
    1   2   3   4   5

    ПРИЛОЖЕНИЕ 2
    ОПИСАНИЕ API ДЛЯ СОЗДАНИЯ СКРИПТОВ ДЛЯ PROCEDURE
    Основной пакет для доступа к API - apps_api, включает в себя следующие модули: external.py fetch(url, method='GET', payload=None, headers={}, timeout=10)
    Совершает обращение по указанному URL. url - URL, по которому необходимо выполнить запрос; method - название HTTP метода для запроса; payload - данные, которые должны быть включены в тело запроса; headers - словарь HTTP-заголовков, которые необходимо прикрепить к запросу; timeout - время, по прошествии которого невыполненный запрос будет прерван.
    Возвращаемое значение - строка ответа от сервера cache.py cache_obj(key, value, time=0)
    Кэширует заданное значение в памяти сервера. key - ключ, по которому будет произведено кэширование значение value - объект, который необходимо закэшировать time - время, в течение которого объект будет храниться в кэше (либо всегда). get_cached_obj(key)
    Возвращает закэшированное значение. либо None, если по заданному ключу объект не был найден. key - ключ, по которому необходимо осуществлять поиск. storage.py class Model
    Класс, наследуясь из которого можно получать хранимые в серверной базе данных объекты. Подробная документация об использовании класса Model находится по ссылке: https://developers.google.com/
    appengine/docs/python/ndb/
    !62

    ПРИЛОЖЕНИЕ 3
    ПРИМЕР 1 ИСПОЛНЯЕМОГО СКРИПТА ДЛЯ PROCEDURE НА
    ЯЗЫКЕ PYTHON
    Получение и преобразование объектов из удаленной MySQL базы
    данных
    import MySQLdb import datetime
    __author__ = 'Quiker'
    def func(_id=None):
    def _serialize_value(val):
    if isinstance(val, datetime.datetime):
    return str(val).replace(' ', 'T')
    else:
    return val db = MySQLdb.connect(host='173.194.247.52', passwd='rootpswd', user='root', use_unicode=True, charset='utf8')
    cursor = db.cursor()
    cursor.execute('use app;')
    cursor.execute('SELECT * FROM Event %s;' % (('WHERE _id =
    %ld' % long(_id)) if _id is not None else ''))
    rows = cursor.fetchall()
    result = []
    for row in rows:
    result.append(dict(zip(('_id', 'name', 'address',
    'descr', 'date'), map(_serialize_value, row))))
    db.close()
    return result
    !63

    ПРИЛОЖЕНИЕ 4
    ПРИМЕР 2 ИСПОЛНЯЕМОГО СКРИПТА ДЛЯ PROCEDURE НА
    ЯЗЫКЕ PYTHON
    Получение и преобразование объектов-фотографий из социальной сети
    Instagram для заданного пользователя
    import apps_api import json import urllib
    __author__ = 'quiker'
    def func(user):
    client_id = '4cf9d457f4e94932b2bd3c72484c6722'
    # user = '535783772'
    url = 'https://api.instagram.com/v1/users/%s/media/recent/?
    %s'
    % (user, urllib.urlencode({
    'client_id': client_id
    }))
    result = json.loads(apps_api.fetch(url))
    data = result['data']
    photos = list()
    for d in data:
    photos.append({
    'image': d['images']['standard_resolution']['url']
    })
    return photos
    !64

    ПРИЛОЖЕНИЕ 5
    ПРИМЕР СТРУКТУРЫ ПРИЛОЖЕНИЯ В ФОРМАТЕ JSON
    {
    "app_key": "541288da8b8584726550a6698ec289bffa619b8c",
    "entity_descriptions": [
    {
    "id": "5066549580791808",
    "name": "Event",
    "properties": {
    "date": "datetime",
    "descr": "text",
    "name": "text",
    "address": "text"
    },
    "version": 3,
    "changes": [
    {
    "to": 2,
    "change": {
    "type": 4,
    "from": "description",
    "to": "descr"
    }
    },
    {
    "to": 3,
    "change": {
    "type": 1,
    "col": "address",
    "col_type": "text"
    }
    }
    ]
    }
    ],
    "name": "Отделение ПИ",
    "pages": [
    {
    "id": "6262818231812096",
    "type": 1,
    "name": "Event List",
    "bindings": [
    {
    "id": "4855443348258816",
    "query": "",
    "entity": "5066549580791808",
    "type": 2,
    "property": "items"
    },
    {
    "id": "5277655813324800",
    "value": "Info",
    "view": "5207287069147136",
    "type": 0,
    "property": "title"
    !65

    },
    {
    "id": "5418393301680128",
    "value": "[$name]",
    "view": "4644337115725824",
    "type": 0,
    "property": "text"
    },
    {
    "view": "5207287069147136",
    "id": "5840605766746112",
    "action": {
    "id": "4714705859903488",
    "payload": {
    "event_id": "[$_id]"
    },
    "type": 3,
    "value": "6333186975989760"
    },
    "type": 4,
    "property": "action"
    },
    {
    "id": "5981343255101440",
    "view": {
    "subviews": [
    {
    "subviews": [],
    "background_color": "0xfafafa",
    "id": "4644337115725824",
    "font": {
    "style": 1,
    "size": 12
    },
    "text_color": "0x0",
    "frame": {
    "origin": {
    "y": 9,
    "x": 12
    },
    "size": {
    "height": 34,
    "width": 234
    }
    },
    "type": 3,
    "align": 0
    },
    {
    "subviews": [],
    "background_color": "0xfafafa",
    "id": "5770237022568448",
    "font": {
    "style": 2,
    "size": 10
    },
    "text_color": "0x0",
    "frame": {
    !66

    "origin": {
    "y": 53,
    "x": 12
    },
    "size": {
    "height": 25,
    "width": 209
    }
    },
    "type": 3,
    "align": 0
    },
    {
    "subviews": [],
    "background_color": "0xfafafa",
    "id": "5207287069147136",
    "font": {
    "style": 1,
    "size": 10
    },
    "text_color": "0x4f6bdb",
    "frame": {
    "origin": {
    "y": 30,
    "x": 202
    },
    "size": {
    "height": 30,
    "width": 100
    }
    },
    "type": 5,
    "align": 2
    }
    ],
    "background_color": "0xfafafa",
    "id": "6473924464345088",
    "name": "Event Cell",
    "frame": {
    "origin": {
    "y": 0,
    "x": 0
    },
    "size": {
    "height": 100,
    "width": 320
    }
    },
    "type": 0
    },
    "type": 3,
    "property": "item"
    },
    {
    "id": "6544293208522752",
    "value": "[$address]",
    "view": "5770237022568448",
    "type": 0,
    !67

    "property": "text"
    }
    ],
    "isStart": true
    },
    {
    "id": "6333186975989760",
    "type": 0,
    "name": "Event Page",
    "bindings": [
    {
    "id": "4925812092436480",
    "query": "_id == [#event_id]",
    "entity": "5066549580791808",
    "type": 2,
    "property": "item"
    },
    {
    "id": "5136918324969472",
    "value": "RSVP",
    "view": "5348024557502464",
    "type": 0,
    "property": "title"
    },
    {
    "id": "5488762045857792",
    "value": "[$name]",
    "view": "4785074604081152",
    "type": 0,
    "property": "text"
    },
    {
    "view": "5348024557502464",
    "id": "5699868278390784",
    "action": {
    "id": "4573968371548160",
    "payload": {},
    "type": 2,
    "value": "http://myrsvp.com/?event=[$_id]"
    },
    "type": 4,
    "property": "action"
    },
    {
    "id": "6051711999279104",
    "view": {
    "subviews": [
    {
    "subviews": [],
    "background_color": "0xfafafa",
    "id": "4785074604081152",
    "font": {
    "style": 1,
    "size": 10
    },
    "text_color": "0x0",
    "frame": {
    "origin": {
    !68

    "y": 20,
    "x": 43
    },
    "size": {
    "height": 36,
    "width": 226
    }
    },
    "type": 3,
    "align": 1
    },
    {
    "subviews": [],
    "background_color": "0xfafafa",
    "id": "5910974510923776",
    "font": {
    "style": 0,
    "size": 10
    },
    "text_color": "0x0",
    "frame": {
    "origin": {
    "y": 81,
    "x": 13
    },
    "size": {
    "height": 178,
    "width": 285
    }
    },
    "type": 3,
    "align": 0
    },
    {
    "subviews": [],
    "background_color": "0xfafafa",
    "id": "5348024557502464",
    "font": {
    "style": 1,
    "size": 10
    },
    "text_color": "0xa63030",
    "frame": {
    "origin": {
    "y": 276,
    "x": 108
    },
    "size": {
    "height": 30,
    "width": 100
    }
    },
    "type": 5,
    "align": 1
    }
    ],
    "background_color": "0xfafafa",
    "id": "6192449487634432",
    !69

    "name": "Single Event Template",
    "frame": {
    "origin": {
    "y": 0,
    "x": 0
    },
    "size": {
    "height": 480,
    "width": 320
    }
    },
    "type": 0
    },
    "type": 3,
    "property": "view"
    },
    {
    "id": "6614661952700416",
    "value": "[$descr]\\nWill held at: [$address]",
    "view": "5910974510923776",
    "type": 0,
    "property": "text"
    }
    ],
    "isStart": false
    }
    ]
    }
    !70

    ПРИЛОЖЕНИЕ 6
    ОПИСАНИЕ СЕРВЕРНОГО API ТЕХНОЛОГИЧЕСКОЙ ПЛАТФОРМЫ
    1. Получение конфигурации структуры приложения
    GET /api/app/APP_ID
    APP_ID - идентификатор приложения
    Параметры:
    * version (опционально) - номер последней синхронизированной локальной версии конфигурации, хранимой на клиенте
    Результат:
    JSON-сериализованное описание конфигурации и структуры приложения, включающее описание используемых страниц (Page) отображения, их связей, шаблонов, контекстов данных, а также описание моделей данных, необходимых для создания в рамках локального хранилища
    Пример результата представлен в приложении 5.
    2. Вызов удаленной процедуры
    POST /api/procedure/PROCEDURE_ID/call
    PROCEDURE_ID - идентификатор процедуры для вызова
    Параметры:
    * args - JSON-сериализованный набор пар ключ-значение для аргументов процедуры
    Результат:
    JSON-сериализованный массив элементов типа dictionary, представляющих собой объекты модели, используемые для отображения посредством связей.
    3. Получение объектов модели в соответствии с описанием
    EntityDescription
    GET /api/entities/ENTITY_DESCRIPTION_ID/all
    ENTITY_DESCRIPTION_ID - идентификатор описания модели
    !71

    Результат:
    JSON-сериализованный массив элементов модели, используемых для отображения посредством связей и предназначенных для хранения в рамках локальной базы данных.
    !72

    ПРИЛОЖЕНИЕ 7
    ПРОГРАММНЫЙ КОД РАЗРАБОТАННОГО РЕШЕНИЯ
    Ввиду большого объема приложения код разработанного решения приводится в электронном виде на компакт-диске, прикрепленном к настоящему документу.
    !73
    1   2   3   4   5


    написать администратору сайта