Timeline.attachments: insert

Requiere autorización.

Agrega un nuevo archivo adjunto a un elemento del cronograma. Ve un ejemplo.

Este método admite un URI /upload y acepta contenido multimedia subido con las siguientes características:

  • Tamaño máximo del archivo: 10 MB
  • Tipos MIME de los medios aceptados: image/* , audio/* , video/*

Solicitud

Solicitud HTTP

POST https://www.googleapis.com/upload/mirror/v1/timeline/itemId/attachments

Parámetros

Nombre del parámetro Valor Descripción
Parámetros de ruta de acceso
itemId string Es el ID del elemento de cronograma al que pertenece el archivo adjunto.
Parámetros de búsqueda obligatorios
uploadType string El tipo de solicitud de carga para el URI /upload. Los valores aceptables son los siguientes:
  • media: Carga simple. Suba los datos de medios.
  • resumable: Carga reanudable. Sube el archivo de manera reanudable mediante una serie de al menos dos solicitudes.

Autorización

Esta solicitud requiere autorización con el siguiente alcance (obtén más información sobre la autenticación y autorización).

Alcance
https://www.googleapis.com/auth/glass.timeline

Cuerpo de la solicitud

No proporciones un cuerpo de solicitud con este método.

Respuesta

Si se aplica correctamente, este método muestra un recurso Timeline.attachments en el cuerpo de la respuesta.

Ejemplos

Nota: Los ejemplos de código disponibles para este método no representan todos los lenguajes de programación admitidos (consulta la página de bibliotecas cliente para consultar una lista de lenguajes admitidos).

Java

Usa la biblioteca cliente de Java.

import com.google.api.client.http.InputStreamContent;
import com.google.api.services.mirror.Mirror;
import com.google.api.services.mirror.model.Attachment;

import java.io.IOException;
import java.io.InputStream;

public class MyClass {
  // ...

  /**
   * Insert a new attachment for the specified timeline item.
   * 
   * @param service Authorized Mirror service.
   * @param itemId ID of the timeline item to insert attachment for.
   * @param contentType Attachment's content type (supported content types are
   *        "image/*", "video/*", "audio/*").
   * @param attachment Attachment to insert.
   * @return Attachment's metadata on success, {@code null} otherwise.
   */
  public static Attachment insertAttachment(Mirror service, String itemId, String contentType,
      InputStream attachment) {
    try {
      InputStreamContent mediaContent = new InputStreamContent(contentType, attachment);
      return service.timeline().attachments().insert(itemId, mediaContent).execute();
    } catch (IOException e) {
      // An error occurred.
      e.printStackTrace();
      return null;
    }
  }

  // ...
}

.NET

Usa la biblioteca cliente.NET.

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

public class MyClass {
  // ...

  /// <summary>
  /// Insert a new attachment for the specified timeline item.
  /// </summary>
  /// <param name="service">Authorized Mirror service.</param>
  /// <param name="itemId">ID of the timeline item to insert attachment for.</param>
  /// <param name="contentType">
  /// Attachment's content type (supported content types are "image/*", "video/*", "audio/*").
  /// </param>
  /// <param name="stream">Attachment to insert.</param>
  /// <returns>Attachment's metadata on success, null otherwise.</returns>
  public static Attachment InsertAttachment(
      MirrorService service, String itemId, String contentType, Stream stream) {
    try {
      TimelineResource.AttachmentsResource.InsertMediaUpload request = 
          service.Timeline.Attachments.Insert(itemId, stream, contentType);
      request.Upload();
      return request.ResponseBody;
    } catch (Exception e) {
      Console.WriteLine("An error occurred: " + e.Message);
      return null;
    }
  }

  // ...
}

PHP

Usa la biblioteca cliente PHP.

/**
 * 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 insertAttachment($service, $itemId, $contentType, $attachment) {
  try {
    $params = array(
        'data' => $attachment,
        'mimeType' => $contentType,
        'uploadType' => 'media');
    return $service->timeline_attachments->insert($itemId, $params);
  } catch (Exception $e) {
    print 'An error ocurred: ' . $e->getMessage();
    return null;
  }
}

Python

Usa la biblioteca cliente de Python.

from apiclient import errors
# ...

def insert_attachment(service, item_id, content_type, attachment):
  """Insert an new attachment for the specified timeline item.

  Args:
    service: Authorized Mirror service.
    item_id: ID of the timeline item to insert attachment for.
    content_type: Attachment's content type (supported content types are
                  'image/*', 'video/*' and 'audio/*').
    attachment: Attachment to insert as data string.
  Returns:
    Attachment's metadata on success, None otherwise.
  """
  try:
    media_body = MediaIoBaseUpload(
        io.BytesIO(attachment), mimetype=content_type, resumable=True)
    return service.timeline().attachments().insert(
        itemId=item_id, media_body=media_body).execute()
  except errors.HttpError, error:
    print 'An error occurred: %s' % error
    return None

Ruby

Usa la biblioteca cliente de Ruby.

##
# Insert an new attachment for the specified timeline item.
#
# @param [Google::APIClient] client
#   Authorized client instance.
# @param [String] item_id
#   ID of the timeline item to insert attachment for.
# @param [String] content_type
#   Attachment's content type (supported content types are 'image/*', 'video/*'
#   and 'audio/*').
# @param [String] filename
#   Attachment's filename.
# @return [Google::APIClient::Schema::Mirror::V1::Attachment]
#   Attachment's metadata on success, nil otherwise.
def insert_attachment(client, item_id, content_type, filename)
  mirror = client.discovered_api('mirror', 'v1')
  media = Google::APIClient::UploadIO.new(filename, content_type)
  result = client.execute(
    :api_method => mirror.timeline.attachments.insert,
    :media => media,
    :parameters => {
      'itemId' => item_id,
      'uploadType' => 'resumable',
      'alt' => 'json'})
  if result.success?
    return result.data
  else
    puts "An error occurred: #{result.data['error']['message']}"
  end
end

HTTP sin procesar

No usa una biblioteca cliente.

POST /upload/mirror/v1/timeline/timeline item id/attachments?uploadType=media HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer auth token
Content-Type: media content type
Content-Length: media content length

media bytes