Timeline: insert

Yetkilendirme gerektiriyor

Zaman çizelgesine yeni bir öğe ekler. Örneğe göz atın.

Bu yöntem, bir /upload URI'sini destekler ve aşağıdaki özelliklere sahip yüklenen medyayı kabul eder:

  • Maksimum dosya boyutu: 10 MB
  • Kabul edilen Medya MIME türleri: image/* , audio/* , video/*

Sağlanmışsa yüklenen medya, zaman çizelgesi öğesine ek olarak eklenir.

İstek

HTTP isteği

Bu yöntem, iki ayrı URI aracılığıyla medya yükleme işlevi sağlar. Daha fazla bilgi için medya yükleme ile ilgili belgeye bakın.

  • Medya yükleme istekleri için yükleme URI'si:
    POST https://www.googleapis.com/upload/mirror/v1/timeline
    .
  • Yalnızca meta veri istekleri için meta veri URI'si:
    POST https://www.googleapis.com/mirror/v1/timeline
    .

Parametreler

Parametre adı Değer Açıklama
Gerekli sorgu parametreleri
uploadType string /upload URI'sine yükleme isteğinin türü. Kabul edilebilir değerler şunlardır:
  • media - Basit yükleme. Meta veri olmadan yalnızca medyayı yükleyin.
  • multipart - Çok parçalı yükleme. Tek bir istekte hem medyayı hem de meta verilerini yükleyin.
  • resumable - Devam ettirilebilir yükleme. Dosyayı, ilk isteğin meta verileri içerdiği en az iki istekten oluşan bir seri kullanarak devam ettirilebilir bir şekilde yükleyin.

Yetkilendirme

Bu istek, aşağıdaki kapsamlardan en az biriyle yetkilendirme gerektirir (kimlik doğrulama ve yetkilendirme hakkında daha fazla bilgi edinin).

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

İstek içeriği

İstek gövdesinde, meta veri olarak aşağıdaki özelliklere sahip bir Zaman Çizelgesi kaynağı sağlayın. Daha fazla bilgi için medya yükleme ile ilgili belgeye bakın.

Mülk adı Değer Açıklama Notlar
İsteğe Bağlı Özellikler
bundleId string Bu öğenin paket kimliği. Hizmetler, birçok öğeyi birlikte gruplandırmak için bir BundleId belirtebilir. Cihazda tek bir üst düzey öğenin altında görünürler. yazılabilir
canonicalUrl string Zaman çizelgesi öğesi tarafından temsil edilen verilerin standart/yüksek kaliteli sürümüne işaret eden standart URL. yazılabilir
creator nested object Bu öğeyi oluşturan kullanıcı veya grup. yazılabilir
displayTime datetime Bu öğe, RFC 3339'a göre biçimlendirilmiş olarak zaman çizelgesinde görüntülenirken gösterilmesi gereken zaman. Bu kullanıcının zaman çizelgesi, görüntüleme zamanına göre kronolojik olarak sıralanır; dolayısıyla, öğenin zaman çizelgesinde nerede görüntüleneceğini de bu belirler. Hizmet tarafından ayarlanmazsa görüntüleme süresi varsayılan olarak updated saatine ayarlanır. yazılabilir
html string Bu öğenin HTML içeriği. Bir öğe için hem text hem de html sağlanırsa html zaman çizelgesinde oluşturulur.

İzin verilen HTML öğeleri: Bu öğeleri zaman çizelgesi kartlarınızda kullanabilirsiniz.

  • Başlıklar: h1, h2, h3, h4, h5, h6
  • Resim sayısı: img
  • Listeler: li, ol, ul
  • HTML5 anlamı: article, aside, details, figure, figcaption, footer, header, nav, section, summary, time
  • Yapısal: blockquote, br, div, hr, p, span
  • Stil: b, big, center, em, i, u, s, small, strike, strong, style, sub, sup
  • Tablolar: table, tbody, td, tfoot, th, thead, tr

Engellenen HTML öğeleri: Bu öğeler ve içerikleri HTML yüklerinden kaldırılır.

  • Doküman başlıkları: head, title
  • Yerleştirilmiş öğeler: audio, embed, object, source, video
  • Çerçeveler: frame, frameset
  • Komut dosyası çalıştırma: applet, script

Diğer öğeler: Listelenmeyen tüm öğeler kaldırılır ancak içerikleri korunur.

yazılabilir
isBundleCover boolean Bu öğenin paket kapağı olup olmadığı.

Bir öğe paket kapağı olarak işaretlenirse bu öğe ile aynı bundleId öğesine sahip öğe paketine giriş noktası olur. Yalnızca ana zaman çizelgesinde gösterilir; açık pakette gösterilmez.

Ana zaman çizelgesinde gösterilen öğeler:
  • isBundleCover bulunan öğeler true olarak ayarlandı
  • bundleId içermeyen öğeler
Paket alt zaman çizelgesinde gösterilen öğeler şunlardır:
  • Söz konusu bundleId VE isBundleCover öğesinin false olarak ayarlandığı öğeler
yazılabilir
location nested object Bu öğeyle ilişkilendirilen coğrafi konum. yazılabilir
notification nested object Bu öğeyle ilgili bildirimlerin cihazda nasıl sunulacağını kontrol eder. Bu değer eksikse herhangi bir bildirim oluşturulmaz. yazılabilir
notification.deliveryTime datetime Bildirimin teslim edileceği saat. yazılabilir
notification.level string Bildirimin ne kadar önemli olduğunu açıklar. İzin verilen değerler:
  • DEFAULT - Varsayılan önemdeki bildirimler. Kullanıcıları uyarmak için bir zil çalınır.
yazılabilir
recipients[] list Bu öğenin paylaşıldığı kullanıcıların veya grupların listesi. yazılabilir
sourceItemId string Bir zaman çizelgesi öğesini kendi hizmetinizdeki verilerle eşlemek için kullanabileceğiniz şeffaf dize. yazılabilir
speakableText string Bu öğe içeriğinin sesli okunabilir sürümü. READ_ALOUD menü öğesiyle birlikte, sesli okunurken daha net olacak metin sağlamak veya Glass'ta görsel olarak görüntülenenler hakkında genişletilmiş bilgi sağlamak için bu alanı kullanın.

Glassware ayrıca, ek bağlamın faydalı olduğu durumlarda (örneğin, kullanıcı bir bildirimin ardından öğenin sesli okunmasını istediğinde) bu metinden önce sesli olarak söylenen söylenebilirType alanını da belirtmelidir.
yazılabilir
speakableType string Bu öğenin türünün okunabilir bir açıklaması. Bu bilgi, ek bağlamın faydalı olduğu durumlarda (ör. kullanıcı bir bildirimin ardından öğenin sesli okunmasını istediğinde) öğenin içeriğini okumadan önce kullanıcıya duyurulur.

Bu, "E-posta", "Kısa mesaj" veya "Günlük Gezegen Haberleri Güncellemesi" gibi kısa ve basit bir isim ifadesi olmalıdır.

Kullanıcı ekrana bakmadan öğenin türünü öğrenebilmesi için, öğede söylenebilir metin veya metin bulunmasa bile bu alanın her zaman çizelgesi öğesi için doldurulması önerilir.
yazılabilir
text string Bu öğenin metin içeriği. yazılabilir
title string Bu öğenin başlığı. yazılabilir

Yanıt

Başarılı olursa bu yöntem yanıt gövdesinde bir Zaman çizelgesi kaynağı döndürür.

Örnekler

Not: Bu yöntem için kullanıma sunulan kod örnekleri, desteklenen tüm programlama dillerini kapsamaz (Desteklenen dillerin listesi için istemci kitaplıkları sayfasını inceleyin).

Java

Java istemci kitaplığını kullanır.

import com.google.api.client.http.InputStreamContent;
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;
import java.io.InputStream;

public class MyClass {
  // ...

  /**
   * Insert a new timeline item in the user's glass with an optional
   * notification and attachment.
   * 
   * @param service Authorized Mirror service.
   * @param text timeline item's text.
   * @param contentType Optional attachment's content type (supported content
   *        types are "image/*", "video/*" and "audio/*").
   * @param attachment Optional attachment stream.
   * @param notificationLevel Optional notification level, supported values are
   *        {@code null} and "AUDIO_ONLY".
   * @return Inserted timeline item on success, {@code null} otherwise.
   */
  public static TimelineItem insertTimelineItem(Mirror service, String text, String contentType,
      InputStream attachment, String notificationLevel) {
    TimelineItem timelineItem = new TimelineItem();
    timelineItem.setText(text);
    if (notificationLevel != null && notificationLevel.length() > 0) {
      timelineItem.setNotification(new NotificationConfig().setLevel(notificationLevel));
    }
    try {
      if (contentType != null && contentType.length() > 0 && attachment != null) {
        // Insert both metadata and attachment.
        InputStreamContent mediaContent = new InputStreamContent(contentType, attachment);
        return service.timeline().insert(timelineItem, mediaContent).execute();
      } else {
        // Insert metadata only.
        return service.timeline().insert(timelineItem).execute();
      }
    } catch (IOException e) {
      System.err.println("An error occurred: " + e);
      return null;
    }
  }

  // ...
}

.NET

.NET istemci kitaplığını kullanır.

using System;
using System.IO;

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

public class MyClass {
  // ...

  /// <summary>
  /// Insert a new timeline item in the user's glass with an optional
  /// notification and attachment.
  /// </summary>
  /// <param name='service'>Authorized Mirror service.</param>
  /// <param name='text'>Timeline Item's text.</param>
  /// <param name='contentType'>
  /// Optional attachment's content type (supported content types are
  /// "image/*", "video/*" and "audio/*").
  /// </param>
  /// <param name='attachment'>Optional attachment stream</param>
  /// <param name='notificationLevel'>
  /// Optional notification level, supported values are null and
  /// "AUDIO_ONLY".
  /// </param>
  /// <returns>
  /// Inserted timeline item on success, null otherwise.
  /// </returns>
  public static TimelineItem InsertTimelineItem(MirrorService service,
      String text, String contentType, Stream attachment,
      String notificationLevel) {
    TimelineItem timelineItem = new TimelineItem();
    timelineItem.Text = text;
    if (!String.IsNullOrEmpty(notificationLevel)) {
      timelineItem.Notification = new NotificationConfig() {
        Level = notificationLevel
      };
    }
    try {
      if (!String.IsNullOrEmpty(contentType) && attachment != null) {
        // Insert both metadata and media.
        TimelineResource.InsertMediaUpload request = service.Timeline.Insert(
            timelineItem, attachment, contentType);
        request.Upload();
        return request.ResponseBody;
      } else {
        // Insert metadata only.
        return service.Timeline.Insert(timelineItem).Fetch();
      }
    } catch (Exception e) {
      Console.WriteLine("An error occurred: " + e.Message);
      return null;
    }
  }

  // ...
}

PHP

PHP istemci kitaplığını kullanır.

/**
 * Insert a new timeline item in the user's glass with an optional
 * notification and attachment.
 *
 * @param Google_MirrorService $service Authorized Mirror service.
 * @param string $text timeline item's text.
 * @param string $contentType Optional attachment's content type (supported
 *                            content types are "image/*", "video/*"
 *                            and "audio/*").
 * @param string $attachment Optional attachment content.
 * @param string $notificationLevel Optional notification level,
 *                                  supported values are {@code null}
 *                                  and "AUDIO_ONLY".
 * @return Google_TimelineItem Inserted timeline item on success, otherwise.
 */
function insertTimelineItem($service, $text, $contentType, $attachment,
                            $notificationLevel) {
  try {
    $timelineItem = new Google_TimelineItem();
    $timelineItem->setText($text);
    if ($notificationlevel != null) {
      $notification = new Google_NotificationConfig();
      $notification->setLevel($notificationLevel);
      $timelineItem->setNotification($notification);
    }
    $optParams = array();
    if ($contentType != null && $attachment != null) {
      $optParams['data'] = $attachment;
      $optParams['mimeType'] = $contentType;
    }
    return $service->timeline->insert($timelineItem, $optParams);
  } catch (Exception $e) {
    print 'An error occurred: ' . $e->getMessage();
    return null;
  }
}

Python

Python istemci kitaplığını kullanır.

import io

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

def insert_timeline_item(service, text, content_type=None, attachment=None,
                         notification_level=None):
  """Insert a new timeline item in the user's glass.

  Args:
    service: Authorized Mirror service.
    text: timeline item's text.
    content_type: Optional attachment's content type (supported content types
                  are 'image/*', 'video/*' and 'audio/*').
    attachment: Optional attachment as data string.
    notification_level: Optional notification level, supported values are None
                        and 'AUDIO_ONLY'.

  Returns:
    Inserted timeline item on success, None otherwise.
  """
  timeline_item = {'text': text}
  media_body = None
  if notification_level:
    timeline_item['notification'] = {'level': notification_level}
  if content_type and attachment:
    media_body = MediaIoBaseUpload(
        io.BytesIO(attachment), mimetype=content_type, resumable=True)
  try:
    return service.timeline().insert(
        body=timeline_item, media_body=media_body).execute()
  except errors.HttpError, error:
    print 'An error occurred: %s' % error

Ruby

Ruby istemci kitaplığını kullanır.

##
# Insert a new Timeline Item in the user's glass.
#
# @param [Google::APIClient] client
#   Authorized client instance.
# @param [String] text
#   Timeline item's text.
# @param [String] content_type
#   Optional attachment's content type (supported content types are 'image/*',
#   'video/*' and 'audio/*').
# @param [String] filename
#   Optional attachment's filename.
# @param [String] notification_level
#   Optional notification level, supported values are nil and 'AUDIO_ONLY'.
# @return [Google::APIClient::Schema::Mirror::V1::TimelineItem]
#   Timeline item instance if successful, nil otherwise.
def insert_timeline_item(client, text, content_type, filename,
                         notification_level)
  mirror = client.discovered_api('mirror', 'v1')
  timeline_item = mirror.timeline.insert.request_schema.new({ 'text' => text })
  if notification_level
    timeline_item.notification = { 'level' => notification_level }
  end
  result = nil
  if filename
    media = Google::APIClient::UploadIO.new(filename, content_type)
    result = client.execute(
      :api_method => mirror.timeline.insert,
      :body_object => timeline_item,
      :media => media,
      :parameters => {
        'uploadType' => 'multipart',
        'alt' => 'json'})
  else
    result = client.execute(
      :api_method => mirror.timeline.insert,
      :body_object => timeline_item)
  end
  if result.success?
    return result.data
  else
    puts "An error occurred: #{result.data['error']['message']}"
  end
end

Go

Go istemci kitaplığını kullanır.

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

// InsertTimelineItem inserts a new timeline item in the user's glass with an
// optional notification and attachment.
func InsertTimelineItem(g *mirror.Service, text string, attachment io.Reader,
	notificationLevel string) (*mirror.TimelineItem, error) {
	t := &mirror.TimelineItem{Text: text}
	if notificationLevel != "" {
		t.Notification = &mirror.NotificationConfig{Level: notificationLevel}
	}
	req := g.Timeline.Insert(t)
	if attachment != nil {
		// Add attachment to the timeline item.
		req.Media(attachment)
	}
	r, err := req.Do()
	if err != nil {
		fmt.Printf("An error occurred: %v\n", err)
		return nil, err
	}
	return r, nil
}

Ham HTTP

İstemci kitaplığı kullanmaz.

## A very simple timeline item

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

{ "text": "Hello world" }

## A more complete timeline item with an attachment

POST /mirror/v1/timeline HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer auth token
Content-Type: multipart/related; boundary="mymultipartboundary"
Content-Length: length

--mymultipartboundary
Content-Type: application/json; charset=UTF-8

{
 "text": "Hello world",
 "menuItems": [
   { "action": "REPLY" },
   {
     "action": "CUSTOM",
     "id": "complete"
     "values": [{
       "displayName": "Complete",
       "iconUrl": "http://example.com/icons/complete.png"
     }]
   }
}
--mymultipartboundary
Content-Type: image/jpeg
Content-Transfer-Encoding: binary

binary image data
--mymultipartboundary--