يتطلّب تفويضًا
إضافة مرفق جديد إلى عنصر مخطط زمني. اطّلِع على مثال.
تتوافق هذه الطريقة مع معرّف الموارد المنتظم (URI) /upload وتقبل الوسائط التي تم تحميلها بالخصائص التالية:
- الحد الأقصى لحجم الملف: 10 ميغابايت
- أنواع MIME للوسائط المقبولة:
image/*,audio/*,video/*
الطلب
طلب HTTP
POST https://www.googleapis.com/upload/mirror/v1/timeline/itemId/attachments
المعلمات
| اسم المعلَمة | القيمة | الوصف |
|---|---|---|
| مَعلمات المسار | ||
itemId |
string |
رقم تعريف عنصر المخطط الزمني الذي ينتمي إليه المرفق. |
| مَعلمات طلب البحث المطلوبة | ||
uploadType |
string |
تمثّل هذه السمة نوع طلب التحميل إلى معرّف الموارد المنتظم (URI) /upload.
القيم المقبولة هي:
|
التفويض
يتطلب هذا الطلب تفويضًا بالنطاق التالي (مزيد من المعلومات عن المصادقة والترخيص).
| النطاق |
|---|
https://www.googleapis.com/auth/glass.timeline |
نص الطلب
لا تقدِّم نص طلب باستخدام هذه الطريقة.
الرد
في حال نجاح هذه الطريقة، سيتم عرض مورد Timeline.attachments في نص الاستجابة.
أمثلة
ملاحظة: إنّ الأمثلة المرتبطة بالرموز والمتوفرة لهذه الطريقة لا تمثّل كل لغات البرمجة المتوافقة (يُرجى مراجعة صفحة مكتبات البرامج للاطّلاع على قائمة باللغات المتوافقة).
Java
تستخدم مكتبة برامج 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.
لاستخدام مكتبة برامج .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
لاستخدام مكتبة برامج 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
تستخدم مكتبة برامج 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
تستخدم مكتبة برامج 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 غير مُنسّق
لا يستخدم مكتبة برامج.
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