Как написать расширение погоды
В этом разделе описано пошаговое руководство по написанию собственного расширения погоды.
Что такое расширение погоды
Расширение погоды в Data Manager для сельского хозяйства — это файл манифеста (JSON), предоставляющий полные сведения об API и шаблон для каждого ответа API (выходные данные). Таким образом, файл расширения по сути является структурой шаблона API, определенной Диспетчером данных для сельского хозяйства, чтобы понять характеристики входных (запросов) и выходных данных (ответов) API.
Структура расширения погоды
На высоком уровне файл расширения — это JSON, состоящий из двух вещей:
- Метаданные поставщика (объект JSON)
- Сведения о API (массив JSON)
Метаданные поставщика
Это объект JSON, предоставляющий подробные сведения о приведенных ниже полях, которые необходимы для уникальной идентификации расширения и его сведений о версиях. Сведения, указанные в этом разделе расширения, отображаются внешним клиентам в Data Manager для сельскохозяйственной платформы. Поэтому extensionId
и ( extensionName
для легкой идентификации) и description
(для ценности) должны быть ориентированы на клиентов.
Пример метаданных поставщика
"provider": {
"extensionId": "abc.weather",
"extensionName": "ABC weather",
"description": "Get Weather data from ABC weather into Azure Data Manager for Agriculture platform using this extension",
"dataCategory": "Weather",
"farmBeatsSchemaVersion": "1.0",
"extensionVersion": "1.0",
"supportUrl": "www.abc.com/support",
"supportEmail": "support@abc.com"
}
Сведения о метаданных поставщика
Имя. | Тип | Описание |
---|---|---|
extensionId | строка | Идентификатор, предоставленный в виде имени организации (Contoso) и службы (weather) Ex: org.service . extensionId — это уникальный идентификатор расширения и тот, который пользователи используют на платформе Data Manager для сельского хозяйства для взаимодействия с API расширения. |
extensionName | строка | Имя расширения, используемого в диспетчере данных для расширения для сельского хозяйства Marketplace. |
описание | строка | Описание возможностей и служб, предлагаемых расширением. |
dataCategory | строка | Для расширений погоды используйте weather . |
farmBeatsSchemaVersion | строка | Версия файла манифеста на стороне Диспетчера данных для сельского хозяйства. Все обновления существующего файла манифеста приводят к обновлению новой версии в этом поле. |
extensionVersion | строка | Версия файла расширения. Начиная с 1.0 . Обновления к файлу расширения увеличивает этот номер версии в соответствии с соглашением о крупных и незначительных обновлениях. |
supportUrl | строка | Ссылка на веб-сайт для создания запросов в службу поддержки и часто задаваемых вопросов |
supportEmail | строка | Электронная почта для отправки запросов в службу поддержки. |
Сведения о API
Массив JSON сведений API (apiInfos
) можно разбить на следующие структурные элементы.
- Метаданные API
- Параметры проверки подлинности
- Входные параметры API
- Извлеченные входные параметры API
- Функциональные параметры
- Система единиц
- Параметры платформы и пользовательских параметров
- Пользовательский шаблон платформы и платформы
Метаданные API
В этом разделе содержатся основные сведения об API, используемом диспетчером данных для сельского хозяйства, для определения apiName
(вызываемого пользователями явно) и перенаправления запроса API справа endpoint
на основе соответствующего requestType
.
Пример метаданных API
"apiInfos": [
{
"apiName": "dailyforecast",
"description": "The Daily Forecast API",
"endpoint": "https://ag.us.clearapis.com/v1.1/forecast/daily",
"requestType": "GET",
"isLoadAPI": "false",
"typeOfData": "forecast",
"granularity": "daily",
"defaultUnitSystem": "us"
}
]
Сведения о метаданных API
Имя. | Тип | Описание |
---|---|---|
apiInfos | array | Массив объектов JSON, где каждый API является объектом в apiInfos массиве. |
apiName | строка | Имя API, поддерживаемого расширением, — это точное имя, с помощью которого пользователи будут вызывать API расширения. Следуйте тому же соглашению об именовании, что и упоминание в документации по API. |
описание | строка | Описание API |
конечная точка | строка | Конечная точка API для диспетчера данных для сельского хозяйства для вызова apiName . |
requestType | строка | GET или POST PUT тип запроса, поддерживаемый параметром apiName . |
isLoadAPI | boolean | apiName Если это сквозной API, например текущие данные о погоде, сделайте этот ключ следующим false образом. Для всех ИНТЕРФЕЙСов API загрузки (исторические и прогнозные) сохраните это поле как true . isLoadAPI Если ключ имеет значениеfalse , ответ API будет отправляться пользователю напрямую и не будет храниться в службе хранилища Data Manager для сельского хозяйства. |
typeOfData | строка | В настоящее время поддерживаются Historical значения и Forecast . |
Степень детализации | строка | В настоящее время поддерживаются Daily значения и Hourly . |
defaultUnitSystem | строка | Укажите имя системы единиц по умолчанию, поддерживаемой параметром apiName . |
Параметры проверки подлинности
Этот раздел принимает параметры проверки подлинности, связанные с проверкой подлинности, как поддерживается apiName
. Так как Диспетчер данных для сельского хозяйства поддерживает два типа ключей, связанных с проверкой подлинности (x-ms-farmBeats-data-provider-id
& x-ms-farmBeats-data-provider-key
) в разделе заголовка API, файл расширения должен явно указать имя ключа соответствующих ключей проверки подлинности в соответствии с apiName
требованиями.
Как диспетчер данных для сельского хозяйства собирает сведения о проверке подлинности с помощью заголовка API (в API создания задания погоды). Сопоставление параметров проверки подлинности выполняется, чтобы диспетчер данных для сельского хозяйства смог передать ключ соответствующим образом в расширение по мере необходимости.
Примеры параметров проверки подлинности
"apiInfos": [
"authInputParameters": [
{
"farmBeatsAuthMapping": "x-ms-farmBeats-data-provider-id",
"name": "app_id",
"isRequired": "true",
"providerDataType": "string",
"description": "Provide the APP ID, username etc. that your API supports",
"location": "apiQuery"
},
{
"farmBeatsAuthMapping": "x-ms-farmBeats-data-provider-key",
"name": "app_key",
"isRequired": "true",
"providerDataType": "string",
"description": "Provide the API Key or password etc. that your API supports",
"location": "apiQuery"
}
]
]
Сведения о параметрах проверки подлинности
Имя. | Тип | Описание |
---|---|---|
authInputParameters | array | Массив JSON параметров проверки подлинности, где каждый объект обозначает поддерживаемый тип проверки подлинности. Используйте ключ на основе типа проверки подлинности, поддерживаемого расширением. |
farmBeatsAuthMapping | строка | В настоящее время поддерживаются два типа связанных ключей проверки подлинности. Для проверки подлинности на основе ключа API используйте только x-ms-farmBeats-data-provider-key объект, а для проверки подлинности на основе ключа ПРИЛОЖЕНИЯ и ключа ПРИЛОЖЕНИЯ используются оба x-ms-farmBeats-data-provider-id x-ms-farmBeats-data-provider-key объекта. |
name | строка | Имя ключа проверки подлинности, поддерживаемого параметром apiName . |
isRequired | boolean | Является ли это имя обязательным параметром для apiName? Укажите истинные или ложные значения. |
providerDataType | строка | Укажите тип name данных параметра. |
описание | строка | Диспетчер данных для сельского хозяйства описание того, что означает каждое farmBeatsAuthMapping из этих средств в каждом объекте. |
расположение | строка | Где в API следует name отправить параметр. В настоящее время поддерживаются apiQuery значения и apiHeader . |
Входные параметры API
В этом разделе приведены сведения о сигнатуре API (входных параметрах) для успешного apiName
вызова в .
Пример входных параметров API
"apiInfos": [
"apiInputParameters": [
{
"name": "start",
"isRequired": "true",
"providerDataType": "double",
"description": "Start of time range. Valid start values range from zero to nine. Day zero represents the current day.",
"location": "apiQuery"
},
{
"name": "end",
"isRequired": "true",
"providerDataType": "double",
"description": "End of time range. Valid end values range from zero to nine.",
"location": "apiQuery"
},
{
"name": "location",
"isRequired": "true",
"providerDataType": "string",
"description": "User-provided latitude and longitude coordinates. Formatted as location=[(<lat_1>,<lon_1>)].",
"location": "apiQuery"
},
{
"name": "unitcode",
"isRequired": "false",
"providerDataType": "string",
"description": "Unit conversion set to be used. Default is us-std. Valid values are us-std, si-std.",
"location": "apiQuery"
},
]
]
Сведения о входных параметрах API
Имя. | Тип | Описание |
---|---|---|
apiInputParameters | array | Массив JSON входных параметров API, где каждый объект обозначает входной параметр, поддерживаемый параметром apiName . |
name | строка | Имя входного параметра, поддерживаемого параметром apiName . |
isRequired | boolean | Является ли это имя обязательным параметром для apiName? Укажите истинные или ложные значения. |
providerDataType | строка | Укажите тип name данных параметра. |
описание | строка | Укажите описание того, какой name параметр означает. |
расположение | строка | Где в API следует name отправить параметр. В настоящее время поддерживаются apiQuery значения и apiHeader . |
Извлеченные входные параметры API
Этот раздел предназначен для диспетчера данных для извлечения входных параметров, переданных в запросе API для вычислений и хранения. В этом примере Диспетчер данных для сельского хозяйства извлекает сведения о расположении (широте и долготе) из запроса ввода API и сохраняет их в составе каждого выходных данных погоды в Диспетчере данных для сельского хозяйства.
Поэтому расширение должно предоставить шаблон HandleBars по извлечению сведений о расположении. В приведенном ниже примере предполагается, что API расширения собирает сведения о расположении как для"latitude"
, так "lat"
и "lon"
для"longitude"
.
Пример извлеченных входных параметров API
"extractedApiInputParameters": [
{
"name": "location",
"template": "{ \"latitude\": \"{{lat}}\", \"longitude\": \"{{lon}}\" } "
}
]
Извлеченные сведения о входных параметрах API
Имя. | Тип | Описание |
---|---|---|
extractedApiInputParameters | array | Массив JSON функций извлечения, где каждый объект обозначает, какие сведения необходимо извлечь. В настоящее время является одним из таких location извлечений. |
name | строка | Имя извлечения в настоящее время поддерживается location . |
JSON | строка | Шаблон HandleBars, в который показано, как данные широты и долготы собираются в входных параметрах API. |
Функциональные параметры
Этот раздел предназначен для функций и возможностей, созданных диспетчером данных для сельского хозяйства. Для расширения погоды вычисление центроидов является одной из таких функций.
Если пользователи не предоставляют координаты широты и долготы, диспетчер данных для сельского хозяйства использует основную геометрию поля (идентификатор, переданный пользователем) для вычисления центроида. Вычисляемые центроидные координаты передаются в виде широты и долготы расширению (поставщику данных). Таким образом, для диспетчера данных для сельского хозяйства можно понять, что использование расположения координирует раздел функциональных параметров используется.
Чтобы диспетчер данных для сельского хозяйства понимал использование широты и долготы в apiName
входных параметрах, расширение должно предоставить name
ключ, используемый для сбора сведений о расположении, за которым следует шаблон дескриптора, чтобы означать, как должны передаваться значения широты и долготы.
Пример функциональных параметров
"apiInfos": [
"functionalParameters": [
{
"name": "CentroidCalculation",
"description": "Provide names of the parameters used to collect latitude and longitude information",
"functionalParameterEntities": [
{
"name": "lat",
"template": "{ \"lat\": \"{{latitude}}\" } "
},
{
"name": "lon",
"template": "{ \"lon\": \"{{longitude}}\" } "
}
]
}
],
]
Сведения о функциональных параметрах
Имя. | Тип | Описание |
---|---|---|
функциональныеparameters | array | Массив json функциональных возможностей, где каждый объект обозначает функциональность, поддерживаемую диспетчером данных для сельского хозяйства. CentroidCalculation В настоящее время это одна из таких функций. |
name | строка | Имя функции, в настоящее время поддерживаемое CentroidCalculation значение. |
описание | строка | Описание функциональных возможностей диспетчера данных для сельского хозяйства. |
functionalParameterEntities | array | Массив JSON объектов, где каждый объект зависит от широты и долготы. |
Система единиц
Этот раздел используется диспетчером данных для сельского хозяйства для понимания различных типов систем единиц, поддерживаемых расширением. Поэтому расширение должно указать key
имя, используемое для сбора сведений об единицах в входных данных API, а затем различных системных имен единиц (ex: us-std), как поддерживается apiName
.
Пример системы единиц
"unitSystems":
{
"key": "unitcode",
"values": [
"us-std",
"si-std",
"us-std-precise",
"si-std-precise"
]
}
Сведения о системе единиц
Имя. | Тип | Описание |
---|---|---|
unitSystems | объект | Объект JSON для сбора сведений о системе единиц. |
ключ | строка | Имя параметра, используемого для сбора сведений об единицах во входных данных API. |
Значения | строка | Список системных имен единиц, поддерживаемых расширением. |
Платформы и пользовательские параметры
В каждом ответе API погоды меры погоды, которые отправляются как часть выходных данных (например, температура, расписная точка и т. д.) называются параметрами.
Поэтому, когда речь идет о параметрах, диспетчер данных для сельского хозяйства внутренне поддерживает следующий набор параметров и обрабатывает их как Platform parameters
.
- CloudCover
- dateTime
- dewPoint
- growingDegreeDay
- Осадков
- давление
- относительная шумидность
- soilMoisture
- soilTemperature
- Температура
- видимость
- wetBulbTemperature
- windChill
- windDirection
- windGust
- windSpeed
Поэтому любое расширение, отправляющее параметры погоды, которые не попадают под параметры платформы, отправляет их как часть Custom parameters
. Основное различие между параметрами платформы и клиента заключается в том, что пользователи, использующие API погоды Data Manager для сельского хозяйства, могут запрашивать и фильтровать параметры платформы (например, температура > 30), а не пользовательские параметры. Однако пользовательские параметры отправляются в рамках выходных данных погодного запроса.
В этом разделе расширение предоставляет сведения о единицах для каждого из параметров для каждой поддерживаемой системы единиц. Использование этого диспетчера данных для сельского хозяйства знает, что такое базовая единица измерения для каждого параметра погоды на основе информации, предоставленной в этом разделе расширения.
Примечание.
- Для определенного параметра, если единицы не применимы, то не упоминание единицы для тех, кто один (например, weatherDescriptor)
- Для определенного параметра, если единицы одинаковы для всех систем единиц, то упоминание одинаково в системе всех единиц. (Ex: cloudCover)
Пример платформы и пользовательских параметров
"apiInfos": [
"platformParameters": [
{
"farmBeatsName": "cloudCover",
"farmBeatsDataType": "double",
"description": "The average percentage of sky covered by clouds.",
"measurementUnits": [
{
"unitSystem": "us-std",
"unit": "%"
},
{
"unitSystem": "us-std-precise",
"unit": "%"
},
{
"unitSystem": "si-std",
"unit": "%"
},
{
"unitSystem": "si-std-precise",
"unit": "%"
}
]
},
{
"farmBeatsName": "dewPoint",
"farmBeatsDataType": "double",
"description": "The air temperature at which the air will become saturated, and dew moisture will condense into fog (or dew).",
"measurementUnits": [
{
"unitSystem": "us-std",
"unit": "F"
},
{
"unitSystem": "us-std-precise",
"unit": "F"
},
{
"unitSystem": "si-std",
"unit": "C"
},
{
"unitSystem": "si-std-precise",
"unit": "C"
}
]
},
"customParameters": [
{
"providerName": "weatherDescriptor",
"providerDataType": "string",
"description": "General weather descriptor data"
},
{
"providerName": "airTempMax",
"providerDataType": "double",
"description": "Maximum daily air temperature at two meters above ground level.",
"measurementUnits": [
{
"unitSystem": "us-std",
"unit": "F"
},
{
"unitSystem": "us-std-precise",
"unit": "F"
},
{
"unitSystem": "si-std",
"unit": "C"
},
{
"unitSystem": "si-std-precise",
"unit": "C"
}
]
},
]
Сведения о параметрах платформы
Имя. | Тип | Описание |
---|---|---|
platformParameters | array | Массив JSON параметров платформы, где каждый объект является одним параметром платформы. |
farmBeatsName | строка | Имя параметра, предоставленного диспетчером данных для сельского хозяйства. |
farmBeatsDataType | строка | Тип данных параметра, предоставляемый Диспетчером данных для сельского хозяйства. |
описание | строка | Описание параметра, предоставленного Диспетчером данных для сельского хозяйства. |
measurementUnits | строка | Массив единиц JSON для каждой системы values единиц, поддерживаемой расширением. |
unitSystem | строка | value Система единиц, поддерживаемая расширением. |
unit | строка | Единица измерения для конкретного параметра погоды Ex: F для dewPoint. |
Сведения о пользовательских параметрах
Имя. | Тип | Описание |
---|---|---|
customParameters | объект | Массив JSON пользовательских параметров, где каждый объект является одним пользовательским параметром. |
Providername | строка | Имя параметра, предоставленного расширением. |
providerDataType | строка | Тип данных параметра, предоставленного расширением. |
описание | строка | Описание параметра, предоставленного расширением. |
measurementUnits | строка | Массив единиц JSON для каждой системы values единиц, поддерживаемой расширением. |
unitSystem | строка | value Система единиц, поддерживаемая расширением. |
unit | строка | Единица измерения для конкретного параметра погоды Ex: F для airTempMax. |
Платформа и пользовательский шаблон
Шаблон — это сведения о сопоставлении, предоставляемые расширением для преобразования выходных данных API расширения (ответ JSON) в формат, который ожидает диспетчер данных для сельского хозяйства. Использование этих разных форматов выходных данных API теперь может быть равномерно сопоставлено или преобразовано в один формат.
Решение шаблона является одним из наиболее эффективных способов анализа выходных данных JSON, предоставляемых расширением. В случае расширения погоды Диспетчер данных для сельского хозяйства ожидает, что расширение будет записано с помощью шаблона HandleBars. HandleBars — это язык открытый код шаблонов с простым использованием выражений.
Примечание.
Настоятельно рекомендуется попробовать шаблон HandleBars с приведенными примерами и узнать, как использовать вспомогательные функции для создания собственной логики синтаксического анализа, если она еще не предоставлена диспетчером данных для сельского хозяйства.
На высоком уровне это способ работы шаблонов, принимая ответ API в качестве входных данных и создавая выходные данные в формате, ожидаемом диспетчером данных для сельского хозяйства.
Как показано на приведенном выше рисунке, проверьте шаблон в соответствующем ответе API и используйте проверенный шаблон в расширении. Ниже приведен пример ответа API и соответствующей платформы и пользовательского шаблона.
Пример ответа API
{
"47,-97": {
"2016-12-15": {
"overall": {
"air_temp_avg": {
"unit": "F",
"value": -3.0
},
"air_temp_max": {
"unit": "F",
"value": 5.0
},
"air_temp_min": {
"unit": "F",
"value": -11.0
},
"cloud_cover_avg": {
"unit": "%",
"value": 26.4
},
"descriptors": {
"cloud_cover_descriptor": {
"code": 21107,
"icon": "https://.../cover_partlycloudyday.png",
"text": "Increasing Clouds"
},
"precipitation_descriptor": {
"code": 61113,
"icon": "https://.../precip_flurries.png",
"text": "Slight Chance of Flurries"
},
"weather_descriptor": {
"code": 61113,
"icon": "https://.../precip_flurries.png",
"text": "Slight Chance of Flurries"
},
"wind_direction_descriptor": {
"code": 51600,
"icon": "https://.../direction_sw.png",
"text": "Southwest"
},
"wind_trend_descriptor": {
"code": 10500,
"icon": "https://.../error_none.png",
"text": "None"
}
},
"dew_point_avg": {
"unit": "F",
"value": -11.0
},
"dew_point_max": {
"unit": "F",
"value": -4.0
},
"dew_point_min": {
"unit": "F",
"value": -19.0
},
"ice_acc_period": {
"unit": "in",
"value": 0.0
},
"liquid_acc_period": {
"unit": "in",
"value": 0.0
},
"long_wave_radiation_avg": {
"unit": "W/m^2",
"value": 170.0
},
"pet_period": {
"unit": "in",
"value": 0.009
},
"precip_acc_period": {
"unit": "in",
"value": 0.001
},
"precip_prob": {
"unit": "%",
"value": 10.0
},
"relative_humidity_avg": {
"unit": "%",
"value": 68.0
},
"relative_humidity_max": {
"unit": "%",
"value": 77.0
},
"relative_humidity_min": {
"unit": "%",
"value": 61.0
},
"short_wave_radiation_avg": {
"unit": "W/m^2",
"value": 70.0
},
"snow_acc_period": {
"unit": "in",
"value": 0.02
},
"sunshine_duration": {
"unit": "hours",
"value": 6
},
"wind_gust_max": {
"unit": "n/a",
"value": "n/a"
},
"wind_speed_2m_avg": {
"unit": "mph",
"value": 6.0
},
"wind_speed_2m_max": {
"unit": "mph",
"value": 8.0
},
"wind_speed_2m_min": {
"unit": "mph",
"value": 2.0
},
"wind_speed_avg": {
"unit": "mph",
"value": 8.0
},
"wind_speed_max": {
"unit": "mph",
"value": 11.0
},
"wind_speed_min": {
"unit": "mph",
"value": 3.0
}
}
}
}
}
Пример шаблона платформы и пользовательского шаблона для приведенного выше ответа API
{
"apiInfos": {
"platformTemplate": "{ {{#each .}}\"value\": [{{#each .}} {\"cloudCover\": \"{{overall.cloud_cover_avg.value}}\" ,\"dewPoint\": \"{{overall.dew_point_avg.value}}\" ,\"precipitation\": \"{{overall.precip_acc_period.value}}\" ,\"relativeHumidity\": \"{{overall.relative_humidity_avg.value}}\" ,\"dateTime\": \"{{convertDateInYYYYMMDDToDateTime @key}}\", \"temperature\": \"{{overall.air_temp_avg.value}}\" ,\"windSpeed\": \"{{overall.wind_speed_avg.value}}\" , },{{/each}}]{{/each}} }",
"customTemplate": "{ {{#each .}}\"value\": [{{#each .}} {\"air_temp_max\": \"{{overall.air_temp_max.value}}\",\"air_temp_min\": \"{{overall.air_temp_min.value}}\",\"cloudCoverDescriptor\": \"{{overall.descriptors.cloud_cover_descriptor.text}}\",\"precipitationDescriptor\": \"{{overall.descriptors.precipitation_descriptor.text}}\",\"weatherDescriptor\": \"{{overall.descriptors.weather_descriptor.text}}\",\"windDirectionDescriptor\": \"{{overall.descriptors.wind_direction_descriptor.text}}\",\"windTrendDescriptor\": \"{{overall.descriptors.wind_trend_descriptor.text}}\",\"dewPointMax\": \"{{overall.dew_point_max.value}}\",\"dewPointMin\": \"{{overall.dew_point_min.value}}\",\"iceAccPeriod\": \"{{overall.ice_acc_period.value}}\",\"liquidAccPeriod\": \"{{overall.liquid_acc_period.value}}\",\"longWaveRadiationAvg\": \"{{overall.long_wave_radiation_avg.value}}\",\"petPeriod\": \"{{overall.pet_period.value}}\",\"precipProb\": \"{{overall.precip_prob.value}}\",\"relativeHumidityMax\": \"{{overall.relative_humidity_max.value}}\",\"relativeHumidityMin\": \"{{overall.relative_humidity_min.value}}\",\"shortWaveRadiationAvg\": \"{{overall.short_wave_radiation_avg.value}}\",\"snowAccPeriod\": \"{{overall.snow_acc_period.value}}\",\"sunshineDuration\": \"{{overall.sunshine_duration.value}}\",\"windSpeed2mAvg\": \"{{overall.wind_speed_2m_avg.value}}\",\"windSpeed2mMax\": \"{{overall.wind_speed_2m_max.value}}\",\"windSpeed2mMin\": \"{{overall.wind_speed_2m_min.value}}\",\"windSpeedMax\": \"{{overall.wind_speed_max.value}}\",\"windSpeedMin\": \"{{overall.wind_speed_min.value}}\",},{{/each}}]{{/each}} }"
}
}
Примечание.
Шаблон, созданный из HandleBars, строкируется путем добавления \"<text>\"
для его совместимости с форматом JSON.
Вспомогательные функции
Вспомогательные функции используются шаблонами для выполнения конкретного преобразования данных, которые не поддерживаются в собственном коде. Ниже приведены вспомогательные функции, поддерживаемые диспетчером данных для сельского хозяйства.
Пример вспомогательных функций
Handlebars.registerHelper('splitAndTake', function(title, char, index) {
var t = title.split(char);
return t[index];
});
Handlebars.registerHelper('converttime', function(timestamp) {
return new Date(timestamp);
});
Handlebars.registerHelper('convertunixtime', function(unix_timestamp) {
return new Date(unix_timestamp * 1000);
});
Какое действие выполняют эти вспомогательные функции?
- SplitAndTake(object valueObject, разделитель строк, int index) — эта функция используется для разделения строки (например, "47,-97") на основе разделителя (ex: ",") и принимает элемент по заданному индексу (Ex: index=0 дает "47")
- ConvertDateInFormatToDateTime(object dateObject, строковый формат) — эта функция используется для анализа даты в заданном формате (например, 2016-12-15) в строку DateTime.
- ConvertUnixTimeToDateTime(object unixTimeStamp) — эта функция используется для преобразования метки времени unix (ex: 1392267600) в строку datetime.
- GetObjectFromListWithKeyValuePair(Array listOfObjects, строковый ключ, строковое значение) — учитывая список объектов, которые он извлекает объект на основе пары "ключ (
type
) "значение" (RAIN
). В приведенном ниже примере используется выбор осадков"type": "RAIN"
этой функции.
{
"precipitation": [
{
"type": "SNOW",
"amount": 0
},
{
"type": "RAIN",
"amount": 0.01
}
]
}
- GetValueFromObject(string jsonString, строковый ключ) — учитывая объект JSON в виде строки, он получает значение на основе ключа.
Примечание.
Если расширение, написанное вами, требует дополнительных вспомогательных функций для анализа ответа API, обратитесь к нам, создав запрос в службу поддержки.