জাভা ভাষা নির্দেশিকা

গুরুত্বপূর্ণ: এই নথিটি 2012 সালের আগে লেখা হয়েছিল৷ এই নথিতে বর্ণিত প্রমাণীকরণের বিকল্পগুলি (OAuth 1.0, AuthSub, এবং ClientLogin) 20 এপ্রিল, 2012 থেকে আনুষ্ঠানিকভাবে বাতিল করা হয়েছে এবং আর উপলব্ধ নেই৷ আমরা আপনাকে যত তাড়াতাড়ি সম্ভব OAuth 2.0- এ স্থানান্তরিত করতে উত্সাহিত করি।

Google Sites Data API ক্লায়েন্ট অ্যাপ্লিকেশনগুলিকে একটি Google সাইটের মধ্যে সামগ্রী অ্যাক্সেস, প্রকাশ এবং সংশোধন করার অনুমতি দেয়৷ আপনার ক্লায়েন্ট অ্যাপ্লিকেশন সাম্প্রতিক কার্যকলাপের একটি তালিকা, পুনর্বিবেচনা ইতিহাস আনয়ন, এবং সংযুক্তি ডাউনলোড করার অনুরোধ করতে পারে।

সাইট ডেটা এপিআই-এর ক্ষমতার উপর কিছু পটভূমি প্রদান করার পাশাপাশি, এই গাইড জাভা ক্লায়েন্ট লাইব্রেরি ব্যবহার করে API-এর সাথে ইন্টারঅ্যাক্ট করার উদাহরণ প্রদান করে। ক্লায়েন্ট লাইব্রেরি সেট আপ করতে সহায়তার জন্য, Google ডেটা জাভা ক্লায়েন্ট লাইব্রেরি দিয়ে শুরু করা দেখুন। আপনি যদি ক্লাসিক সাইট এপিআই এর সাথে ইন্টারঅ্যাক্ট করতে জাভা ক্লায়েন্ট লাইব্রেরি দ্বারা ব্যবহৃত অন্তর্নিহিত প্রোটোকল সম্পর্কে আরও বুঝতে আগ্রহী হন, অনুগ্রহ করে প্রোটোকল গাইড দেখুন।

শ্রোতা

এই ডকুমেন্টটি এমন ডেভেলপারদের জন্য যারা Google ডেটা জাভা ক্লায়েন্ট লাইব্রেরি ব্যবহার করে Google সাইটগুলির সাথে ইন্টারঅ্যাক্ট করে এমন ক্লায়েন্ট অ্যাপ্লিকেশন লিখতে চান।

শুরু হচ্ছে

Google Sites প্রমাণীকরণের জন্য Google অ্যাকাউন্ট বা G Suite অ্যাকাউন্ট ব্যবহার করে। আপনার যদি ইতিমধ্যেই একটি অ্যাকাউন্ট থাকে তবে আপনি প্রস্তুত। অন্যথায়, আপনি একটি নতুন অ্যাকাউন্ট তৈরি করতে পারেন।

লাইব্রেরি ইনস্টল করা হচ্ছে

ক্লায়েন্ট লাইব্রেরি সেট আপ এবং ইনস্টল করতে সহায়তার জন্য, Google ডেটা জাভা ক্লায়েন্ট লাইব্রেরি দিয়ে শুরু করা দেখুন। আপনি যদি Eclipse ব্যবহার করেন, তাহলে সেই নিবন্ধটি Google Data APIs Eclipse প্লাগইন ব্যবহার করে কীভাবে আপনার প্রকল্প সেটআপ করবেন তাও ব্যাখ্যা করে। শুরু করতে আপনার যা দরকার তা এখানে:

  1. জাভা 1.5 বা উচ্চতর ইনস্টল করুন
  2. ক্লায়েন্ট লাইব্রেরি ডাউনলোড করুন ( gdata-src.java.zip এর সর্বশেষ সংস্করণ)
  3. নির্ভরতার তালিকা ডাউনলোড করুন
  4. নমুনা অ্যাপ্লিকেশন ডাউনলোড করুন ( gdata-samples.java.zip এর সর্বশেষ সংস্করণ)

.jars ইনস্টল করার পরে, আপনাকে আপনার প্রকল্পে নিম্নলিখিতগুলি অন্তর্ভুক্ত করতে হবে:

  1. java/lib/gdata-sites-2.0.jar - সংস্করণ 2.0 এখানে ক্লাসিক সাইট API-এর 1.4 সংস্করণের জন্য তৈরি করা হয়েছে।
  2. java/lib/gdata-core-1.0.jar
  3. java/lib/gdata-client-1.0.jar
  4. java/lib/gdata-spreadsheet-3.0.jar (যদি তালিকা পৃষ্ঠা / তালিকা আইটেমগুলির সাথে কাজ করে)

এছাড়াও, নির্ভরতা জারগুলি অন্তর্ভুক্ত করতে ভুলবেন না ( gdata-media-1.0.jar , mail.jar , এবং google-collect....jar )।

নমুনা অ্যাপ্লিকেশন চলমান

একটি সম্পূর্ণ কার্যকরী নমুনা অ্যাপ্লিকেশনটি gdata-samples.java.zip ডাউনলোডের /java/sample/sites সাবডিরেক্টরিতে অবস্থিত। উৎস ট্যাব থেকে অ্যাক্সেসযোগ্য SVN সংগ্রহস্থলের /trunk/java/sample/sites/- এও পাওয়া যায়। SitesDemo.java ব্যবহারকারীকে অনেকগুলি ক্রিয়াকলাপ সম্পাদন করতে দেয় যা প্রদর্শন করে কিভাবে ক্লাসিক সাইট API ব্যবহার করতে হয়।

দ্রষ্টব্য, নমুনা চালানোর জন্য আপনাকে java/sample/util/lib/sample-util.jar অন্তর্ভুক্ত করতে হবে।

আপনার নিজস্ব প্রকল্প শুরু

টিপ : আমাদের Eclipse প্লাগইনের সাথে দ্রুত সেটআপের জন্য Google Data API এর সাথে Eclipse ব্যবহার করা নিবন্ধটি দেখুন।

আপনার অ্যাপ্লিকেশনের চাহিদার উপর নির্ভর করে, আপনার বেশ কয়েকটি আমদানির প্রয়োজন হবে। আমরা নিম্নলিখিত আমদানিগুলি দিয়ে শুরু করার পরামর্শ দিই:

import com.google.gdata.client.*;
import com.google.gdata.client.sites.*;
import com.google.gdata.data.*;
import com.google.gdata.data.acl.*;
import com.google.gdata.data.media.*;
import com.google.gdata.data.sites.*;
import com.google.gdata.data.spreadsheet.*;  // If working with listpages / listitems
import com.google.gdata.util.*;

এর পরে, আপনাকে একটি SitesService অবজেক্ট সেটআপ করতে হবে, যা ক্লাসিক সাইট API-এর সাথে একটি ক্লায়েন্ট সংযোগ প্রতিনিধিত্ব করে:

SitesService client = new SitesService("yourCo-yourAppName-v1");

applicationName আর্গুমেন্ট ফর্ম্যাট অনুসরণ করা উচিত: company-applicationname-version । এই পরামিতি লগিং উদ্দেশ্যে ব্যবহার করা হয়.

দ্রষ্টব্য : এই গাইডের বাকি অংশ ধরে নেয় যে আপনি পরিবর্তনশীল client একটি SitesService তৈরি করেছেন।

ক্লাসিক সাইট API-এ প্রমাণীকরণ করা হচ্ছে

জাভা ক্লায়েন্ট লাইব্রেরি পাবলিক বা প্রাইভেট ফিডের সাথে কাজ করতে ব্যবহার করা যেতে পারে। সাইট ডেটা এপিআই ব্যক্তিগত এবং সর্বজনীন ফিডগুলিতে অ্যাক্সেস সরবরাহ করে, এটি একটি সাইট অনুমতি এবং আপনি যে অপারেশনটি সম্পাদন করার চেষ্টা করছেন তার উপর নির্ভর করে। উদাহরণস্বরূপ, আপনি একটি সর্বজনীন সাইটের বিষয়বস্তু ফিড পড়তে সক্ষম হতে পারেন কিন্তু এটিতে আপডেট করতে পারবেন না - এমন কিছু যার জন্য একটি প্রমাণীকৃত ক্লায়েন্ট প্রয়োজন। এটি ClientLogin ব্যবহারকারীর নাম/পাসওয়ার্ড প্রমাণীকরণ, AuthSub বা OAuth এর মাধ্যমে করা যেতে পারে।

AuthSub, OAuth, এবং ClientLogin সম্পর্কে আরও তথ্যের জন্য অনুগ্রহ করে Google Data APIs প্রমাণীকরণ ওভারভিউ দেখুন।

টিপ : API SSL (HTTPS) সমর্থন করে। আপনি যদি AuthSub/OAuth ব্যবহার করেন, তাহলে SSL-এর মাধ্যমে ফিডের অনুরোধ করার জন্য http s ://sites.google.com/feeds/ এর একটি সুযোগ নির্দিষ্ট করা নিশ্চিত করুন৷ এছাড়াও মনে রাখবেন যে G Suite ডোমেনের জন্য, প্রশাসনিক নিয়ন্ত্রণ প্যানেলে 'SSL প্রয়োজন' সেটিং API দ্বারা সম্মানিত হয়। আপনি client.useSsl(); .

ওয়েব অ্যাপ্লিকেশনের জন্য AuthSub

ওয়েব অ্যাপ্লিকেশনগুলির জন্য AuthSub প্রমাণীকরণ ক্লায়েন্ট অ্যাপ্লিকেশনগুলির দ্বারা ব্যবহার করা উচিত যা তাদের ব্যবহারকারীদের Google অ্যাকাউন্টে প্রমাণীকরণ করতে হবে৷ অপারেটরের Google Sites ব্যবহারকারীর জন্য ব্যবহারকারীর নাম এবং পাসওয়ার্ড অ্যাক্সেসের প্রয়োজন নেই - শুধুমাত্র একটি AuthSub টোকেন প্রয়োজন৷

আপনার ওয়েব অ্যাপ্লিকেশনে AuthSub অন্তর্ভুক্ত করার জন্য নির্দেশাবলী দেখুন

একটি একক ব্যবহারের টোকেন অনুরোধ করুন

ব্যবহারকারী যখন প্রথম আপনার অ্যাপ্লিকেশন পরিদর্শন করে, তখন তাদের প্রমাণীকরণ করতে হবে। সাধারণত, বিকাশকারীরা ব্যবহারকারীকে প্রমাণীকরণ করতে এবং তাদের নথিতে অ্যাক্সেসের অনুরোধ করতে ব্যবহারকারীকে AuthSub অনুমোদন পৃষ্ঠায় নির্দেশ করে কিছু পাঠ্য এবং একটি লিঙ্ক প্রিন্ট করে। Google ডেটা জাভা ক্লায়েন্ট লাইব্রেরি এই URL তৈরি করার জন্য একটি ফাংশন প্রদান করে। নিচের কোডটি AuthSubRequest পৃষ্ঠার একটি লিঙ্ক সেট আপ করে।

import com.google.gdata.client.*;

String nextUrl = "http://www.example.com/welcome.jsp";
String scope = "https://sites.google.com/feeds/";
boolean secure = true;
boolean session = true;
String authSubUrl = AuthSubUtil.getRequestUrl(nextUrl, scope, secure, session);

আপনি যদি আপনার G Suite হোস্ট করা ডোমেনে ব্যবহারকারীদের প্রমাণীকরণ করতে চান:

import com.google.gdata.client.*;

String hostedDomain = "example.com";
String nextUrl = "http://www.example.com/welcome.jsp";
String scope = "https://sites.google.com/feeds/";  // SSL is also supported
boolean secure = true;
boolean session = true;
String authSubUrl = AuthSubUtil.getRequestUrl(hostedDomain, nextUrl, scope, secure, session);

getRequestUrl() পদ্ধতিতে বেশ কিছু প্যারামিটার লাগে ( AutSubRequest হ্যান্ডলার দ্বারা ব্যবহৃত ক্যোয়ারী প্যারামিটারের সাথে সম্পর্কিত):

  • পরবর্তী URL — ব্যবহারকারী তাদের অ্যাকাউন্টে লগ ইন করার পরে এবং অ্যাক্সেস মঞ্জুর করার পরে Google যে URLটিতে পুনঃনির্দেশ করবে; উপরের উদাহরণে http://www.example.com/welcome.jsp
  • সুযোগ — উপরের উদাহরণে https://sites.google.com/feeds/
  • টোকেন নিবন্ধিত মোডে ব্যবহার করা হবে কি না তা নির্দেশ করার জন্য একটি বুলিয়ান; উপরের উদাহরণে false
  • টোকেন পরে একটি সেশন টোকেনের জন্য বিনিময় করা হবে কিনা তা নির্দেশ করার জন্য একটি দ্বিতীয় বুলিয়ান; উপরের উদাহরণে true

একটি সেশন টোকেনে আপগ্রেড করা হচ্ছে

Google Data API ক্লায়েন্ট লাইব্রেরির সাথে AuthSub ব্যবহার করা দেখুন।

একটি সেশন টোকেন সম্পর্কে তথ্য পুনরুদ্ধার করা হচ্ছে

Google Data API ক্লায়েন্ট লাইব্রেরির সাথে AuthSub ব্যবহার করা দেখুন।

একটি সেশন টোকেন প্রত্যাহার করা হচ্ছে

Google Data API ক্লায়েন্ট লাইব্রেরির সাথে AuthSub ব্যবহার করা দেখুন।

ওয়েব বা ইনস্টল/মোবাইল অ্যাপ্লিকেশনের জন্য OAuth

OAuth AuthSub-এর বিকল্প হিসেবে ব্যবহার করা যেতে পারে এবং এটি ওয়েব অ্যাপ্লিকেশনের জন্য তৈরি। OAuth হল AuthSub-এর সুরক্ষিত এবং নিবন্ধিত মোড ব্যবহার করার মতো যে সমস্ত ডেটা অনুরোধগুলি অবশ্যই ডিজিটালভাবে স্বাক্ষরিত হতে হবে এবং আপনাকে অবশ্যই আপনার ডোমেন নিবন্ধন করতে হবে৷

আপনার ইনস্টল করা অ্যাপ্লিকেশনে OAuth অন্তর্ভুক্ত করার নির্দেশাবলী দেখুন

একটি অনুরোধ টোকেন আনা হচ্ছে

Google Data API ক্লায়েন্ট লাইব্রেরির সাথে OAuth ব্যবহার করা দেখুন।

একটি অনুরোধ টোকেন অনুমোদন

Google Data API ক্লায়েন্ট লাইব্রেরির সাথে OAuth ব্যবহার করা দেখুন।

একটি অ্যাক্সেস টোকেনে আপগ্রেড করা হচ্ছে

Google Data API ক্লায়েন্ট লাইব্রেরির সাথে OAuth ব্যবহার করা দেখুন।

ইনস্টল/মোবাইল অ্যাপ্লিকেশনের জন্য ক্লায়েন্টলগইন

ক্লায়েন্টলগইন ইনস্টল করা বা মোবাইল অ্যাপ্লিকেশনগুলির দ্বারা ব্যবহার করা উচিত যা তাদের ব্যবহারকারীদের Google অ্যাকাউন্টে প্রমাণীকরণ করতে হবে৷ প্রথম দৌড়ে, আপনার অ্যাপ্লিকেশন ব্যবহারকারীকে তাদের ব্যবহারকারীর নাম/পাসওয়ার্ডের জন্য অনুরোধ করে। পরবর্তী অনুরোধে, একটি প্রমাণীকরণ টোকেন উল্লেখ করা হয়।

আপনার ইনস্টল করা অ্যাপ্লিকেশনে ClientLogin অন্তর্ভুক্ত করার জন্য নির্দেশাবলী দেখুন

ClientLogin ব্যবহার করতে, SitesService অবজেক্টের setUserCredentials() পদ্ধতি ব্যবহার করুন, যা GoogleService থেকে উত্তরাধিকারসূত্রে প্রাপ্ত। যে ব্যবহারকারীর পক্ষে আপনার ক্লায়েন্ট অনুরোধ করছে তার ইমেল ঠিকানা এবং পাসওয়ার্ড উল্লেখ করুন। উদাহরণ স্বরূপ:

SitesService client = new SitesService("yourCo-yourAppName-v1");
client.setUserCredentials("example@gmail.com", "pa$$word");

টিপ : একবার আপনার অ্যাপ্লিকেশন সফলভাবে ব্যবহারকারীকে প্রথমবার প্রমাণীকরণ করলে, পরবর্তী ব্যবহারের জন্য প্রত্যাহার করতে আপনার ডাটাবেসে প্রমাণীকরণ টোকেন সংরক্ষণ করুন। আপনার অ্যাপ্লিকেশনের প্রতিটি রানে ব্যবহারকারীকে তাদের পাসওয়ার্ডের জন্য অনুরোধ করার দরকার নেই। আরও তথ্যের জন্য একটি প্রমাণীকরণ টোকেন রিকলিং দেখুন।

আপনার জাভা অ্যাপ্লিকেশনগুলিতে ClientLogin ব্যবহার করার বিষয়ে আরও তথ্যের জন্য, Google Data API ক্লায়েন্ট লাইব্রেরির সাথে ClientLogin ব্যবহার করা দেখুন।

উপরে ফিরে যাও

সাইট ফিড

সাইট ফিডটি ব্যবহারকারীর মালিকানাধীন বা দেখার অনুমতি আছে এমন Google সাইটগুলি তালিকাভুক্ত করতে ব্যবহার করা যেতে পারে৷ এটি একটি বিদ্যমান সাইটের নাম পরিবর্তন করতেও ব্যবহার করা যেতে পারে। G Suite ডোমেনের জন্য, এটি একটি সম্পূর্ণ সাইট তৈরি এবং/অথবা অনুলিপি করতেও ব্যবহার করা যেতে পারে।

তালিকাভুক্ত সাইট

সাইট ফিড জিজ্ঞাসা করতে, সাইট ফিড URL-এ একটি HTTP GET পাঠান:

https://sites.google.com/feeds/site/site/

জাভা ক্লায়েন্টে, আপনি সাইট ফিডের সাথে কাজ করতে SiteFeed এবং SiteEntry ক্লাস ব্যবহার করতে পারেন:

public String getSiteFeedUrl() {
  String domain = "site";  // OR if the Site is hosted on G Suite, your domain (e.g. example.com)
  return "https://sites.google.com/feeds/site/" + domain + "/";
}

public void getSiteFeed() throws IOException, ServiceException {
  SiteFeed siteFeed = client.getFeed(new URL(getSiteFeedUrl()), SiteFeed.class);
  for (SiteEntry entry : siteFeed.getEntries()){
    System.out.println("title: " + entry.getTitle().getPlainText());
    System.out.println("site name: " + entry.getSiteName().getValue());
    System.out.println("theme: " + entry.getTheme().getValue());
    System.out.println("");
  }
}

উপরের স্নিপেটটি সাইটের শিরোনাম, সাইটের নাম এবং সাইটের থিম প্রিন্ট করে। অন্যান্য গেটাররা ফিডে অতিরিক্ত বৈশিষ্ট্যগুলি অ্যাক্সেস করার জন্য উপলব্ধ।

নতুন সাইট তৈরি করা হচ্ছে

দ্রষ্টব্য : এই বৈশিষ্ট্যটি শুধুমাত্র G Suite ডোমেনে উপলব্ধ।

একটি নতুন SiteEntry তৈরি করে এবং সাইটের ফিডে ক্লায়েন্টের insert() পদ্ধতিতে কল করে নতুন সাইটের ব্যবস্থা করা যেতে পারে।

এই উদাহরণটি থিম 'স্লেট' (ঐচ্ছিক সেটিং) সহ একটি একেবারে নতুন সাইট তৈরি করে এবং সাইটের নাম (প্রয়োজনীয়) এবং বিবরণ (ঐচ্ছিক):

public String getSiteFeedUrl() {
  String domain = "example.com";
  return "https://sites.google.com/feeds/site/" + domain + "/";
}

public SiteEntry createSite(String title, String summary, String theme, String tag)
    throws MalformedURLException, IOException, ServiceException {
  SiteEntry entry = new SiteEntry();
  entry.setTitle(new PlainTextConstruct(title));
  entry.setSummary(new PlainTextConstruct(summary));

  Theme tt = new Theme();
  tt.setValue(theme);
  entry.setTheme(tt);

  entry.getCategories().add(new Category(TagCategory.Scheme.TAG, tag, null));

  return client.insert(new URL(getSiteFeedUrl()), entry);
}

SiteEntry newSiteEntry = createSite("My Site Title", "summary for site", "slate", "tag");

উপরের অনুরোধটি G Suite ডোমেইন example.com অধীনে একটি নতুন সাইট তৈরি করবে। সুতরাং, সাইটের URL হবে https://sites.google.com/a/example.com/my-site-title৷

যদি সাইটটি সফলভাবে তৈরি করা হয়, সার্ভারটি একটি SiteEntry অবজেক্টের সাথে প্রতিক্রিয়া জানাবে, সার্ভার দ্বারা যোগ করা উপাদানগুলির সাথে জনবহুল: সাইটের একটি লিঙ্ক, সাইটের acl ফিডের একটি লিঙ্ক, সাইটের নাম, শিরোনাম, সারাংশ এবং আরও অনেক কিছু .

একটি সাইট কপি করা

দ্রষ্টব্য : এই বৈশিষ্ট্যটি শুধুমাত্র G Suite ডোমেনে উপলব্ধ।

একটি সাইট কপি করা একটি নতুন সাইট তৈরি করার অনুরূপ। পার্থক্য হল যে আপনাকে আপনার নতুন SiteEntry এ একটি লিঙ্ক সেট করতে হবে যাতে ডুপ্লিকেট করার জন্য সাইটের স্ব-লিঙ্ক অন্তর্ভুক্ত থাকে। নতুন সাইট তৈরি করা বিভাগে তৈরি সাইটটিকে নকল করার একটি উদাহরণ এখানে দেওয়া হল:

public SiteEntry copySite(String title, String summary, String sourceHref)
    throws MalformedURLException, IOException, ServiceException {
  SiteEntry entry = new SiteEntry();
  entry.setTitle(new PlainTextConstruct(title));
  entry.setSummary(new PlainTextConstruct(summary));
  entry.addLink(SitesLink.Rel.SOURCE, Link.Type.ATOM, sourceHref);

  return client.insert(new URL(getSiteFeedUrl()), entry);
}

String sourceHref = newSiteEntry.getLink(SitesLink.Rel.SOURCE, Link.Type.ATOM).getHref();
SiteEntry myTwin = copySite("Duplicate Site", "A copy", sourceHref);

গুরুত্বপূর্ণ পয়েন্ট:

  • শুধুমাত্র প্রমাণীকৃত ব্যবহারকারীর মালিকানাধীন সাইট এবং সাইট টেমপ্লেট কপি করা যাবে।
  • একটি সাইট টেমপ্লেটও অনুলিপি করা যেতে পারে। একটি সাইট হল একটি টেমপ্লেট যদি "এই সাইটটিকে একটি টেমপ্লেট হিসাবে প্রকাশ করুন" সেটিংসটি Google Sites সেটিংস পৃষ্ঠায় চেক করা থাকে৷
  • আপনি অন্য ডোমেন থেকে একটি সাইট অনুলিপি করতে পারেন, যদি আপনি উৎস সাইটে মালিক হিসাবে তালিকাভুক্ত হন।

একটি সাইটের মেটাডেটা আপডেট করা হচ্ছে

একটি সাইটের নাম পরিবর্তন করতে, এর থিম, বিভাগ ট্যাগ বা সারাংশ পরিবর্তন করতে, আপনাকে প্রথমে প্রশ্নে থাকা সাইটটি সম্বলিত SiteEntry আনতে হবে, এক বা একাধিক বৈশিষ্ট্য পরিবর্তন করতে হবে এবং তারপর SiteEntry এর update() পদ্ধতিতে কল করতে হবে৷ এই উদাহরণটি পূর্ববর্তী সাইটের থিম পরিবর্তন করে এবং সাইটের নাম পরিবর্তন করে:

myTwin.setTitle(new PlainTextConstruct("better-title"));

Theme theme = myTwin.getTheme();
theme.setValue('iceberg');
myTwin.setTheme(theme);

myTwin.getCategories().add(new Category(TagCategory.Scheme.TAG, "newTag", null));

SiteEntry updatedSiteEntry = myTwin.update();

System.out.println(updatedSiteEntry.getTitle().getPlainText();

ওয়েব ঠিকানা ম্যাপিং

ওয়েব ঠিকানা ম্যাপিংগুলি সাইট ব্যবহারকারীদের তাদের নিজস্ব ডোমেনগুলিকে একটি Google সাইটে ম্যাপ করতে সক্ষম করে৷ উদাহরণস্বরূপ, http://sites.google.com/a/domain.com/mysite এর পরিবর্তে http://www.mydomainsite.com ব্যবহার করা যেতে পারে। আপনার সাইটটি কোথায় হোস্ট করা হয়েছে তার উপর নির্ভর করে, আপনি ম্যানুয়ালি একটি সাইটের ওয়েব ঠিকানা ম্যাপিং পরিবর্তন করতে পারেন৷ আরও তথ্যের জন্য আমাদের সহায়তা কেন্দ্র নিবন্ধ দেখুন।

একটি সাইটের ওয়েব ঠিকানা ম্যাপিং আনা

একটি সাইটের জন্য ওয়েব ঠিকানা ম্যাপিং ফেরত দিতে, with-mappings=true প্যারামিটার সহ সাইট এন্ট্রি/ফিড আনুন:

SiteQuery query = new SiteQuery(new URL("https://sites.google.com/feeds/site/siteName"));
query.setWithMappings(true);

SiteFeed feed = service.getFeed(query, SiteFeed.class);
for (SiteEntry entry : feed.getEntries()) {
  System.out.println("Mappings for '" + entry.getSiteName().getValue() + "':");
  for (Link link : entry.getWebAddressMappingLinks()) {
    System.out.println("  " + link.getHref());
  }
}

বিদ্যমান ম্যাপিংগুলি rel='webAddressMapping'-এর সাথে link হিসাবে দেখাবে৷ উদাহরণস্বরূপ, উপরের উদাহরণে তিনটি webAddressMapping আছে যা http://sites.google.com/site/ myOtherTestSite সাইটে নির্দেশ করে।

ওয়েব ঠিকানা ম্যাপিং পরিবর্তন করা হচ্ছে

দ্রষ্টব্য : ওয়েব ঠিকানা ম্যাপিংয়ের সাথে কাজ করার সময় সমস্ত GET/POST/PUT ক্রিয়াকলাপগুলিকে with-mappings=true প্যারামিটার উল্লেখ করা উচিত। যদি প্যারামিটারটি অনুপস্থিত থাকে, তাহলে webAddressMapping সাইট এন্ট্রিগুলিতে (GET) ফেরত দেওয়া হবে না বা একটি এন্ট্রি থেকে (PUT) ম্যাপিং আপডেট/মুছে ফেলার সময় বিবেচনা করা হবে না।

একটি ম্যাপিং যোগ করতে, আপডেট করতে বা মুছে ফেলতে, নতুন সাইট তৈরি করার সময় বা সাইটের মেটাডেটা আপডেট করার সময় এই ধরনের লিঙ্ক নির্দিষ্ট করুন, পরিবর্তন করুন বা সরান৷ with-mappings=true প্যারামিটার অবশ্যই সাইট ফিড URI-তে অন্তর্ভুক্ত করতে হবে। দ্রষ্টব্য: ঠিকানা ম্যাপিং আপডেট করার জন্য, আপনাকে একটি সাইট অ্যাডমিন হতে হবে, বা একটি G Suite হোস্ট করা সাইটের ক্ষেত্রে একজন ডোমেন প্রশাসক হতে হবে।

উদাহরণস্বরূপ, নীচের অনুরোধটি http://www.mysitemapping.com ম্যাপিংকে http://www.my-new-sitemapping.com এ আপডেট করে এবং লিঙ্কটি ছেড়ে দিয়ে http://www.mysitemapping2.com সরিয়ে দেয় প্রবেশের:

SiteEntry entry = client.getEntry(new URL("https://sites.google.com/feeds/site/site/siteName?with-mappings=true"), SiteEntry.class);

// Modify mappings (remove all mappings, add some of them again, add modified mappings)
entry.removeLinks(SitesLink.Rel.WEBADDRESSMAPPING, Link.Type.HTML);
entry.addLink(SitesLink.Rel.WEBADDRESSMAPPING, Link.Type.HTML, "http://www.my-new-sitemapping.com");

// Update the entry with the mappings.
entry.update();

দ্রষ্টব্য, একটি সাইট তৈরি/কপি করার সময় ওয়েব ঠিকানা ম্যাপিংগুলিও নির্দিষ্ট করা যেতে পারে।

উপরে ফিরে যাও

কার্যকলাপ ফিড

আপনি অ্যাক্টিভিটি ফিড এনে একটি সাইটের সাম্প্রতিক কার্যকলাপ (পরিবর্তন) আনতে পারেন। অ্যাক্টিভিটি ফিডে প্রতিটি এন্ট্রিতে সাইটে করা পরিবর্তনের তথ্য থাকে।

কার্যকলাপ ফিড জিজ্ঞাসা করতে, কার্যকলাপ ফিড URL এ একটি HTTP GET পাঠান:

https://sites.google.com/feeds/activity/site/siteName

জাভা ক্লায়েন্টে, ActivityEntry অবজেক্ট ফেরত দিতে ActivityFeed ক্লাস ব্যবহার করুন:

public String buildActivityFeedUrl() {
  String domain = "site";  // OR if the Site is hosted on G Suite, your domain (e.g. example.com)
  String siteName = "mySite";
  return "https://sites.google.com/feeds/activity/" + domain + "/" + siteName + "/";
}

public void getActivityFeed() throws IOException, ServiceException {
  ActivityFeed activityFeed = client.getFeed(new URL(buildActivityFeedUrl()), ActivityFeed.class);
  for (BaseActivityEntry<?> entry : activityFeed.getEntries()){
    System.out.println(entry.getSummary().getPlainText());
    System.out.println(" revisions link: " + entry.getRevisionLink().getHref());
  }
}

দ্রষ্টব্য : এই ফিডে অ্যাক্সেসের জন্য প্রয়োজন যে আপনি একজন সহযোগী বা সাইটের মালিক। আপনার ক্লায়েন্টকে অবশ্যই একটি AuthSub, OAuth, বা ClientLogin টোকেন ব্যবহার করে প্রমাণীকরণ করতে হবে। সাইট পরিষেবায় প্রমাণীকরণ দেখুন।

উপরে ফিরে যাও

রিভিশন ফিড

যেকোনো বিষয়বস্তুর এন্ট্রির জন্য পুনর্বিবেচনার ইতিহাস আনতে, এন্ট্রির রিভিশন লিঙ্কে একটি HTTP GET পাঠান:

https://sites.google.com/feeds/revision/site/siteName/CONTENT_ENTRY_ID

এই উদাহরণটি কন্টেন্ট ফিডকে জিজ্ঞাসা করে এবং তারপর প্রথম কন্টেন্ট এন্ট্রির জন্য রিভিশন ফিড নিয়ে আসে:

ContentFeed contentFeed = client.getFeed(new URL(buildContentFeedUrl()), ContentFeed.class);
URL revisionFeedUrl = new URL(contentFeed.getEntries().get(0).getRevisionLink().getHref()); // use first entry

public void getRevisionFeed(String revisionFeedUrl) throws IOException, ServiceException {
  RevisionFeed revisionFeed = client.getFeed(revisionFeedUrl, RevisionFeed.class);
  for (BaseContentEntry<?> entry : revisionFeed.getEntries()){
    System.out.println(entry.getTitle().getPlainText());
    System.out.println(" updated: " + entry.getUpdated().toUiString() + " by " +
        entry.getAuthors().get(0).getEmail());
    System.out.println(" revision #: " + entry.getRevision().getValue());
  }
}

দ্রষ্টব্য: এই ফিডে অ্যাক্সেসের জন্য প্রয়োজন যে আপনি একজন সহযোগী বা সাইটের মালিক। আপনার ক্লায়েন্টকে অবশ্যই একটি AuthSub, OAuth, বা ClientLogin টোকেন ব্যবহার করে প্রমাণীকরণ করতে হবে। সাইট পরিষেবায় প্রমাণীকরণ দেখুন।

উপরে ফিরে যাও

বিষয়বস্তু ফিড

বিষয়বস্তু ফিড পুনরুদ্ধার করা হচ্ছে

বিষয়বস্তু ফিড একটি সাইটের সাম্প্রতিক বিষয়বস্তু তালিকাভুক্ত করে। কন্টেন্ট ফিড URL-এ একটি HTTP GET পাঠিয়ে এটি অ্যাক্সেস করা যেতে পারে:

https://sites.google.com/feeds/content/site/siteName
ফিড প্যারামিটার বর্ণনা
site " site " বা আপনার G Suite হোস্ট করা ডোমেনের ডোমেন (যেমন example.com )।
siteName আপনার সাইটের ওয়েবস্পেস নাম; সাইটের URL এ পাওয়া যায় (যেমন mySite )।

কন্টেন্ট ফিড আনার উদাহরণ:

public String buildContentFeedUrl() {
  String domain = "site";  // OR if the Site is hosted on G Suite, your domain (e.g. example.com)
  String siteName = "mySite";
  return "https://sites.google.com/feeds/content/" + domain + "/" + siteName + "/";
}

ContentFeed contentFeed = client.getFeed(new URL(buildContentFeedUrl()), ContentFeed.class);

ফলস্বরূপ contentFeed হল একটি ContentFeed অবজেক্ট যাতে সার্ভার থেকে প্রতিক্রিয়া পাওয়া যায়। contentFeed প্রতিটি এন্ট্রি ব্যবহারকারীর সাইটের মধ্যে একটি ভিন্ন পৃষ্ঠা বা আইটেম উপস্থাপন করে। ContentFeed বিভিন্ন ধরনের অবজেক্ট থাকবে, সবগুলোই BaseContentEntry থেকে উত্তরাধিকারসূত্রে প্রাপ্ত: ListItemEntry , ListPageEntry , AttachmentEntry , WebAttachmentEntry , FileCabinetPageEntry , AnnouncementsPageEntry , AnnouncementEntry , WebPageEntry CommentEntry

এখানে একটি ContentFeed এ বিভিন্ন ধরনের এন্ট্রি তালিকাভুক্ত করার একটি উদাহরণ রয়েছে। প্রতিটি ধরনের এন্ট্রিতে বিভিন্ন বৈশিষ্ট্য রয়েছে, কিন্তু সবগুলো এখানে মুদ্রিত হয় না।

public String getContentBlob(BaseContentEntry<?> entry) {
 return ((XhtmlTextConstruct) entry.getTextContent().getContent()).getXhtml().getBlob();
}

// Extracts an entry's numeric ID.
private String getEntryId(String selfLink) {
  return selfLink.substring(selfLink.lastIndexOf("/") + 1);
}

public void printContentEntries(ContentFeed contentFeed) {
  System.out.println("Listing all WebPageEntry:");
  for (WebPageEntry entry : contentFeed.getEntries(WebPageEntry.class)) {
    System.out.println(" title: " + entry.getTitle().getPlainText());
    System.out.println(" id: " + getEntryId(entry));
    if (entry.getParentLink() != null) {
      System.out.println(" parent id: " + getEntryId(entry.getParentLink().getHref()));
    }
    System.out.println(" author: " + entry.getAuthors().get(0).getEmail());
    System.out.println(" content: " + getContentBlob(entry));
  }

  System.out.println("Listing all ListPageEntry:");
  for (ListPageEntry entry : contentFeed.getEntries(ListPageEntry.class)) {
    System.out.println(" title: " + entry.getTitle().getPlainText());
    System.out.println(" id: " + getEntryId(entry));
    for (Column col : entry.getData().getColumns()) {
      System.out.print(" [" + col.getIndex() + "] " + col.getName() + "\t");
    }
  }

  for (ListItemEntry entry : contentFeed.getEntries(ListItemEntry.class)) {
    for (Field field : entry.getFields()) {
      System.out.print(" [" + field.getIndex() + "] " + field.getValue() + "\t");
    }
    System.out.println("\n");
  }

  System.out.println("Listing all FileCabinetPageEntry:");
  for (FileCabinetPageEntry entry : contentFeed.getEntries(FileCabinetPageEntry.class)) {
    System.out.println(" title: " + entry.getTitle().getPlainText());
    System.out.println(" id: " + getEntryId(entry));
    System.out.println(" content: " + getContentBlob(entry));
  }

  System.out.println("Listing all CommentEntry:");
  for (CommentEntry entry : contentFeed.getEntries(CommentEntry.class)) {
    System.out.println(" in-reply-to: " + entry.getInReplyTo().toString());
    System.out.println(" content: " + getContentBlob(entry));
  }

  System.out.println("Listing all AnnouncementsPageEntry:");
  for (AnnouncementsPageEntry entry : contentFeed.getEntries(AnnouncementsPageEntry.class)) {
    System.out.println(" title: " + entry.getTitle().getPlainText());
    System.out.println(" id: " + getEntryId(entry));
    System.out.println(" content: " + getContentBlob(entry));
  }

  System.out.println("Listing all AnnouncementEntry:");
  for (AnnouncementEntry entry : contentFeed.getEntries(AnnouncementEntry.class)) {
    System.out.println(" title: " + entry.getTitle().getPlainText());
    System.out.println(" id: " + getEntryId(entry));
    if (entry.getParentLink() != null) {
      System.out.println(" parent id: " + getEntryId(entry.getParentLink().getHref()));
    }
    System.out.println(" draft?: " + entry.isDraft());
    System.out.println(" content: " + getContentBlob(entry));
  }

  System.out.println("Listing all AttachmentEntry:");
  for (AttachmentEntry entry : contentFeed.getEntries(AttachmentEntry.class)) {
    System.out.println(" title: " + entry.getTitle().getPlainText());
    System.out.println(" id: " + getEntryId(entry));
    if (entry.getParentLink() != null) {
      System.out.println(" parent id: " + getEntryId(entry.getParentLink().getHref()));
    }
    if (entry.getSummary() != null) {
      System.out.println(" description: " + entry.getSummary().getPlainText());
    }
    System.out.println(" revision: " + entry.getRevision().getValue());
    MediaContent content = (MediaContent) entry.getContent();
    System.out.println(" src: " + content.getUri());
    System.out.println(" content type: " + content.getMimeType().getMediaType());
  }

  System.out.println("Listing all WebAttachmentEntry:");
  for (WebAttachmentEntry entry : contentFeed.getEntries(WebAttachmentEntry.class)) {
    System.out.println(" title: " + entry.getTitle().getPlainText());
    System.out.println(" id: " + getEntryId(entry));
    if (entry.getParentLink() != null) {
      System.out.println(" parent id: " + getEntryId(entry.getParentLink().getHref()));
    }
    if (entry.getSummary() != null) {
      System.out.println(" description: " + entry.getSummary().getPlainText());
    }
    System.out.println(" src: " + ((MediaContent) entry.getContent()).getUri());
  }
}

দ্রষ্টব্য: এই ফিডের প্রমাণীকরণের প্রয়োজন হতে পারে বা নাও হতে পারে; সাইটের শেয়ারিং অনুমতির উপর নির্ভর করে। সাইটটি অ-পাবলিক হলে, আপনার ক্লায়েন্টকে অবশ্যই একটি AuthSub, OAuth, বা ClientLogin টোকেন ব্যবহার করে প্রমাণীকরণ করতে হবে। সাইট পরিষেবায় প্রমাণীকরণ দেখুন।

বিষয়বস্তু ফিড ক্যোয়ারী উদাহরণ

আপনি কিছু স্ট্যান্ডার্ড Google ডেটা API ক্যোয়ারী প্যারামিটার এবং ক্লাসিক সাইট API-এর জন্য নির্দিষ্ট কিছু ব্যবহার করে সামগ্রী ফিড অনুসন্ধান করতে পারেন। আরো বিস্তারিত তথ্য এবং সমর্থিত পরামিতিগুলির একটি সম্পূর্ণ তালিকার জন্য, রেফারেন্স গাইড দেখুন।

দ্রষ্টব্য : এই বিভাগের উদাহরণগুলি কন্টেন্ট ফিড পুনরুদ্ধার করতে buildContentFeedUrl() পদ্ধতি ব্যবহার করে।

নির্দিষ্ট এন্ট্রি ধরনের পুনরুদ্ধার করা হচ্ছে

শুধুমাত্র একটি নির্দিষ্ট ধরনের এন্ট্রি আনতে, kind প্যারামিটার ব্যবহার করুন। এই উদাহরণটি শুধুমাত্র attachment এন্ট্রি প্রদান করে:

ContentQuery query = new ContentQuery(new URL(buildContentFeedUrl()));
query.setKind("webpage");
ContentFeed contentFeed = client.getFeed(query, ContentFeed.class);
for (AttachmentEntry entry : contentFeed.getEntries(AttachmentEntry.class)) {
  System.out.println(entry.getTitle().getPlainText());
}

একাধিক এন্ট্রি টাইপ ফেরত দিতে, প্রতিটি kind ',' দিয়ে আলাদা করুন। এই উদাহরণটি filecabinet এবং listpage এন্ট্রি প্রদান করে:

URL url = new URL(buildContentFeedUrl() + "?kind=filecabinet,listpage");
ContentFeed contentFeed = client.getFeed(url, ContentFeed.class);
for (FileCabinetPageEntry entry : contentFeed.getEntries(FileCabinetPageEntry.class)) {
  System.out.println(" title: " + entry.getTitle().getPlainText());
}
for (ListPageEntry entry : contentFeed.getEntries(ListPageEntry.class)) {
  System.out.println(" title: " + entry.getTitle().getPlainText());
}

পথ দ্বারা একটি পৃষ্ঠা পুনরুদ্ধার করা হচ্ছে

আপনি যদি Google সাইটের মধ্যে একটি পৃষ্ঠার আপেক্ষিক পথ জানেন, আপনি সেই নির্দিষ্ট পৃষ্ঠাটি আনতে path প্যারামিটার ব্যবহার করতে পারেন। এই উদাহরণটি http://sites.google.com/ site / siteName /path/to/the/page এ অবস্থিত পৃষ্ঠাটি ফিরিয়ে দেবে:

ContentQuery query = new ContentQuery(new URL(buildContentFeedUrl()));
query.setPath("/path/to/the/page");
ContentFeed contentFeed = client.getFeed(query, ContentFeed.class);
for (BaseContentEntry<?> entry : contentFeed.getEntries()) {
  System.out.println(" title: " + entry.getTitle().getPlainText());
}

একটি মূল পৃষ্ঠার অধীনে সমস্ত এন্ট্রি পুনরুদ্ধার করা হচ্ছে

আপনি যদি একটি পৃষ্ঠার বিষয়বস্তু এন্ট্রি আইডি জানেন (যেমন নীচের উদাহরণে "1234567890"), আপনি এর সমস্ত চাইল্ড এন্ট্রি (যদি থাকে) আনার জন্য parent প্যারামিটার ব্যবহার করতে পারেন:

ContentQuery query = new ContentQuery(new URL(buildContentFeedUrl()));
query.setParent("1234567890");
ContentFeed contentFeed = client.getFeed(query, ContentFeed.class);

অতিরিক্ত প্যারামিটারের জন্য, রেফারেন্স গাইড দেখুন।

উপরে ফিরে যাও



সামগ্রী তৈরি করা

দ্রষ্টব্য: একটি সাইটের জন্য সামগ্রী তৈরি করার আগে, নিশ্চিত করুন যে আপনি ক্লায়েন্টে আপনার সাইট সেট করেছেন।
client.site = "siteName";

কন্টেন্ট ফিডে একটি HTTP POST পাঠিয়ে নতুন কন্টেন্ট (ওয়েবপেজ, লিস্টপেজ, ফাইল ক্যাবিনেট পেজ, অ্যানাউন্সমেন্ট পেজ ইত্যাদি) তৈরি করা যেতে পারে:

https://sites.google.com/feeds/content/site/siteName

সমর্থন নোড প্রকারের একটি তালিকার জন্য, রেফারেন্স গাইডে kind প্যারামিটার দেখুন।

নতুন আইটেম/পৃষ্ঠা তৈরি করা

এই উদাহরণটি সাইটের শীর্ষ-স্তরের অধীনে একটি নতুন webpage তৈরি করে, পৃষ্ঠার মূল অংশের জন্য কিছু XHTML অন্তর্ভুক্ত করে এবং শিরোনামটিকে 'নতুন ওয়েবপেজ শিরোনাম'-এ সেট করে:

private void setContentBlob(BaseContentEntry<?> entry, String pageContent) {
  XmlBlob xml = new XmlBlob();
  xml.setBlob(pageContent);
  entry.setContent(new XhtmlTextConstruct(xml));
}

public WebPageEntry createWebPage(String title, String content)
    throws MalformedURLException, IOException, ServiceException {
  WebPageEntry entry = new WebPageEntry();
  entry.setTitle(new PlainTextConstruct(title));

  setContentBlob(entry, content); // Entry's HTML content

  return client.insert(new URL(buildContentFeedUrl()), entry);
}

WebPageEntry createdEntry = createWebPage("New Webpage Title", "<b>HTML content</b>");
System.out.println("Created! View at " + createdEntry.getHtmlLink().getHref());

অনুরোধ সফল হলে, createdEntry সার্ভারে তৈরি করা এন্ট্রির একটি অনুলিপি ধারণ করবে।

কাস্টম URL পাথের অধীনে আইটেম/পৃষ্ঠা তৈরি করা

ডিফল্টরূপে, আগের উদাহরণটি URL http://sites.google.com/ site / siteName /new-webpage-title অধীনে তৈরি করা হবে এবং 'নতুন ওয়েবপৃষ্ঠা শিরোনাম'-এর একটি পৃষ্ঠা শিরোনাম থাকবে। অর্থাৎ, <atom:title> URL-এর জন্য new-webpage-title এ স্বাভাবিক করা হয়েছে। একটি পৃষ্ঠার URL পাথ কাস্টমাইজ করতে, আপনি <sites:pageName> উপাদান সেট করতে পারেন।

এই উদাহরণটি 'ফাইল স্টোরেজ' শিরোনাম সহ একটি নতুন filecabinet পৃষ্ঠা তৈরি করে, কিন্তু URL http://sites.google.com/ site / siteName /files ( http://sites.google.com/ site / siteName /file-storage এর পরিবর্তে) এর অধীনে পৃষ্ঠা তৈরি করে http://sites.google.com/ site / siteName /file-storage ) <sites:pageName> উপাদান নির্দিষ্ট করে।

public FileCabinetPageEntry createFileCabinetPage(String title, String content, String customPageName)
    throws MalformedURLException, IOException, ServiceException {
  FileCabinetPageEntry entry = new FileCabinetPageEntry();
  entry.setTitle(new PlainTextConstruct(title));

  setContentBlob(entry, content); // Entry's HTML content

  entry.setPageName(new PageName(customPageName)); // Upload to a custom page path

  return client.insert(new URL(buildContentFeedUrl()), entry);
}

FileCabinetPageEntry createdEntry = createFileCabinetPage("File Storage", "<b>HTML content</b>", "files");
System.out.println("Created! View at " + createdEntry.getHtmlLink().getHref());

সার্ভার একটি পৃষ্ঠার URL পাথ নামকরণের জন্য নিম্নলিখিত অগ্রাধিকার নিয়ম ব্যবহার করে:

  1. <sites:pageName> , যদি উপস্থিত থাকে। az, AZ, 0-9, -, _ সন্তুষ্ট করতে হবে।
  2. <atom:title> , pageName উপস্থিত না থাকলে অবশ্যই শূন্য হবে না। সাধারণীকরণ হল হোয়াইটস্পেসকে '-' এ ছাঁটাই করা এবং az, AZ, 0-9, -, _ এর সাথে মেলে না এমন অক্ষরগুলি সরিয়ে ফেলা।

সাবপেজ তৈরি করা হচ্ছে

একটি অভিভাবক পৃষ্ঠার অধীনে সাবপেজ (শিশু) তৈরি করতে, আপনাকে অবশ্যই এন্ট্রিতে মূল লিঙ্ক সেট করতে হবে৷ প্যারেন্ট নোডের সেল্ফ লিঙ্কে লিঙ্কের href অ্যাট্রিবিউট।

public AnnouncementEntry postAnnouncement(String title, String content, AnnouncementsPageEntry parentPage)
    throws MalformedURLException, IOException, ServiceException {
  AnnouncementEntry entry = new AnnouncementEntry();
  entry.setTitle(new PlainTextConstruct(title));

  setContentBlob(entry, content); // Entry's HTML content

  // Set the entry's parent link to create the announcement under that page.
  entry.addLink(SitesLink.Rel.PARENT, Link.Type.ATOM, parentPage.getSelfLink().getHref());

  return client.insert(new URL(buildContentFeedUrl()), entry);
}

ContentFeed contentFeed = client.getFeed(new URL(buildContentFeedUrl() + "?kind=announcementspage"), ContentFeed.class);

AnnouncementEntry createdEntry = postAnnouncement("Party!!", "My place, this weekend", contentFeed.getEntries().get(0));
System.out.println("New post by " + createdEntry.getAuthors().get(0).getName());

উপরের উদাহরণটি ব্যবহারকারীর কন্টেন্ট ফিডে পাওয়া প্রথম ঘোষণা পৃষ্ঠার অধীনে একটি নতুন announcement তৈরি করে। ঘোষণার শিরোনাম সেট করা হয়েছে "পার্টি!!" এবং বিষয়বস্তু "আমার জায়গা, এই সপ্তাহান্তে"।

পৃষ্ঠা টেমপ্লেট

পৃষ্ঠা টেমপ্লেট তৈরি করা হচ্ছে

একটি পৃষ্ঠা টেমপ্লেট তৈরি করার প্রক্রিয়াটি নতুন আইটেম/পৃষ্ঠাগুলি তৈরি করা এবং সাবপেজ তৈরি করার মতোই। পার্থক্য হল 'http://schemas.google.com/g/2005#template'-এ সেট করা শব্দ এবং লেবেল সহ category যোগ করা ' এবং 'টেমপ্লেট', যথাক্রমে।

এই উদাহরণটি একটি নতুন webpage টেমপ্লেট তৈরি করে।

// The template webpage entry.
WebPageEntry entry = new WebPageEntry();

// Set title and content.
entry.setTitle(new PlainTextConstruct("Page template title"));
XmlBlob xml = new XmlBlob();
xml.setBlob("Content for page template");
entry.setContent(new XhtmlTextConstruct(xml));

// Set the template category
Category TEMPLATE_CATEGORY = new Category(TemplateCategory.Scheme.LABELS,
    TemplateCategory.Term.TEMPLATE, TemplateCategory.Label.TEMPLATE);
entry.getCategories().add(TEMPLATE_CATEGORY);

// Insert the template webpage entry.
WebPageEntry createdEntry = client.insert(new URL("https://sites.google.com/feeds/content/site/siteName"), entry);

একটি টেমপ্লেট থেকে পৃষ্ঠা তৈরি করা

পৃষ্ঠা টেমপ্লেট তৈরি করার মতোই, আপনি একটি পৃষ্ঠা টেমপ্লেটের স্ব-লিঙ্কের দিকে নির্দেশ করে rel='http://schemas.google.com/sites/2008#template' সহ একটি <link> অন্তর্ভুক্ত করে একটি টেমপ্লেট থেকে একটি নতুন পৃষ্ঠা তৈরি করতে পারেন .

এই উদাহরণটি একটি নতুন filecabinet টেমপ্লেট তৈরি করে এবং তারপর সেই টেমপ্লেট থেকে একটি নতুন filecabinet পৃষ্ঠা তৈরি করে।

URL feedUrl = new URL("https://sites.google.com/feeds/content/site/siteName");

// 1. Create file cabinet page template
FileCabinetPageEntry inputTemplateEntry = new FileCabinetPageEntry();
inputTemplateEntry.setTitle(new PlainTextConstruct("File cabinet page template title"));
XmlBlob xml = new XmlBlob();
xml.setBlob("Content for page template");
inputTemplateEntry.setContent(new XhtmlTextConstruct(xml));

// Set the template category
Category TEMPLATE_CATEGORY = new Category(TemplateCategory.Scheme.LABELS,
    TemplateCategory.Term.TEMPLATE, TemplateCategory.Label.TEMPLATE);
inputTemplateEntry.getCategories().add(TEMPLATE_CATEGORY);

// 2. Create file cabinet page template instance
FileCabinetPageEntry templateEntry = client.insert(feedUrl, inputTemplateEntry);

// Specify link to the page template
FileCabinetPageEntry templateInstanceEntry = new FileCabinetPageEntry();
templateInstanceEntry.setTitle(new PlainTextConstruct("File cabinet template instance"));
templateInstanceEntry.addLink(new Link(SitesLink.Rel.TEMPLATE, Link.Type.ATOM, templateEntry.getSelfLink().getHref()));

FileCabinetPageEntry createdFileCabinetFromTemplate =  client.insert(feedUrl, templateInstanceEntry);

দ্রষ্টব্য : একটি <category> সংজ্ঞায়িত একটি টেমপ্লেট থাকা সত্ত্বেও, আপনার এন্ট্রিতে একটি সহ এখনও প্রয়োজন। এছাড়াও মনে রাখবেন, আপনি যদি একটি <content> উপাদান অন্তর্ভুক্ত করেন, সার্ভার এটি প্রত্যাখ্যান করবে।

ফাইল আপলোড করা হচ্ছে

ঠিক যেমন Google সাইটগুলিতে, API ফাইল ক্যাবিনেট পৃষ্ঠা বা একটি মূল পৃষ্ঠায় সংযুক্তি আপলোড সমর্থন করে৷

অভিভাবকের কাছে একটি সংযুক্তি আপলোড করতে, সামগ্রী ফিড URL-এ একটি HTTP POST অনুরোধ পাঠান:

https://sites.google.com/feeds/content/site/siteName

সমস্ত সংযুক্তি প্রকারগুলি অবশ্যই একটি মূল পৃষ্ঠায় আপলোড করতে হবে৷ অতএব, আপনি AttachmentEntry বা WebAttachmentEntry অবজেক্টে একটি প্যারেন্ট লিঙ্ক সেট করুন যা আপনি আপলোড করার চেষ্টা করছেন। আরও তথ্যের জন্য সাবপেজ তৈরি করা দেখুন।

সংযুক্তি আপলোড হচ্ছে

এই উদাহরণটি ব্যবহারকারীর কন্টেন্ট ফিডে পাওয়া প্রথম FileCabinetPageEntry এ একটি PDF ফাইল আপলোড করে। সংযুক্তিটি 'শুরু করা' শিরোনাম এবং একটি (ঐচ্ছিক) বর্ণনা, 'এইচআর প্যাকেট' দিয়ে তৈরি করা হয়েছে।

MimetypesFileTypeMap mediaTypes = new MimetypesFileTypeMap();
mediaTypes.addMimeTypes("application/msword doc");
mediaTypes.addMimeTypes("application/vnd.ms-excel xls");
mediaTypes.addMimeTypes("application/pdf pdf");
mediaTypes.addMimeTypes("text/richtext rtx");
// ... See a more complete list of mime types in the SitesHelper.java

public AttachmentEntry uploadAttachment(File file, BasePageEntry<?> parentPage,
    String title, String description) throws IOException, ServiceException {
  AttachmentEntry newAttachment = new AttachmentEntry();
  newAttachment.setMediaSource(new MediaFileSource(file, mediaTypes.getContentType(file)));
  newAttachment.setTitle(new PlainTextConstruct(title));
  newAttachment.setSummary(new PlainTextConstruct(description));
  newAttachment.addLink(SitesLink.Rel.PARENT, Link.Type.ATOM, parentPage.getSelfLink().getHref());

  return client.insert(new URL(buildContentFeedUrl()), newAttachment);
}

ContentFeed contentFeed = client.getFeed(new URL(buildContentFeedUrl() + "?kind=filecabinet"), ContentFeed.class);
FileCabinetPageEntry parentPage = contentFeed.getEntries(FileCabinetPageEntry.class).get(0);

AttachmentEntry attachment = uploadAttachment(
    new File("/path/to/your/file.pdf"), parentPage, "Getting Started", "HR packet");
System.out.println("Uploaded!");

আপলোড সফল হলে, সংযুক্তিতে তৈরি সংযুক্তি এন্ট্রির একটি attachment থাকবে।

একটি ফোল্ডারে একটি সংযুক্তি আপলোড করা হচ্ছে৷

একটি FileCabinetPageEntry এ বিদ্যমান ফোল্ডারে একটি সংযুক্তি আপলোড করতে, ফোল্ডারের নামের সাথে সেট করা 'টার্ম' বৈশিষ্ট্য সহ একটি বিভাগ অন্তর্ভুক্ত করুন। উদাহরণস্বরূপ, uploadAttachment() এ এই লাইনটি যোগ করুন :

newAttachment.getCategories().add(new Category("http://schemas.google.com/sites/2008#folder", "FolderName"));

ওয়েব সংযুক্তি

ওয়েব সংযুক্তিগুলি বিশেষ ধরণের সংযুক্তি। মূলত, এগুলি ওয়েবের অন্যান্য ফাইলগুলির লিঙ্ক যা আপনি আপনার ফাইল ক্যাবিনেট তালিকায় যুক্ত করতে পারেন৷ এই বৈশিষ্ট্যটি Google Sites UI-তে 'URL দ্বারা ফাইল যোগ করুন' আপলোড পদ্ধতির অনুরূপ।

দ্রষ্টব্য : ওয়েব সংযুক্তি শুধুমাত্র একটি ফাইল ক্যাবিনেটের অধীনে তৈরি করা যেতে পারে। সেগুলি অন্য ধরনের পেজে আপলোড করা যাবে না।

এই উদাহরণটি ব্যবহারকারীর কন্টেন্ট ফিডে পাওয়া প্রথম FileCabinetPageEntry এর অধীনে একটি WebAttachmentEntry তৈরি করে। এর শিরোনাম এবং (ঐচ্ছিক) বর্ণনা যথাক্রমে 'GoogleLogo' এবং 'nice colors'-এ সেট করা আছে।

public WebAttachmentEntry uploadWebAttachment(String contentUrl, FileCabinetPageEntry filecabinet,
    String title, String description) throws MalformedURLException, IOException, ServiceException {
  MediaContent content = new MediaContent();
  content.setUri(contentUrl);

  WebAttachmentEntry webAttachment = new WebAttachmentEntry();
  webAttachment.setTitle(new PlainTextConstruct(title));
  webAttachment.setSummary(new PlainTextConstruct(description));
  webAttachment.setContent(content);
  webAttachment.addLink(SitesLink.Rel.PARENT, Link.Type.ATOM,
      filecabinet.getSelfLink().getHref());

  return client.insert(new URL(buildContentFeedUrl()), webAttachment);
}

ContentFeed contentFeed = client.getFeed(new URL(buildContentFeedUrl() + "?kind=filecabinet"), ContentFeed.class);
FileCabinetPageEntry parentPage = contentFeed.getEntries(FileCabinetPageEntry.class).get(0);

WebAttachmentEntry webAttachment =
    uploadWebAttachment("http://www.google.com/images/logo.gif", parentPage, "Google's Logo", "nice colors");
System.out.println("Web attachment created!");

POST 'http://www.google.com/images/logo.gif'-এ চিত্রটির দিকে নির্দেশ করে ব্যবহারকারীর ফাইল ক্যাবিনেটে একটি লিঙ্ক তৈরি করে৷

উপরে ফিরে যাও



বিষয়বস্তু আপডেট করা হচ্ছে

একটি পৃষ্ঠার মেটাডেটা এবং/অথবা html বিষয়বস্তু আপডেট করা হচ্ছে

মেটাডেটা (শিরোনাম, পৃষ্ঠার নাম, ইত্যাদি) এবং যেকোন BaseContentEntry টাইপের পৃষ্ঠা বিষয়বস্তু এন্ট্রির update() পদ্ধতি ব্যবহার করে সম্পাদনা করা যেতে পারে। এটি এন্ট্রির edit লিঙ্কে একটি HTTP PUT অনুরোধ পাঠাবে।

নীচে নিম্নলিখিত পরিবর্তনগুলির সাথে একটি ListPageEntry আপডেট করার একটি উদাহরণ রয়েছে:

  • শিরোনামটি 'আপডেট করা শিরোনাম'-এ পরিবর্তন করা হয়েছে
  • পৃষ্ঠার HTML বিষয়বস্তু '<p>আপডেট করা HTML সামগ্রী</p>'-এ আপডেট করা হয়েছে
  • তালিকার প্রথম কলামের শিরোনাম "মালিক" এ পরিবর্তিত হয়েছে
ContentFeed contentFeed = client.getFeed(
    new URL(buildContentFeedUrl() + "?kind=listpage"), ContentFeed.class);
ListPageEntry listPage = contentFeed.getEntries(ListPageEntry.class).get(0); // Update first list page found

// Update title
listPage.setTitle(new PlainTextConstruct("Updated Title"));

// Update HTML content
XmlBlob xml = new XmlBlob();
xml.setBlob("<p>Updated HTML Content</p>");
listPage.setContent(new XhtmlTextConstruct(xml));

// Change first column's heading
listPage.getData().getColumns().get(0).setName("Owner");

// listPage.setPageName(new PageName("new-page-path"));  // You can also change the page's URL path

ListPageEntry updatedEntry = listPage.update();

System.out.println("ListPage updated!");

সংযুক্তি ফাইলের বিষয়বস্তু আপডেট করা হচ্ছে

AttachmentEntry এর জন্য, আপনি এন্ট্রির MediaSource সেট করে এবং তারপর এন্ট্রির updateMedia(boolean) পদ্ধতি ব্যবহার করে বিষয়বস্তু আপডেট করতে পারেন।

এই উদাহরণটি একটি বিদ্যমান সংযুক্তির সামগ্রী আপডেট করবে:

public AttachmentEntry updateFile(AttachmentEntry entry, File newFile)
    throws IOException, ServiceException {
  // See Uploading Attachments for the definition of mediaTypes.
  entry.setMediaSource(new MediaFileSource(newFile, mediaTypes.getContentType(newFile)));
  return entry.updateMedia(false);
}

উদাহরণটি এন্ট্রির edit-media লিঙ্কে একটি HTTP PUT অনুরোধ পাঠায়। ফিরে আসা AttachmentEntry তে আপডেট করা বিষয়বস্তু থাকবে।

সংযুক্তি মেটাডেটা + বিষয়বস্তু আপডেট করা হচ্ছে

আপনি updateMedia() পদ্ধতি ব্যবহার করে একই কলে একটি সংযুক্তির মেটাডেটা এবং এর বিষয়বস্তু আপডেট করতে পারেন। আপনি যদি শুধুমাত্র ফাইলের বিষয়বস্তু, মেটাডেটা বা উভয়ই আপডেট করতে পারেন।

এই উদাহরণটি সংযুক্তির শিরোনামকে 'নতুন শিরোনাম'-এ পরিবর্তন করে, এটির বিবরণ আপডেট করে এবং একটি নতুন .zip ফাইলের সাথে এর ফাইল সামগ্রী প্রতিস্থাপন করে। যেহেতু অনুরোধে নতুন ফাইলের বিষয়বস্তু রয়েছে, তাই AttachmentEntry এর updateMedia() ব্যবহার করা হয়।

public AttachmentEntry updateAttachment(AttachmentEntry entry, File newFile, String newTitle, String newDescription)
    throws IOException, ServiceException  {
  // See Uploading Attachments for the definition of mediaTypes.
  entry.setMediaSource(new MediaFileSource(newFile, mediaTypes.getContentType(newFile)));
  entry.setTitle(new PlainTextConstruct(newTitle));
  entry.setSummary(new PlainTextConstruct(newDescription));

  return entry.updateMedia(true);
}

ContentFeed contentFeed = client.getFeed(
    new URL(buildContentFeedUrl() + "?kind=attachment&max-results=1"), ContentFeed.class);
AttachmentEntry attachment = contentFeed.getEntries(AttachmentEntry.class).get(0); // Update first attachment found

AttachmentEntry updatedAttachment = updateAttachment(attachment, new File("/path/to/file.zip"), "New Title", "better stuff");

উপরে ফিরে যাও



বিষয়বস্তু মুছে ফেলা হচ্ছে

একটি Google সাইট থেকে একটি পৃষ্ঠা বা আইটেম সরাতে, প্রথমে বিষয়বস্তু এন্ট্রি পুনরুদ্ধার করুন, তারপর এন্ট্রির delete() কল করুন।

entry.delete();

আপনি পরিষেবা ক্লাসের delete() পদ্ধতিটি এন্ট্রির edit লিঙ্ক এবং ETag মান পাস করেও ব্যবহার করতে পারেন:

client.delete(entry.getEditLink().getHref(), "*"); // Note: using "*" may overwrite another client's changes.

যদি এন্ট্রিটি সফলভাবে মুছে ফেলা হয়, সার্ভারটি HTTP 200 OK দিয়ে প্রতিক্রিয়া জানায়।

উপরে ফিরে যাও



সংযুক্তি ডাউনলোড করা হচ্ছে

একটি AttachmentEntry ডাউনলোড করতে, এন্ট্রির সামগ্রী src লিঙ্কে একটি HTTP GET অনুরোধ পাঠান৷

এই উদাহরণটি "/path/to/save/file/" ডিরেক্টরিতে ব্যবহারকারীর বিষয়বস্তু ফিডে পাওয়া প্রথম AttachmentEntry ডাউনলোড করে:

private void downloadFile(String downloadUrl, String fullFilePath) throws IOException, ServiceException {
  System.out.println("Downloading file from: " + downloadUrl);

  MediaContent mc = new MediaContent();
  mc.setUri(downloadUrl);
  MediaSource ms = service.getMedia(mc);

  InputStream inStream = null;
  FileOutputStream outStream = null;

  try {
    inStream = ms.getInputStream();
    outStream = new FileOutputStream(fullFilePath);

    int c;
    while ((c = inStream.read()) != -1) {
      outStream.write(c);
    }
  } finally {
    if (inStream != null) {
      inStream.close();
    }
    if (outStream != null) {
      outStream.flush();
      outStream.close();
    }
  }
}

public void downloadAttachment(AttachmentEntry entry, String directory) throws IOException, ServiceException {
  String url = ((OutOfLineContent) entry.getContent()).getUri();
  downloadFile(url, directory + entry.getTitle().getPlainText()); // Use entry's title for the save filename
}

ContentFeed contentFeed = client.getFeed(
    new URL(buildContentFeedUrl() + "?kind=attachment&max-results=1"), ContentFeed.class);

downloadAttachment(contentFeed.getEntries(AttachmentEntry.class).get(0), "/path/to/save/file/");
System.out.println("Downloaded.");

উপরে ফিরে যাও

ACL ফিড

শেয়ারিং পারমিশন (ACLs) এর ওভারভিউ

ACL ফিডে প্রতিটি ACL এন্ট্রি একটি নির্দিষ্ট সত্তা, হয় একজন ব্যবহারকারী, ব্যবহারকারীদের একটি গোষ্ঠী, একটি ডোমেন বা ডিফল্ট অ্যাক্সেস (যা একটি সর্বজনীন সাইট) এর একটি অ্যাক্সেস ভূমিকা উপস্থাপন করে। এন্ট্রিগুলি শুধুমাত্র স্পষ্ট অ্যাক্সেস সহ সত্তাগুলির জন্য দেখানো হবে - Google Sites UI এর শেয়ারিং স্ক্রিনে "অ্যাক্সেস সহ লোক" প্যানেলে প্রতিটি ই-মেইল ঠিকানার জন্য একটি এন্ট্রি দেখানো হবে৷ এইভাবে, ডোমেন অ্যাডমিনদের দেখানো হবে না, যদিও তাদের একটি সাইটে অন্তর্নিহিত অ্যাক্সেস রয়েছে।

ভূমিকা

ভূমিকা উপাদান একটি অ্যাক্সেস স্তর প্রতিনিধিত্ব করে একটি সত্তা থাকতে পারে। gAcl:role উপাদানের চারটি সম্ভাব্য মান রয়েছে:

  • পাঠক — একজন দর্শক (শুধু-পঠন অ্যাক্সেসের সমতুল্য)।
  • লেখক — একজন সহযোগী (পড়া/লেখার অ্যাক্সেসের সমতুল্য)।
  • মালিক — সাধারণত সাইটের প্রশাসক (পড়া/লেখার অ্যাক্সেসের সমতুল্য)।

স্কোপ

স্কোপ উপাদানটি সেই সত্তাকে উপস্থাপন করে যার এই অ্যাক্সেস লেভেল রয়েছে। gAcl:scope উপাদানের চারটি সম্ভাব্য প্রকার রয়েছে:

  • ব্যবহারকারী — একটি ই-মেইল ঠিকানা মান, যেমন "user@gmail.com"।
  • গ্রুপ — একটি Google গ্রুপ ই-মেইল ঠিকানা, যেমন "group@domain.com"।
  • ডোমেইন — একটি G Suite ডোমেন নাম, যেমন "domain.com"।
  • ডিফল্ট — "ডিফল্ট" টাইপের একটি সম্ভাব্য সুযোগ রয়েছে, যার কোনো মান নেই (যেমন <gAcl:scope type="default"> )। এই নির্দিষ্ট স্কোপটি কোনও পাবলিক সাইটে ডিফল্টরূপে যে কোনও ব্যবহারকারীর অ্যাক্সেস নিয়ন্ত্রণ করে।

দ্রষ্টব্য : ডোমেনগুলির একটি gAcl:role মান "মালিক" অ্যাক্সেসে সেট করা থাকতে পারে না, তারা শুধুমাত্র পাঠক বা লেখক হতে পারে৷

ACL ফিড পুনরুদ্ধার করা হচ্ছে

AclFeed এবং AclEntry ক্লাসগুলি একটি সাইটের শেয়ারিং অনুমতি নিয়ন্ত্রণ করতে ব্যবহার করা যেতে পারে এবং পরিষেবা ক্লাসের getFeed() পদ্ধতি ব্যবহার করে আনা যেতে পারে।

নিম্নলিখিত উদাহরণটি একটি প্রদত্ত সাইটের জন্য ACL ফিড নিয়ে আসে এবং প্রতিটি AclEntry এর অনুমতিগুলি প্রিন্ট করে:

public String getAclFeedUrl(String siteName) {
  String domain = "site";  // OR if the Site is hosted on G Suite, your domain (e.g. example.com)
  return "https://sites.google.com/feeds/acl/site/" + domain + "/" + siteName + "/";
}

public void getAclFeed(String siteName) throws IOException, ServiceException {
  AclFeed aclFeed = client.getFeed(new URL(getAclFeedUrl(siteName)), AclFeed.class);
  for (AclEntry entry : aclFeed.getEntries()) {
    System.out.println(entry.getScope().getValue() + " (" + entry.getScope().getType() + ") : " +
                       entry.getRole().getValue());
  }
}

getAclFeed('my-site-name');

আপনি যদি SiteFeed- এ এন্ট্রি নিয়ে কাজ করেন, প্রতিটি SiteEntry তার ACL ফিডের একটি লিঙ্ক থাকে। উদাহরণস্বরূপ, এই স্নিপেটটি একটি SiteEntry এর acl ফিড নিয়ে আসে:

String aclLink = siteEntry.getLink(SitesAclFeedLink.Rel.ACCESS_CONTROL_LIST, Link.Type.ATOM).getHref();
AclFeed aclFeed = client.getFeed(new URL(aclLink), AclFeed.class);

একটি সাইট শেয়ারিং

দ্রষ্টব্য : নির্দিষ্ট কিছু ACL শেয়ার করা তখনই সম্ভব হতে পারে যদি ডোমেনটি এই ধরনের অনুমতি দেওয়ার জন্য কনফিগার করা থাকে (যেমন যদি G Suite ডোমেনের জন্য ডোমেনের বাইরে শেয়ার করা সক্ষম করা থাকে ইত্যাদি)।

API ব্যবহার করে একটি Google সাইট শেয়ার করতে, আপনার ক্লায়েন্টকে একটি নতুন AclEntry তৈরি করতে হবে এবং এটি সার্ভারে POST

এখানে একটি উদাহরণ রয়েছে যা সাইটে reader হিসাবে 'user@example.com' যোগ করে:

AclRole role = new AclRole("reader");
AclScope scope = new AclScope(AclScope.Type.USER, "user@example.com");
AclEntry aclEntry = addAclRole(role, scope, entry);

public AclEntry addAclRole(AclRole role, AclScope scope, SiteEntry siteEntry)
    throws IOException, MalformedURLException, ServiceException  {
  AclEntry aclEntry = new AclEntry();
  aclEntry.setRole(role);
  aclEntry.setScope(scope);

  Link aclLink = siteEntry.getLink(SitesAclFeedLink.Rel.ACCESS_CONTROL_LIST, Link.Type.ATOM);
  return client.insert(new URL(aclLink.getHref()), aclEntry);
}

সম্ভাব্য AclScope এবং AclRoles মানগুলির জন্য ACL ফিড ওভারভিউ বিভাগটি দেখুন।

গ্রুপ এবং ডোমেন লেভেল শেয়ারিং

একটি একক ব্যবহারকারীর সাথে একটি সাইট শেয়ার করার মতো, আপনি একটি Google গ্রুপ বা G Suite ডোমেন জুড়ে একটি সাইট শেয়ার করতে পারেন।

একটি গ্রুপ ইমেল ঠিকানা ভাগ করা:

AclScope scope = new AclScope(AclScope.Type.GROUP, "group_name@example.com");

একটি সম্পূর্ণ ডোমেনে শেয়ার করা:

AclScope scope = new AclScope(AclScope.Type.DOMAIN, "example.com");

ডোমেন লেভেলে শেয়ার করা শুধুমাত্র G Suite ডোমেনের জন্য সমর্থিত, এবং শুধুমাত্র সেই ডোমেনের জন্য যেখানে সাইটটি হোস্ট করা হয়েছে। উদাহরণস্বরূপ http://sites.google.com/a/domain1.com/siteA শুধুমাত্র domain1.com-এর সাথে সমগ্র সাইট শেয়ার করতে পারে, domain2.com নয়। G Suite ডোমেনে হোস্ট করা নয় এমন সাইটগুলি (যেমন http://sites.google.com/site/siteB) ডোমেনগুলিকে আমন্ত্রণ জানাতে পারে না৷

ভাগ করার অনুমতি পরিবর্তন করা হচ্ছে

একটি সাইটে বিদ্যমান শেয়ারিং অনুমতির জন্য, প্রথমে প্রশ্নে AclEntry আনুন, ইচ্ছামতো অনুমতি পরিবর্তন করুন এবং তারপর সার্ভারে ACL পরিবর্তন করতে AclEntry এর update() পদ্ধতিতে কল করুন।

এই উদাহরণটি 'user@example.com'-কে একজন writer (সহযোগী):

aclEntry.setRole(new AclRole("writer"));
AclEntry updatedAclEntry = aclEntry.update();

// Could also use the client's update method
// client.update(new URL(aclEntry.getEditLink().getHref()), aclEntry);
আপডেট করার মাধ্যমে একটি সাইট ভাগ করা বিভাগ থেকে আমাদের পূর্ববর্তী aclEntry উদাহরণটি সংশোধন করে

ETags সম্পর্কে আরও তথ্যের জন্য, Google Data APIs রেফারেন্স গাইড দেখুন।

শেয়ারিং অনুমতি সরানো হচ্ছে

একটি শেয়ারিং অনুমতি অপসারণ করতে, প্রথমে AclEntry পুনরুদ্ধার করুন, তারপর এটির delete() পদ্ধতিতে কল করুন:

aclEntry.delete();

// Could also use the client's delete method
// client.delete(new URL(aclEntry.getEditLink().getHref()), aclEntry);

ETags সম্পর্কে আরও তথ্যের জন্য, Google Data APIs রেফারেন্স গাইড দেখুন।

উপরে ফিরে যাও

বিশেষ বিষয়

আবার একটি ফিড বা এন্ট্রি পুনরুদ্ধার করা হচ্ছে

যদি আপনি একটি ফিড বা এন্ট্রি পুনরুদ্ধার করতে চান যা আপনি আগে পুনরুদ্ধার করেছেন, আপনি সার্ভারকে তালিকা বা এন্ট্রি পাঠাতে বলার মাধ্যমে কার্যকারিতা উন্নত করতে পারেন যদি আপনি এটি শেষবার পুনরুদ্ধার করার পর থেকে এটি পরিবর্তিত হয়।

এই ধরণের শর্তসাপেক্ষ পুনরুদ্ধার করার জন্য, getFeed() এবং getEntry() উভয় পদ্ধতিই একটি অতিরিক্ত যুক্তি প্রদান করে যা If-Modified-Since হেডারের জন্য একটি ETag মান বা একটি DateTime অবজেক্ট গ্রহণ করে। আপনি entry.getEtag() থেকে একটি এন্ট্রির etag অ্যাক্সেস করতে পারেন।

এই উদাহরণটি একটি বিষয়বস্তু ওয়েবপেজ এন্ট্রির জন্য শর্তসাপেক্ষ পুনরুদ্ধার করে:

String feedUrl = "https://sites.google.com/feeds/content/site/siteName/123456789";
WebPageEntry entry = client.getEntry(new URL(feedUrl), WebPageEntry.class, "\"GVQHSARDQyp7ImBq\"");

যখন সার্ভার এই অনুরোধটি পায়, তখন এটি পরীক্ষা করে যে আপনি যে আইটেমটি অনুরোধ করেছেন সেটিতে আপনার নির্দিষ্ট করা ETag-এর মতো একই ETag আছে কিনা। যদি ETags মিলে যায়, তাহলে আইটেমটি পরিবর্তিত হয়নি, এবং সার্ভার ফেরত দেয় হয় একটি HTTP 304 NotModifiedException ব্যতিক্রম নিক্ষেপ করা হবে।

যদি ETags মেলে না, তাহলে আপনি শেষবার অনুরোধ করার পর থেকে আইটেমটি সংশোধন করা হয়েছে এবং সার্ভার আইটেমটি ফেরত দেয়।

ETags সম্পর্কে আরও তথ্যের জন্য, Google Data APIs রেফারেন্স গাইড দেখুন।

উপরে ফিরে যাও