يتطلّب تفويضًا
إضافة مرفق جديد إلى عنصر مخطط زمني. اطّلِع على مثال.
تتوافق هذه الطريقة مع معرّف الموارد المنتظم (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