Timeline: update

अनुमति देना ज़रूरी है

इससे टाइमलाइन में मौजूद किसी आइटम को अपडेट किया जाता है. उदाहरण देखें.

यह तरीका /upload यूआरआई के साथ काम करता है और यहां दी गई विशेषताओं के साथ अपलोड किए गए मीडिया स्वीकार करता है:

  • फ़ाइल का ज़्यादा से ज़्यादा साइज़: 10 एमबी
  • मीडिया के इन MIME टाइप को इस्तेमाल किया जा सकता है: audio/* , image/* , video/*

अनुरोध

एचटीटीपी अनुरोध

यह तरीका दो अलग-अलग यूआरआई के ज़रिए मीडिया अपलोड करने की सुविधा देता है. ज़्यादा जानकारी के लिए, मीडिया अपलोड करने वाला दस्तावेज़ देखें.

  • मीडिया अपलोड करने के अनुरोधों के लिए, यूआरआई अपलोड करें:
    PUT https://www.googleapis.com/upload/mirror/v1/timeline/id
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  • सिर्फ़ मेटाडेटा वाले अनुरोधों के लिए, मेटाडेटा यूआरआई:
    PUT https://www.googleapis.com/mirror/v1/timeline/id
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

पैरामीटर

पैरामीटर का नाम मान ब्यौरा
पाथ पैरामीटर
id string टाइमलाइन आइटम का आईडी.
ज़रूरी क्वेरी पैरामीटर
uploadType string /upload यूआरआई के लिए, अपलोड के अनुरोध का टाइप. ये वैल्यू स्वीकार की जाती हैं:

अनुमति देना

इस अनुरोध के लिए, इनमें से कम से कम एक दायरे का इस्तेमाल करके अनुमति लेना ज़रूरी है (पुष्टि करने और अनुमति देने के बारे में ज़्यादा पढ़ें).

दायरा
https://www.googleapis.com/auth/glass.timeline
https://www.googleapis.com/auth/glass.location

अनुरोध का मुख्य भाग

अनुरोध के मुख्य हिस्से में, मेटाडेटा के तौर पर ये प्रॉपर्टी शामिल करके टाइमलाइन संसाधन उपलब्ध कराएं. ज़्यादा जानकारी के लिए, मीडिया अपलोड करने वाला दस्तावेज़ देखें.

प्रॉपर्टी का नाम मान ब्यौरा नोट
वैकल्पिक प्रॉपर्टी
bundleId string इस आइटम का बंडल आईडी. कई आइटम को एक साथ ग्रुप करने के लिए, सेवाएं एक बंडल आईडी तय कर सकती हैं. वे डिवाइस पर एक टॉप-लेवल आइटम के नीचे दिखते हैं. लिखा जा सकता है
canonicalUrl string टाइमलाइन आइटम के ज़रिए दिखाए गए डेटा के कैननिकल/अच्छी क्वालिटी वाले वर्शन के बारे में बताने वाला कैननिकल यूआरएल. लिखा जा सकता है
creator nested object वह उपयोगकर्ता या ग्रुप जिसने यह आइटम बनाया है. लिखा जा सकता है
displayTime datetime वह समय जो इस आइटम को टाइमलाइन में देखे जाने पर दिखाया जाना चाहिए, जो आरएफ़सी 3339 के हिसाब से फ़ॉर्मैट किया गया है. इस उपयोगकर्ता की टाइमलाइन, दिखाए जाने के समय के हिसाब से क्रम में लगी होती है. इससे यह भी तय होता है कि टाइमलाइन में आइटम कहां दिखेगा. अगर सेवा सेट नहीं करती है, तो डिसप्ले टाइम डिफ़ॉल्ट रूप से updated समय पर सेट होता है. लिखा जा सकता है
html string इस आइटम के लिए एचटीएमएल कॉन्टेंट. अगर किसी आइटम के लिए text और 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

ब्लॉक किए गए एचटीएमएल एलिमेंट: ये एलिमेंट और इनका कॉन्टेंट, एचटीएमएल पेलोड से हटा दिया जाता है.

  • दस्तावेज़ के हेडर: 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 पर दिखाई जा रही चीज़ों के बारे में ज़्यादा जानकारी देने के लिए भी किया जा सकता है.

ग्लासवेयर में SpeakingType फ़ील्ड को भी बताया जाना चाहिए. इस फ़ील्ड को इस टेक्स्ट से पहले उन मामलों में बोला जाएगा जहां अतिरिक्त जानकारी काम की हो. उदाहरण के लिए, जब उपयोगकर्ता किसी सूचना के बाद उस आइटम को ज़ोर से पढ़कर सुनाने का अनुरोध करता है.
लिखा जा सकता है
speakableType string इस आइटम के टाइप के बारे में बोलने लायक जानकारी. इसकी सूचना, किसी आइटम का कॉन्टेंट पढ़ने से पहले उपयोगकर्ता को दी जाएगी. ऐसा उन मामलों में होगा जहां ज़्यादा जानकारी काम की हो. उदाहरण के लिए, जब उपयोगकर्ता किसी सूचना के बाद, उस आइटम को ज़ोर से पढ़कर सुनाने का अनुरोध करता है, तो यह सूचना दी जाएगी.

यह एक छोटा और आसान वाक्यांश होना चाहिए. जैसे, "ईमेल", "टेक्स्ट मैसेज" या "डेली प्लैनेट न्यूज़ अपडेट".

हमारा सुझाव है कि टाइमलाइन पर मौजूद हर आइटम के लिए, कांच से बने इस फ़ील्ड में जानकारी डालें, भले ही आइटम में SpeakingText या टेक्स्ट शामिल न हो. इससे उपयोगकर्ता, स्क्रीन देखे बिना ही यह जान पाएगा कि आइटम किस तरह का है.
लिखा जा सकता है
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 क्लाइंट लाइब्रेरी का इस्तेमाल करता है.

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
}

रॉ एचटीटीपी

क्लाइंट लाइब्रेरी का इस्तेमाल नहीं करता.

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