Timeline: update

נדרשת הרשאה

מעדכן פריט בציר הזמן במקומו. להצגת דוגמה

השיטה הזו תומכת ב-URI של /upload ומקבלת מדיה שהועלתה עם המאפיינים הבאים:

  • גודל קובץ מקסימלי: 10MB
  • סוגי 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. הערכים הקבילים הם:
  • mediaהעלאה פשוטה. יש להעלות את קובצי המדיה בלבד, ללא מטא-נתונים.
  • multipartהעלאה מרובת חלקים. מעלים גם את המדיה וגם את המטא-נתונים שלה בבקשה אחת.
  • resumableהעלאה שניתן להמשיך. מעלים את הקובץ באופן שניתן להמשיך, תוך שימוש בסדרה של שתי בקשות לפחות שבהן הבקשה הראשונה כוללת את המטא-נתונים.

אישור

הבקשה הזו מחייבת הרשאה עם לפחות אחד מההיקפים הבאים (מידע נוסף על אימות והרשאה).

היקף
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 חסומים: הרכיבים האלה והתוכן שלהם יוסרו ממטענים ייעודיים (payloads) של 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 תיאור קולי של סוג הפריט הזה. תוכרז על כך למשתמש לפני קריאת תוכן הפריט, במקרים שבהם ההקשר הנוסף מועיל, לדוגמה, כשהמשתמש מבקש הקראה של הפריט לאחר התראה.

זה צריך להיות ביטוי שם עצם קצר ופשוט, כמו "Email", "הודעת טקסט" או "Daily Planet News Update".

מומלץ להשתמש ב-Glass כדי לאכלס את השדה הזה בכל פריט בציר הזמן, גם אם הפריט לא מכיל טקסט SpeakableText או טקסט כדי שהמשתמש יוכל ללמוד על סוג הפריט בלי להסתכל במסך.
ניתן לכתיבה
text string תוכן הטקסט של הפריט הזה. ניתן לכתיבה
title string הכותרת של הפריט הזה. ניתן לכתיבה

תשובה

אם הפעולה בוצעה ללא שגיאות, השיטה הזו מחזירה משאב של ציר הזמן בגוף התשובה.

דוגמאות

הערה: דוגמאות הקוד הזמינות לשיטה זו לא מייצגות את כל שפות התכנות הנתמכות (רשימת השפות הנתמכות זמינה בדף של ספריות המשתמשים).

Java

משתמש בספריית הלקוח של 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

משתמש בספריית הלקוח של 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

משתמש בספריית הלקוח של 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

משתמש בספריית הלקוח של 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

משתמש בספריית הלקוח של 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" }