Timeline: update

Memerlukan otorisasi

Memperbarui item linimasa yang diterapkan. Lihat contoh.

Metode ini mendukung URI /upload dan menerima media yang diupload dengan karakteristik berikut:

  • Ukuran file maksimum: 10 MB
  • Jenis MIME Media yang diterima: audio/* , image/* , video/*

Permintaan

Permintaan HTTP

Metode ini menyediakan fungsi upload media melalui dua URI terpisah. Untuk mengetahui detail selengkapnya, lihat dokumen tentang upload media.

  • URI upload, untuk permintaan upload media:
    PUT https://www.googleapis.com/upload/mirror/v1/timeline/id
  • URI Metadata, untuk permintaan khusus metadata:
    PUT https://www.googleapis.com/mirror/v1/timeline/id

Parameter

Nama parameter Nilai Deskripsi
Parameter jalur
id string ID item linimasa.
Parameter kueri yang diperlukan
uploadType string Jenis permintaan upload ke URI /upload. Nilai yang dapat diterima:
  • media - Upload sederhana. Upload media saja, tanpa metadata apa pun.
  • multipart - Upload multibagian. Mengupload media beserta metadatanya, dalam satu permintaan.
  • resumable - Upload yang dapat dilanjutkan. Upload file dengan cara yang dapat dilanjutkan, menggunakan serangkaian setidaknya dua permintaan yang permintaan pertama menyertakan metadata.

Otorisasi

Permintaan ini memerlukan otorisasi dengan setidaknya salah satu cakupan berikut (baca lebih lanjut tentang autentikasi dan otorisasi).

Cakupan
https://www.googleapis.com/auth/glass.timeline
https://www.googleapis.com/auth/glass.location

Isi permintaan

Dalam isi permintaan, berikan resource Linimasa dengan properti berikut sebagai metadata. Untuk mengetahui informasi selengkapnya, lihat dokumen tentang upload media.

Nama properti Nilai Deskripsi Catatan
Properti Opsional
bundleId string ID paket untuk item ini. Layanan dapat menentukan bundleId untuk mengelompokkan banyak item bersama-sama. Iklan muncul pada satu item tingkat atas di perangkat. dapat ditulis
canonicalUrl string URL kanonis yang mengarah ke versi kanonis/berkualitas tinggi dari data yang direpresentasikan oleh item linimasa. dapat ditulis
creator nested object Pengguna atau grup yang membuat item ini. dapat ditulis
displayTime datetime Waktu yang akan ditampilkan saat item ini dilihat di linimasa, yang diformat sesuai dengan RFC 3339. Linimasa pengguna ini diurutkan secara kronologis dalam waktu tampilan, sehingga hal ini juga akan menentukan tempat item ditampilkan di linimasa. Jika tidak disetel oleh layanan, waktu tampilan akan ditetapkan secara default ke waktu updated. dapat ditulis
html string Konten HTML untuk item ini. Jika text dan html disediakan untuk suatu item, html akan dirender di linimasa.

Elemen HTML yang diizinkan - Anda dapat menggunakan elemen ini di kartu linimasa.

  • Header: h1, h2, h3, h4, h5, h6
  • Gambar: img
  • Daftar: li, ol, ul
  • Semantik HTML5: article, aside, details, figure, figcaption, footer, header, nav, section, summary, time
  • Struktural: blockquote, br, div, hr, p, span
  • Gaya: b, big, center, em, i, u, s, small, strike, strong, style, sub, sup
  • Tabel: table, tbody, td, tfoot, th, thead, tr

Elemen HTML yang diblokir: Elemen ini dan kontennya dihapus dari payload HTML.

  • Header dokumen: head, title
  • Sematan: audio, embed, object, source, video
  • Bingkai: frame, frameset
  • Pembuatan skrip: applet, script

Elemen lainnya: Elemen apa pun yang tidak tercantum akan dihapus, tetapi kontennya dipertahankan.

dapat ditulis
isBundleCover boolean Apakah item ini merupakan sampul paket.

Jika item ditandai sebagai sampul paket, item tersebut akan menjadi titik entri ke paket item yang memiliki bundleId yang sama dengan item tersebut. Item tersebut hanya akan ditampilkan di linimasa utama, bukan di dalam paket yang dibuka.

Di linimasa utama, item yang ditampilkan adalah:
  • Item dengan isBundleCover ditetapkan ke true
  • Item yang tidak memiliki bundleId
Dalam sub-linimasa paket, item yang ditampilkan adalah:
  • Item yang memiliki bundleId yang dimaksud DAN isBundleCover ditetapkan ke false
dapat ditulis
location nested object Lokasi geografis yang terkait dengan item ini. dapat ditulis
notification nested object Mengontrol bagaimana notifikasi untuk item ini ditampilkan di perangkat. Jika informasi ini tidak ada, notifikasi tidak akan dibuat. dapat ditulis
notification.deliveryTime datetime Waktu saat notifikasi harus dikirimkan. dapat ditulis
notification.level string Menjelaskan seberapa penting notifikasi. Nilai yang diizinkan adalah:
  • DEFAULT - Notifikasi tingkat kepentingan default. Lonceng akan diputar untuk memberi tahu pengguna.
dapat ditulis
recipients[] list Daftar pengguna atau grup yang diajak berbagi item ini. dapat ditulis
sourceItemId string String buram yang dapat Anda gunakan untuk memetakan item linimasa ke data di layanan Anda sendiri. dapat ditulis
speakableText string Versi lisan dari konten item ini. Bersama dengan item menu READ_ALOUD, gunakan kolom ini untuk memberikan teks yang akan lebih jelas saat dibaca dengan keras, atau untuk memberikan informasi yang diperluas tentang apa yang ditampilkan secara visual di Glass.

Gelas juga harus menentukan kolom speechableType, yang akan diucapkan sebelum teks ini jika konteks tambahan berguna, misalnya saat pengguna meminta item dibacakan dengan lantang setelah notifikasi.
dapat ditulis
speakableType string Deskripsi yang dapat diucapkan dari jenis item ini. Hal ini akan diumumkan kepada pengguna sebelum membaca konten item jika konteks tambahan dapat digunakan, misalnya saat pengguna meminta item tersebut dibacakan secara lisan setelah notifikasi.

Frasa ini harus berupa frasa kata benda yang singkat dan sederhana seperti "Email", "Pesan teks", atau "Pembaruan Berita Daily Planet".

Glassware dianjurkan untuk mengisi kolom ini untuk setiap item linimasa, meskipun item tersebut tidak berisi speechableText atau teks sehingga pengguna dapat mempelajari jenis item tanpa melihat layar.
dapat ditulis
text string Konten teks item ini. dapat ditulis
title string Judul item ini. dapat ditulis

Respons

Jika berhasil, metode ini akan menampilkan resource Linimasa dalam isi respons.

Contoh

Catatan: Contoh kode yang tersedia untuk metode ini tidak merepresentasikan semua bahasa pemrograman yang didukung (lihat halaman library klien untuk mengetahui daftar bahasa yang didukung).

Java

Menggunakan library klien 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

Menggunakan library klien.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

Menggunakan library klien 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

Menggunakan library klien 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

Menggunakan library klien 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

Menggunakan library klien 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 Mentah

Tidak menggunakan library klien.

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" }