Timeline: update

Требуется авторизация

Обновляет элемент временной шкалы на месте. См. пример .

Этот метод поддерживает URI /upload и принимает загруженные носители со следующими характеристиками:

  • Максимальный размер файла: 10 МБ.
  • Допустимые типы MIME мультимедиа: audio/* , image/* , video/*

Запрос

HTTP-запрос

Этот метод обеспечивает функциональность загрузки мультимедиа через два отдельных URI. Дополнительные сведения см. в документе о загрузке медиафайлов .

  • URI загрузки для запросов на загрузку мультимедиа:
    PUT https://www.googleapis.com/upload/mirror/v1/timeline/id
  • URI метаданных, для запросов только метаданных:
    PUT https://www.googleapis.com/mirror/v1/timeline/id

Параметры

Имя параметра Ценить Описание
Параметры пути
id string Идентификатор элемента временной шкалы.
Обязательные параметры запроса
uploadType string Тип запроса на загрузку в URI /upload . Допустимые значения:

Авторизация

Этот запрос требует авторизации по крайней мере в одной из следующих областей ( подробнее об аутентификации и авторизации ).

Объем
https://www.googleapis.com/auth/glass.timeline
https://www.googleapis.com/auth/glass.location

Тело запроса

В тексте запроса укажите ресурс временной шкалы со следующими свойствами в качестве метаданных. Дополнительные сведения см. в документе о загрузке мультимедиа .

Имя свойства Ценить Описание Примечания
Дополнительные свойства
bundleId string Идентификатор пакета для этого элемента. Службы могут указывать bundleId для группировки множества элементов. Они отображаются под одним элементом верхнего уровня на устройстве. доступный для записи
canonicalUrl string Канонический URL-адрес, указывающий на каноническую/высококачественную версию данных, представленных элементом временной шкалы. доступный для записи
creator nested object Пользователь или группа, создавшие этот элемент. доступный для записи
displayTime datetime Время, которое должно отображаться при просмотре этого элемента на временной шкале, отформатировано в соответствии с RFC 3339. Временная шкала этого пользователя сортируется в хронологическом порядке по времени отображения, поэтому это также определяет, где элемент отображается на временной шкале. Если служба не установила, время отображения по умолчанию соответствует updated времени. доступный для записи
html string HTML-контент для этого элемента. Если для элемента предоставлены и text , и html , html будет отображаться на временной шкале.

Разрешенные элементы HTML . Вы можете использовать эти элементы в своих карточках временной шкалы.

  • Заголовки: h1, h2, h3, h4, h5, h6
  • Изображения: img
  • Списки: li, ol, ul
  • Семантика HTML5: article, aside, details, figure, figcaption, footer, header, nav, section, summary, time
  • Структурные: blockquote, br, div, hr, p, span
  • Стиль: b, big, center, em, i, u, s, small, strike, strong, style, sub, sup
  • Столы: table, tbody, td, tfoot, th, thead, tr

Заблокированные элементы HTML : эти элементы и их содержимое удаляются из полезной нагрузки HTML.

  • Заголовки документов: head, title
  • Встраивание: audio, embed, object, source, video
  • Рамки: frame, frameset
  • Скриптинг: applet, script

Другие элементы . Все элементы, не перечисленные в списке, удаляются, но их содержимое сохраняется.

доступный для записи
isBundleCover boolean Является ли этот товар чехлом для комплекта.

Если элемент помечен как обложка пакета, он будет точкой входа в набор элементов, которые имеют тот же bundleId , что и этот элемент. Он будет отображаться только на основной временной шкале, а не в открытом пакете .

На основной временной шкале отображаются следующие элементы:
  • Элементы, для которых isBundleCover имеет значение true
  • Товары, у которых нет bundleId
На временной шкале пакета отображаются следующие элементы:
  • Элементы, у которых для рассматриваемого bundleId И isBundleCover задано значение false
доступный для записи
location nested object Географическое положение, связанное с этим элементом. доступный для записи
notification nested object Управляет отображением уведомлений об этом элементе на устройстве. Если это отсутствует, уведомление не будет создано. доступный для записи
notification. deliveryTime datetime Время, в которое должно быть доставлено уведомление. доступный для записи
notification. level string Описывает, насколько важно уведомление. Допустимые значения:
  • DEFAULT — уведомления о важности по умолчанию. Для оповещения пользователей будет воспроизводиться звуковой сигнал.
доступный для записи
recipients[] list Список пользователей или групп, которым был предоставлен доступ к этому элементу. доступный для записи
sourceItemId string Непрозрачная строка, которую вы можете использовать для сопоставления элемента временной шкалы с данными в вашей собственной службе. доступный для записи
speakableText string Озвученная версия содержимого этого элемента. Наряду с пунктом меню READ_ALOUD используйте это поле, чтобы предоставить текст, который будет более четким при чтении вслух, или предоставить расширенную информацию о том, что отображается визуально на Glass.

В Glassware также следует указать поле speakableType, которое будет произноситься перед этим текстом в тех случаях, когда дополнительный контекст полезен, например, когда пользователь требует, чтобы элемент был прочитан вслух после уведомления.
доступный для записи
speakableType string Произносимое описание типа этого предмета. Это будет объявлено пользователю перед чтением содержимого элемента в случаях, когда дополнительный контекст полезен, например, когда пользователь запрашивает чтение элемента вслух после уведомления.

Это должна быть короткая простая именная фраза, такая как «Электронная почта», «Текстовое сообщение» или «Ежедневное обновление новостей планеты».

Glassware рекомендуется заполнять это поле для каждого элемента временной шкалы, даже если элемент не содержит speakableText или текста, чтобы пользователь мог узнать тип элемента, не глядя на экран.
доступный для записи
text string Текстовое содержимое этого элемента. доступный для записи
title string Название этого элемента. доступный для записи

Ответ

В случае успеха этот метод возвращает ресурс временной шкалы в тексте ответа.

Примеры

Примечание. Примеры кода, доступные для этого метода, не представляют все поддерживаемые языки программирования (список поддерживаемых языков см. на странице клиентских библиотек ).

Джава

Использует клиентскую библиотеку Java .

import com.google.api.services.mirror.Mirror;
import com.google.api.services.mirror.model.NotificationConfig;
import com.google.api.services.mirror.model.TimelineItem;

import java.io.IOException;

public class MyClass {
  // ...

  /**
   * Update a timeline item in the user's Glass with an optional notification and attachment.
   * 
   * @param service Authorized Mirror service.
   * @param itemId ID of the timeline item to update.
   * @param newText timeline item's text.
   * @param newNotificationLevel Optional notification level, supported values
   *        are {@code null} and "AUDIO_ONLY".
   * @return Updated timeline item on success, {@code null} otherwise.
   */
  public static TimelineItem updateTimelineItem(Mirror service, String itemId, String newText,
      String newNotificationLevel) {
    try {
      // First retrieve the timeline item from the API.
      TimelineItem timelineItem = service.timeline().get(itemId).execute();
      // Update the timeline item's metadata.
      timelineItem.setText(newText);
      if (newNotificationLevel != null && newNotificationLevel.length() > 0) {
        timelineItem.setNotification(new NotificationConfig().setLevel(newNotificationLevel));
      } else {
        timelineItem.setNotification(null);
      }
      return service.timeline().update(itemId, timelineItem).execute();
    } catch (IOException e) {
      System.err.println("An error occurred: " + e);
      return null;
    }
  }

  // ...
}

.СЕТЬ

Использует клиентскую библиотеку .NET .

using System;
using System.IO;

using Google.Apis.Mirror.v1;
using Google.Apis.Mirror.v1.Data;

public class MyClass {
  // ...

  /// <summary>
  /// Update a timeline item in the user's Glass with an optional
  /// notification and attachment.
  /// </summary>
  /// <param name='service'>Authorized Mirror service.</param>
  /// <param name='itemId'>ID of the timeline item to update.</param>
  /// <param name='newText'>Timeline Item's text content.</param>
  /// <param name='newNotificationLevel'>
  /// Optional notification level, supported values are null and
  /// "AUDIO_ONLY".
  /// </param>
  /// <returns>
  /// Updated timeline item on success, null otherwise.
  /// </returns>
  public static TimelineItem UpdateTimelineItem(MirrorService service,
      String itemId, String newText, String newNotificationLevel) {
    try {
      // First retrieve the timeline item from the API.
      TimelineItem timelineItem = service.Timeline.Get(itemId).Fetch();
      // Update the timeline item's metadata.
      timelineItem.Text = newText;
      if (!String.IsNullOrEmpty(newNotificationLevel)) {
        timelineItem.Notification = new NotificationConfig() {
          Level = newNotificationLevel
        };
      } else {
        timelineItem.Notification = null;
      }
      return service.Timeline.Update(timelineItem, itemId).Fetch();
    } catch (Exception e) {
      Console.WriteLine("An error occurred: " + e.Message);
      return null;
    }
  }

  // ...
}

PHP

Использует клиентскую библиотеку PHP .

/**
 * Update a timeline item in the user's Glass with an optional
 * notification and attachment.
 *
 * @param Google_MirrorSservice $service Authorized Mirror service.
 * @param string $itemId ID of the timeline item to update.
 * @param string $newText timeline item's text (can be HTML content).
 * @param string $newNotificationLevel Optional notification level,
 *               supported values are {@code null} and "AUDIO_ONLY".
 * @return Google_TimelineItem Updated timeline item on success,
 *         null otherwise.
 */
function updateTimelineItem($service, $itemId, $newText, $newNotificationLevel) {
  try {
    $timelineItem = $service->timeline->get($itemId);
    $timelineItem->setText($newText);
    if ($notificationlevel != null) {
      $notification = new Google_NotificationConfig();
      $notification->setLevel($newNotificationLevel);
      $timelineItem->setNotification($notification);
    } else {
      $timelineItem->setNotification(null);
    }
    return $service->timeline->update($itemId, $timelineItem);
  } catch (Exception $e) {
    print 'An error occurred: ' . $e->getMessage();
    return null;
  }
}

Питон

Использует клиентскую библиотеку Python .

import io

from apiclient import errors
from apiclient.http import MediaIoBaseUpload
# ...

def update_timeline_item(service, item_id, new_text, 
                         new_notification_level=None):
  """Update a timeline item in the user's Glass.

  Args:
    service: Authorized Mirror service.
    item_id: ID of the timeline item to update.
    new_text: Timeline item's text (can be HTML content).
    new_content_type: Optional attachment's content type (supported content
                      types are 'image/*', 'video/*' and 'audio/*').
    new_attachment: Optional attachment as data string.
    new_notification_level: Optional notification level, supported values are
                            None and 'AUDIO_ONLY'.
  Returns:
    Updated timeline item on success, None otherwise.
  """
  try:
    # First retrieve the timeline item from the API.
    timeline_item = service.timeline().get(id=item_id).execute()
    # Update the timeline item's metadata.
    timeline_item['text'] = new_text
    if new_notification_level:
      timeline_item['notification'] = {'level': new_notification_level}
    elif 'notification' in timeline_item:
      timeline_item.pop('notification')
    return service.timeline().update(id=item_id, body=timeline_item).execute()
  except errors.HttpError, error:
    print 'An error occurred: %s' % error
    return None

Рубин

Использует клиентскую библиотеку Ruby .

##
# Update a timeline item in the user's glass.
#
# @param [Google::APIClient] client
#   Authorized client instance.
# @param [String] item_id
#   ID of the timeline item to update.
# @param [String] new_text
#   Timeline item's new text.
# @param [String] new_notification_level
#   Optional new notification level, supported values are nil and 'AUDIO_ONLY'.
# @return [Google::APIClient::Schema::Mirror::V1::TimelineItem]
#   Updated timeline item instance if successful, nil otherwise.
def update_timeline_item(client, item_id, new_text, new_notification_level)
  mirror = client.discovered_api('mirror', 'v1')
  result = client.execute(
    :api_method => mirror.timeline.get,
    :parameters => { 'id' => item_id })
  if result.success?
    timeline_item = result.data
    timeline_item.text = new_text
    if new_notification_level
      timeline_item.notification = { 'level' => new_notification_level }
    else
      timeline_item.notification = nil
    end
    result = client.execute(
      :api_method => mirror.timeline.update,
      :body_object => timeline_item,
      :parameters => { 'id' => item_id })
    if result.success?
      return result.data
    end
  end
  puts "An error occurred: #{result.data['error']['message']}"
end

Идти

Использует клиентскую библиотеку Go .

import (
	"code.google.com/p/google-api-go-client/mirror/v1"
	"fmt"
)

// UpdateTimelineItem updates a timeline item in the user's timeline with an
// optional notification and attachment.
func UpdateTimelineItem(g *mirror.Service, itemId string, newNotificationLevel string) (
	*mirror.TimelineItem, error) {
	t, err := g.Timeline.Get(itemId).Do()
	if err != nil {
		fmt.Printf("An error occurred: %v\n", err)
		return nil, err
	}
	t.Text = newText
	if newNotificationLevel != "" {
		t.Notification = &mirror.NotificationConfig{Level: newNotificationLevel}
	} else {
		t.Notification = nil
	}
	r, err := g.Timeline.Update(itemId, t).Do()
	if err != nil {
		fmt.Printf("An error occurred: %v\n", err)
		return nil, err
	}
	return r, nil
}

Необработанный HTTP

Не использует клиентскую библиотеку.

PUT /mirror/v1/timeline/timeline item id HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer auth token
Content-Type: application/json
Content-Length: 26

{ "text": "Hello world" }