গুরুত্বপূর্ণ: এই নথিটি 2012 সালের আগে লেখা হয়েছিল৷ এই নথিতে বর্ণিত প্রমাণীকরণের বিকল্পগুলি (OAuth 1.0, AuthSub, এবং ClientLogin) 20 এপ্রিল, 2012 থেকে আনুষ্ঠানিকভাবে বাতিল করা হয়েছে এবং আর উপলব্ধ নেই৷ আমরা আপনাকে যত তাড়াতাড়ি সম্ভব OAuth 2.0- এ স্থানান্তরিত করতে উৎসাহিত করি।
Google Sites Data API ক্লায়েন্ট অ্যাপ্লিকেশনগুলিকে একটি Google সাইটের মধ্যে সামগ্রী অ্যাক্সেস, প্রকাশ এবং সংশোধন করার অনুমতি দেয়৷ আপনার ক্লায়েন্ট অ্যাপ্লিকেশন সাম্প্রতিক কার্যকলাপের একটি তালিকা, পুনর্বিবেচনা ইতিহাস আনয়ন এবং সংযুক্তি ডাউনলোড করার অনুরোধ করতে পারে।
সাইট ডেটা এপিআই-এর ক্ষমতা সম্পর্কে কিছু পটভূমি প্রদান করার পাশাপাশি, এই গাইডটি পাইথন ক্লায়েন্ট লাইব্রেরি ব্যবহার করে API-এর সাথে ইন্টারঅ্যাক্ট করার উদাহরণ প্রদান করে। ক্লায়েন্ট লাইব্রেরি সেট আপ করতে সহায়তার জন্য, Google ডেটা পাইথন ক্লায়েন্ট লাইব্রেরি দিয়ে শুরু করা দেখুন। আপনি যদি ক্লাসিক সাইট এপিআই এর সাথে ইন্টারঅ্যাক্ট করার জন্য পাইথন ক্লায়েন্ট লাইব্রেরি দ্বারা ব্যবহৃত অন্তর্নিহিত প্রোটোকল সম্পর্কে আরও বুঝতে আগ্রহী হন, অনুগ্রহ করে প্রোটোকল গাইড দেখুন।
শ্রোতা
এই ডকুমেন্টটি এমন ডেভেলপারদের জন্য যারা Google Data Python ক্লায়েন্ট লাইব্রেরি ব্যবহার করে Google Sites-এর সাথে ইন্টারঅ্যাক্ট করে এমন ক্লায়েন্ট অ্যাপ্লিকেশন লিখতে চান।
শুরু হচ্ছে
Python ক্লায়েন্ট লাইব্রেরি ব্যবহার করার জন্য, আপনার Python 2.2+ এবং DependencyModules উইকি পৃষ্ঠায় তালিকাভুক্ত মডিউলগুলির প্রয়োজন হবে। ক্লায়েন্ট লাইব্রেরি ডাউনলোড করার পরে, ক্লায়েন্ট ইনস্টল এবং ব্যবহারে সহায়তার জন্য Google ডেটা পাইথন লাইব্রেরি দিয়ে শুরু করা দেখুন।
নমুনা চলমান
একটি সম্পূর্ণ কার্যকারী নমুনা প্রকল্পের মারকিউরিয়াল রিপোজিটরির samples/sites
সাবডিরেক্টরিতে অবস্থিত ( /samples/sites/sites_example.py )।
নিম্নরূপ উদাহরণ চালান:
python sites_example.py # or python sites_example.py --site [sitename] --domain [domain or "site"] --debug [prints debug info if set]
প্রয়োজনীয় পতাকা প্রদান না করা হলে, অ্যাপটি আপনাকে সেই মানগুলি ইনপুট করতে অনুরোধ করবে। নমুনাটি ব্যবহারকারীকে অনেকগুলি ক্রিয়াকলাপ সম্পাদন করতে দেয় যা প্রদর্শন করে কিভাবে ক্লাসিক সাইট এপিআই ব্যবহার করতে হয়। যেমন, আপনাকে নির্দিষ্ট ক্রিয়াকলাপ সম্পাদন করতে প্রমাণীকরণ করতে হবে (যেমন বিষয়বস্তু পরিবর্তন করা)। প্রোগ্রামটি আপনাকে AuthSub , OAuth , বা ClientLogin এর মাধ্যমে প্রমাণীকরণ করতেও অনুরোধ করবে৷
আপনার নিজের কোডে এই নির্দেশিকায় উদাহরণগুলি অন্তর্ভুক্ত করতে, আপনার নিম্নলিখিত import
বিবৃতিগুলির প্রয়োজন হবে:
import atom.data import gdata.sites.client import gdata.sites.data
আপনাকে একটি SitesClient
অবজেক্ট সেটআপ করতে হবে, যা ক্লাসিক সাইট API-এর সাথে একটি ক্লায়েন্ট সংযোগ প্রতিনিধিত্ব করে। আপনার অ্যাপ্লিকেশনের নাম এবং সাইটের ওয়েবস্পেস নাম (এর URL থেকে) পাস করুন:
client = gdata.sites.client.SitesClient(source='yourCo-yourAppName-v1', site='yourSiteName')
G Suite ডোমেনে হোস্ট করা সাইটের সাথে কাজ করতে, domain
প্যারামিটার ব্যবহার করে ডোমেন সেট করুন:
client = gdata.sites.client.SitesClient(source='yourCo-yourAppName-v1', site='yourSiteName', domain='example.com')
উপরের স্নিপেটগুলিতে, source
যুক্তি ঐচ্ছিক কিন্তু লগিং উদ্দেশ্যে সুপারিশ করা হয়। এটি ফর্ম্যাট অনুসরণ করা উচিত: company-applicationname-version
দ্রষ্টব্য : গাইডের বাকি অংশ ধরে নেয় যে আপনি পরিবর্তনশীল client
একটি SitesClient
অবজেক্ট তৈরি করেছেন।
ক্লাসিক সাইট API-এ প্রমাণীকরণ করা হচ্ছে
পাইথন ক্লায়েন্ট লাইব্রেরি পাবলিক বা প্রাইভেট ফিডের সাথে কাজ করতে ব্যবহার করা যেতে পারে। সাইট ডেটা এপিআই ব্যক্তিগত এবং সর্বজনীন ফিডগুলিতে অ্যাক্সেস সরবরাহ করে, একটি সাইটের অনুমতি এবং আপনি যে অপারেশনটি সম্পাদন করার চেষ্টা করছেন তার উপর নির্ভর করে। উদাহরণস্বরূপ, আপনি একটি সর্বজনীন সাইটের বিষয়বস্তু ফিড পড়তে সক্ষম হতে পারেন কিন্তু এতে আপডেট করতে পারবেন না - এমন কিছু যার জন্য একটি প্রমাণীকৃত ক্লায়েন্ট প্রয়োজন৷ এটি ClientLogin ব্যবহারকারীর নাম/পাসওয়ার্ড প্রমাণীকরণ, AuthSub বা OAuth এর মাধ্যমে করা যেতে পারে।
AuthSub, OAuth, এবং ClientLogin সম্পর্কে আরও তথ্যের জন্য অনুগ্রহ করে Google Data APIs প্রমাণীকরণ ওভারভিউ দেখুন।
ওয়েব অ্যাপ্লিকেশনের জন্য AuthSub
ওয়েব অ্যাপ্লিকেশনের জন্য AuthSub প্রমাণীকরণ ক্লায়েন্ট অ্যাপ্লিকেশনগুলির দ্বারা ব্যবহার করা উচিত যাদের তাদের ব্যবহারকারীদের Google বা G Suite অ্যাকাউন্টে প্রমাণীকরণ করতে হবে। অপারেটরের Google Sites ব্যবহারকারীর জন্য ব্যবহারকারীর নাম এবং পাসওয়ার্ড অ্যাক্সেসের প্রয়োজন নেই - শুধুমাত্র একটি AuthSub টোকেন প্রয়োজন৷
আপনার ওয়েব অ্যাপ্লিকেশনে AuthSub অন্তর্ভুক্ত করার জন্য নির্দেশাবলী দেখুন
একটি একক ব্যবহারের টোকেন অনুরোধ করুন
ব্যবহারকারী যখন প্রথম আপনার অ্যাপ্লিকেশন পরিদর্শন করে, তখন তাদের প্রমাণীকরণ করতে হবে। সাধারণত, বিকাশকারীরা ব্যবহারকারীকে প্রমাণীকরণ করতে এবং তাদের নথিতে অ্যাক্সেসের অনুরোধ করতে ব্যবহারকারীকে AuthSub অনুমোদন পৃষ্ঠায় নির্দেশ করে কিছু পাঠ্য এবং একটি লিঙ্ক প্রিন্ট করে। Google Data Python ক্লায়েন্ট লাইব্রেরি একটি ফাংশন প্রদান করে, generate_auth_sub_url()
এই URL তৈরি করতে। নিচের কোডটি AuthSubRequest পৃষ্ঠার একটি লিঙ্ক সেট আপ করে।
import gdata.gauth def GetAuthSubUrl(): next = 'http://www.example.com/myapp.py' scopes = ['https://sites.google.com/feeds/'] secure = True session = True return gdata.gauth.generate_auth_sub_url(next, scopes, secure=secure, session=session) print '<a href="%s">Login to your Google account</a>' % GetAuthSubUrl()
আপনি যদি G Suite হোস্ট করা ডোমেনে ব্যবহারকারীদের প্রমাণীকরণ করতে চান, তাহলে generate_auth_sub_url()
করতে ডোমেন নামটি পাস করুন :
def GetAuthSubUrl(): domain = 'example.com' next = 'http://www.example.com/myapp.py' scopes = ['https://sites.google.com/feeds/'] secure = True session = True return gdata.gauth.generate_auth_sub_url(next, scopes, secure=secure, session=session, domain=domain)
generate_auth_sub_url()
পদ্ধতিতে বেশ কিছু প্যারামিটার লাগে ( AuthSubRequest হ্যান্ডলার দ্বারা ব্যবহৃত ক্যোয়ারী প্যারামিটারের সাথে সম্পর্কিত):
- পরবর্তী URL — ব্যবহারকারী তাদের অ্যাকাউন্টে লগ ইন করার পরে এবং অ্যাক্সেস মঞ্জুর করার পরে Google যে URLটিতে পুনঃনির্দেশ করবে; উপরের উদাহরণে
http://www.example.com/myapp.py
- সুযোগ —
https://sites.google.com/feeds/
- সুরক্ষিত , টোকেন সুরক্ষিত এবং নিবন্ধিত মোডে ব্যবহার করা হবে কিনা তা নির্দেশ করার জন্য একটি বুলিয়ান; উপরের উদাহরণে
True
- সেশন , একক-ব্যবহারের টোকেন পরে একটি সেশন টোকেনের জন্য বিনিময় করা হবে কিনা তা নির্দেশ করার জন্য একটি দ্বিতীয় বুলিয়ান; উপরের উদাহরণে
True
একটি সেশন টোকেনে আপগ্রেড করা হচ্ছে
Google Data API ক্লায়েন্ট লাইব্রেরির সাথে AuthSub ব্যবহার করা দেখুন।
একটি সেশন টোকেন সম্পর্কে তথ্য পুনরুদ্ধার করা হচ্ছে
Google Data API ক্লায়েন্ট লাইব্রেরির সাথে AuthSub ব্যবহার করা দেখুন।
একটি সেশন টোকেন প্রত্যাহার করা হচ্ছে
Google Data API ক্লায়েন্ট লাইব্রেরির সাথে AuthSub ব্যবহার করা দেখুন।
টিপ : একবার আপনার অ্যাপ্লিকেশন সফলভাবে একটি দীর্ঘস্থায়ী সেশন টোকেন অর্জন করলে, পরবর্তীতে ব্যবহারের জন্য স্মরণ করতে আপনার ডাটাবেসে সেই টোকেনটি সংরক্ষণ করুন। আপনার আবেদনের প্রতিটি রানে ব্যবহারকারীকে AuthSub-এ ফেরত পাঠানোর দরকার নেই। ক্লায়েন্টে একটি বিদ্যমান টোকেন সেট করতে client.auth_token = gdata.gauth.AuthSubToken(TOKEN_STR)
ব্যবহার করুন।
ওয়েব বা ইনস্টল/মোবাইল অ্যাপ্লিকেশনের জন্য OAuth
OAuth AuthSub-এর বিকল্প হিসেবে ব্যবহার করা যেতে পারে এবং এটি ওয়েব অ্যাপ্লিকেশনের জন্য তৈরি। OAuth হল AuthSub-এর সুরক্ষিত এবং নিবন্ধিত মোড ব্যবহার করার মতো যে সমস্ত ডেটা অনুরোধগুলি অবশ্যই ডিজিটালভাবে স্বাক্ষরিত হতে হবে এবং আপনাকে অবশ্যই আপনার ডোমেন নিবন্ধন করতে হবে৷
আপনার ইনস্টল করা অ্যাপ্লিকেশনে OAuth অন্তর্ভুক্ত করার নির্দেশাবলী দেখুন
একটি অনুরোধ টোকেন আনা হচ্ছে
Google Data API ক্লায়েন্ট লাইব্রেরির সাথে OAuth ব্যবহার করা দেখুন।
একটি অনুরোধ টোকেন অনুমোদন
Google Data API ক্লায়েন্ট লাইব্রেরির সাথে OAuth ব্যবহার করা দেখুন।
একটি অ্যাক্সেস টোকেনে আপগ্রেড করা হচ্ছে
Google Data API ক্লায়েন্ট লাইব্রেরির সাথে OAuth ব্যবহার করা দেখুন।
টিপ : একবার আপনার অ্যাপ্লিকেশন সফলভাবে একটি OAuth অ্যাক্সেস টোকেন অর্জন করলে, পরবর্তী ব্যবহারের জন্য প্রত্যাহার করতে আপনার ডাটাবেসে সেই টোকেনটি সংরক্ষণ করুন। আপনার অ্যাপ্লিকেশনের প্রতিটি রানে OAuth এর মাধ্যমে ব্যবহারকারীকে ফেরত পাঠানোর প্রয়োজন নেই। ক্লায়েন্টে একটি বিদ্যমান টোকেন সেট করতে client.auth_token = gdata.oauth.OAuthToken(TOKEN_STR, TOKEN_SECRET)
ব্যবহার করুন।
ইনস্টল/মোবাইল অ্যাপ্লিকেশনের জন্য ক্লায়েন্টলগইন
ক্লায়েন্টলগইন ইনস্টল করা বা মোবাইল অ্যাপ্লিকেশনগুলির দ্বারা ব্যবহার করা উচিত যা তাদের ব্যবহারকারীদের Google অ্যাকাউন্টে প্রমাণীকরণ করতে হবে৷ প্রথম দৌড়ে, আপনার অ্যাপ্লিকেশন ব্যবহারকারীকে তাদের ব্যবহারকারীর নাম/পাসওয়ার্ডের জন্য অনুরোধ করে। পরবর্তী অনুরোধে, একটি প্রমাণীকরণ টোকেন উল্লেখ করা হয়।
আপনার ইনস্টল করা অ্যাপ্লিকেশনে ClientLogin অন্তর্ভুক্ত করার জন্য নির্দেশাবলী দেখুন
ClientLogin ব্যবহার করতে, SitesClient
অবজেক্টের ClientLogin()
পদ্ধতিটি ব্যবহার করুন, যা GDClient
থেকে উত্তরাধিকারসূত্রে প্রাপ্ত। যে ব্যবহারকারীর পক্ষে আপনার ক্লায়েন্ট অনুরোধ করছে তার ইমেল ঠিকানা এবং পাসওয়ার্ড উল্লেখ করুন। যেমন:
client = gdata.sites.client.SitesClient(source='yourCo-yourAppName-v1') client.ClientLogin('user@gmail.com', 'pa$$word', client.source);
টিপ : একবার আপনার অ্যাপ্লিকেশন সফলভাবে ব্যবহারকারীকে প্রথমবার প্রমাণীকরণ করলে, পরবর্তী ব্যবহারের জন্য প্রত্যাহার করতে আপনার ডাটাবেসে প্রমাণীকরণ টোকেন সংরক্ষণ করুন। আপনার অ্যাপ্লিকেশনের প্রতিটি রানে ব্যবহারকারীকে তাদের পাসওয়ার্ডের জন্য অনুরোধ করার দরকার নেই। আরও তথ্যের জন্য একটি প্রমাণীকরণ টোকেন রিকলিং দেখুন।
আপনার পাইথন অ্যাপ্লিকেশনগুলিতে ClientLogin ব্যবহার করার বিষয়ে আরও তথ্যের জন্য, Google Data API ক্লায়েন্ট লাইব্রেরির সাথে ClientLogin ব্যবহার করা দেখুন।
সাইট ফিড
সাইট ফিডটি ব্যবহারকারীর মালিকানাধীন বা দেখার অনুমতি আছে এমন Google সাইটগুলি তালিকাভুক্ত করতে ব্যবহার করা যেতে পারে৷ এটি একটি বিদ্যমান সাইটের নাম পরিবর্তন করতেও ব্যবহার করা যেতে পারে। অবশেষে, G Suite ডোমেনের জন্য, এটি একটি সম্পূর্ণ সাইট তৈরি এবং/অথবা অনুলিপি করতেও ব্যবহার করা যেতে পারে।
তালিকা সাইট
ব্যবহারকারীর অ্যাক্সেস আছে এমন সাইটগুলি তালিকাভুক্ত করতে, ক্লায়েন্টের GetSiteFeed()
পদ্ধতি ব্যবহার করুন। পদ্ধতিটি একটি ঐচ্ছিক আর্গুমেন্ট নেয়, uri
, যা আপনি একটি বিকল্প সাইট ফিড URI নির্দিষ্ট করতে ব্যবহার করতে পারেন। ডিফল্টরূপে, GetSiteFeed()
ক্লায়েন্ট অবজেক্টে সাইট নাম এবং ডোমেন সেট ব্যবহার করে। আপনার ক্লায়েন্ট অবজেক্টে এই মানগুলি সেট করার বিষয়ে আরও তথ্যের জন্য শুরু করা বিভাগটি দেখুন।
এখানে সাইটগুলির প্রমাণীকৃত ব্যবহারকারীর তালিকা আনার একটি উদাহরণ রয়েছে:
feed = client.GetSiteFeed() for entry in feed.entry: print '%s (%s)' % (entry.title.text, entry.site_name.text) if entry.summary.text: print 'description: ' + entry.summary.text if entry.FindSourceLink(): print 'this site was copied from site: ' + entry.FindSourceLink() print 'acl feed: %s\n' % entry.FindAclLink() print 'theme: ' + entry.theme.text
উপরের স্নিপেটটি সাইটের শিরোনাম, সাইটের নাম, সাইটটি যেখান থেকে কপি করা হয়েছে এবং এর acl ফিড URI প্রিন্ট করে।
নতুন সাইট তৈরি করা
দ্রষ্টব্য : এই বৈশিষ্ট্যটি শুধুমাত্র G Suite ডোমেনে উপলব্ধ।
লাইব্রেরির CreateSite()
পদ্ধতিতে কল করে নতুন সাইটের ব্যবস্থা করা যেতে পারে। GetSiteFeed()
সাহায্যকারীর মতো, CreateSite()
একটি ঐচ্ছিক যুক্তিও গ্রহণ করে, uri
, যা আপনি একটি বিকল্প সাইট ফিড URI নির্দিষ্ট করতে ব্যবহার করতে পারেন (আপনার সাইটে সেট করা ডোমেনের বাইরে অন্য একটি ডোমেনের অধীনে সাইট তৈরি করার ক্ষেত্রে SitesClient
অবজেক্ট)।
এখানে 'স্লেট' থিম সহ একটি নতুন সাইট তৈরি করার এবং একটি শিরোনাম এবং (ঐচ্ছিক) বিবরণ প্রদানের একটি উদাহরণ রয়েছে:
client.domain = 'example2.com' # demonstrates creating a site under a different domain. entry = client.CreateSite('Title For My Site', description='Site to hold precious memories', theme='slate') print 'Site created! View it at: ' + entry.GetAlternateLink().href
উপরের অনুরোধটি G Suite ডোমেইন example2.com
এর অধীনে একটি নতুন সাইট তৈরি করবে। সুতরাং, সাইটের URL হবে https://sites.google.com/a/example2.com/title-for-my-site৷
যদি সাইটটি সফলভাবে তৈরি করা হয়, সার্ভারটি একটি gdata.sites.data.SiteEntry
অবজেক্টের সাথে সাড়া দেবে, যা সার্ভারের দ্বারা যোগ করা উপাদানগুলি দ্বারা পরিপূর্ণ: সাইটের একটি লিঙ্ক, সাইটের acl ফিডের একটি লিঙ্ক, সাইটের নাম, শিরোনাম , সারাংশ, এবং তাই ঘোষণা.
একটি সাইট কপি করা
দ্রষ্টব্য : এই বৈশিষ্ট্যটি শুধুমাত্র G Suite ডোমেনে উপলব্ধ।
CreateSite()
একটি বিদ্যমান সাইট কপি করতে ব্যবহার করা যেতে পারে। এটি করার জন্য, source_site
কীওয়ার্ড আর্গুমেন্টে পাস করুন। কপি করা যে কোনো সাইটে এই লিঙ্কটি থাকবে, যা entry.FindSourceLink()
। নতুন সাইট তৈরি করা বিভাগে তৈরি সাইটটিকে নকল করার একটি উদাহরণ এখানে দেওয়া হল:
copied_site = client.CreateSite('Copy of Title For My Site', description='My Copy', source_site=entry.FindSourceLink()) print 'Site copied! View it at: ' + copied_site.GetAlternateLink().href
গুরুত্বপূর্ণ পয়েন্ট:
- শুধুমাত্র প্রমাণীকৃত ব্যবহারকারীর মালিকানাধীন সাইট এবং সাইট টেমপ্লেট কপি করা যাবে।
- একটি সাইট টেমপ্লেটও অনুলিপি করা যেতে পারে। একটি সাইট হল একটি টেমপ্লেট যদি "এই সাইটটিকে একটি টেমপ্লেট হিসাবে প্রকাশ করুন" সেটিংসটি Google Sites সেটিংস পৃষ্ঠায় চেক করা থাকে৷
- আপনি অন্য ডোমেন থেকে একটি সাইট অনুলিপি করতে পারেন, যদি আপনি উৎস সাইটে মালিক হিসাবে তালিকাভুক্ত হন।
একটি সাইটের মেটাডেটা আপডেট করা হচ্ছে
একটি সাইটের শিরোনাম বা সারাংশ আপডেট করার জন্য, আপনার একটি SiteEntry
প্রয়োজন হবে যেখানে প্রশ্ন করা সাইটটি রয়েছে৷ এই উদাহরণটি প্রথমে একটি SiteEntry
আনতে GetEntry()
পদ্ধতি ব্যবহার করে এবং তারপরে এর শিরোনাম, বিবরণ এবং বিভাগ ট্যাগ পরিবর্তন করে:
uri = 'https://sites.google.com/feeds/site/example2.com/title-for-my-site' site_entry = client.GetEntry(uri, desired_class=gdata.sites.data.SiteEntry) site_entry.title.text = 'Better Title' site_entry.summary.text = 'Better Description' category_name = 'My Category' category = atom.data.Category( scheme=gdata.sites.data.TAG_KIND_TERM, term=category_name) site_entry.category.append(category) updated_site_entry = client.Update(site_entry) # To force the update, even if you do not have the latest changes to the entry: # updated_site_entry = client.Update(site_entry, force=True)
অ্যাক্টিভিটি ফিড আনা হচ্ছে
দ্রষ্টব্য : এই ফিডে অ্যাক্সেসের জন্য প্রয়োজন যে আপনি একজন সহযোগী বা সাইটের মালিক। আপনার ক্লায়েন্টকে অবশ্যই একটি AuthSub, OAuth, বা ClientLogin টোকেন ব্যবহার করে প্রমাণীকরণ করতে হবে। সাইট পরিষেবায় প্রমাণীকরণ দেখুন।
আপনি অ্যাক্টিভিটি ফিড এনে একটি সাইটের সাম্প্রতিক কার্যকলাপ (পরিবর্তন) আনতে পারেন। lib এর GetActivityFeed()
পদ্ধতি এই ফিডে অ্যাক্সেস প্রদান করে:
print "Fetching activity feed of '%s'...\n" % client.site feed = client.GetActivityFeed() for entry in feed.entry: print '%s [%s on %s]' % (entry.title.text, entry.Kind(), entry.updated.text)
GetActivityFeed()
কল করা একটি gdata.sites.data.ActivityFeed
অবজেক্ট প্রদান করে যেখানে gdata.sites.data.ActivityEntry
এর একটি তালিকা রয়েছে। প্রতিটি অ্যাক্টিভিটি এন্ট্রিতে সাইটে করা পরিবর্তনের তথ্য থাকে।
পুনর্বিবেচনার ইতিহাস আনা হচ্ছে
দ্রষ্টব্য : এই ফিডে অ্যাক্সেসের জন্য প্রয়োজন যে আপনি একজন সহযোগী বা সাইটের মালিক। আপনার ক্লায়েন্টকে অবশ্যই একটি AuthSub, OAuth, বা ClientLogin টোকেন ব্যবহার করে প্রমাণীকরণ করতে হবে। সাইট পরিষেবায় প্রমাণীকরণ দেখুন।
রিভিশন ফিড যেকোনো বিষয়বস্তুর এন্ট্রির জন্য রিভিশন ইতিহাসের তথ্য প্রদান করে। GetRevisionFeed()
পদ্ধতিটি একটি প্রদত্ত বিষয়বস্তু এন্ট্রির জন্য সংশোধন আনতে ব্যবহার করা যেতে পারে। পদ্ধতিটি একটি ঐচ্ছিক uri
প্যারামিটার নেয় যা একটি gdata.sites.data.ContentEntry
, একটি বিষয়বস্তুর এন্ট্রির একটি সম্পূর্ণ URI, বা একটি সামগ্রী এন্ট্রি আইডি গ্রহণ করে৷
এই উদাহরণটি কন্টেন্ট ফিডকে জিজ্ঞাসা করে এবং প্রথম কন্টেন্ট এন্ট্রির জন্য রিভিশন ফিড নিয়ে আসে:
print "Fetching content feed of '%s'...\n" % client.site content_feed = client.GetContentFeed() content_entry = content_feed.entry[0] print "Fetching revision feed of '%s'...\n" % content_entry.title.text revision_feed = client.GetRevisionFeed(content_entry) for entry in revision_feed.entry: print entry.title.text print ' new version on:\t%s' % entry.updated.text print ' view changes:\t%s' % entry.GetAlternateLink().href print ' current version:\t%s...\n' % str(entry.content.html)[0:100]
GetRevisionFeed()
কল করা একটি gdata.sites.data.RevisionFeed
অবজেক্ট প্রদান করে যেখানে gdata.sites.data.RevisionEntry
এর একটি তালিকা রয়েছে। প্রতিটি রিভিশন এন্ট্রিতে তথ্য থাকে যেমন সেই রিভিশনের বিষয়বস্তু, ভার্সন নম্বর এবং কখন নতুন সংস্করণ তৈরি করা হয়েছিল।
বিষয়বস্তু ফিড
বিষয়বস্তু ফিড পুনরুদ্ধার করা হচ্ছে
দ্রষ্টব্য : বিষয়বস্তু ফিডের প্রমাণীকরণের প্রয়োজন হতে পারে বা নাও হতে পারে; সাইটের শেয়ারিং অনুমতির উপর নির্ভর করে। সাইটটি অ-পাবলিক হলে, আপনার ক্লায়েন্টকে অবশ্যই একটি AuthSub, OAuth, বা ClientLogin টোকেন ব্যবহার করে প্রমাণীকরণ করতে হবে। সাইট পরিষেবায় প্রমাণীকরণ দেখুন।
বিষয়বস্তু ফিড একটি সাইটের সর্বশেষ সামগ্রী প্রদান করে। এটি lib-এর GetContentFeed()
পদ্ধতিতে কল করে অ্যাক্সেস করা যেতে পারে, যা একটি কাস্টমাইজড ক্যোয়ারী পাস করার জন্য একটি ঐচ্ছিক uri
স্ট্রিং প্যারামিটার নেয়।
এখানে সম্পূর্ণ কন্টেন্ট ফিড আনা এবং কিছু আকর্ষণীয় উপাদান প্রিন্ট করার একটি উদাহরণ রয়েছে:
print "Fetching content feed of '%s'...\n" % client.site feed = client.GetContentFeed() for entry in feed.entry: print '%s [%s]' % (entry.title.text, entry.Kind()) # Common properties of all entry kinds. print ' content entry id: ' + entry.GetNodeId() print ' revision:\t%s' % entry.revision.text print ' updated:\t%s' % entry.updated.text if entry.page_name: print ' page name:\t%s' % entry.page_name.text if entry.content: print ' content\t%s...' % str(entry.content.html)[0:100] # Subpages/items will have a parent link. parent_link = entry.FindParentLink() if parent_link: print ' parent link:\t%s' % parent_link # The alternate link is the URL pointing to Google Sites. if entry.GetAlternateLink(): print ' view in Sites:\t%s' % entry.GetAlternateLink().href # If this entry is a filecabinet, announcementpage, etc., it will have a feed of children. if entry.feed_link: print ' feed of items:\t%s' % entry.feed_link.href print
টিপ : entry.Kind()
একটি এন্ট্রির ধরন নির্ধারণ করতে ব্যবহার করা যেতে পারে।
ফলস্বরূপ feed
অবজেক্ট হল একটি gdata.sites.data.ContentFeed
যেখানে gdata.sites.data.ContentEntry
এর একটি তালিকা রয়েছে। প্রতিটি এন্ট্রি ব্যবহারকারীর সাইটের মধ্যে একটি ভিন্ন পৃষ্ঠা/আইটেম প্রতিনিধিত্ব করে এবং এটি যে ধরনের এন্ট্রি আছে তার জন্য নির্দিষ্ট উপাদান রয়েছে। প্রতিটি এন্ট্রি ধরনের উপলব্ধ বৈশিষ্ট্যের একটি ভাল ধারণার জন্য নমুনা অ্যাপ্লিকেশন দেখুন.
বিষয়বস্তু ফিড ক্যোয়ারী উদাহরণ
আপনি কিছু স্ট্যান্ডার্ড Google ডেটা API ক্যোয়ারী প্যারামিটার এবং ক্লাসিক সাইট API-এর জন্য নির্দিষ্ট কিছু ব্যবহার করে সামগ্রী ফিড অনুসন্ধান করতে পারেন। আরো বিস্তারিত তথ্য এবং সমর্থিত পরামিতিগুলির একটি সম্পূর্ণ তালিকার জন্য, রেফারেন্স গাইড দেখুন।
দ্রষ্টব্য : এই বিভাগের উদাহরণগুলি কন্টেন্ট ফিডের বেস ইউআরআই তৈরির জন্য gdata.sites.client.MakeContentFeedUri()
সহায়ক পদ্ধতি ব্যবহার করে।
নির্দিষ্ট এন্ট্রি ধরনের পুনরুদ্ধার করা হচ্ছে
শুধুমাত্র একটি নির্দিষ্ট ধরনের এন্ট্রি আনতে, kind
প্যারামিটার ব্যবহার করুন। একটি উদাহরণ হিসাবে, এই স্নিপেট শুধুমাত্র attachment
এন্ট্রি প্রদান করে:
kind = 'webpage' print 'Fetching only %s entries' % kind uri = '%s?kind=%s' % (client.MakeContentFeedUri(), kind) feed = client.GetContentFeed(uri=uri)
একাধিক টাইপ ফেরত দিতে, প্রতিটি kind
কমা দিয়ে আলাদা করুন। উদাহরণস্বরূপ, এই স্নিপেট filecabinet
এবং listpage
এন্ট্রি প্রদান করে:
kind = ','.join(['filecabinet', 'listpage']) print 'Fetching only %s entries' % kind uri = '%s?kind=%s' % (client.MakeContentFeedUri(), kind) feed = client.GetContentFeed(uri=uri)
পথ দ্বারা একটি পৃষ্ঠা পুনরুদ্ধার করা হচ্ছে
আপনি যদি Google সাইটের মধ্যে একটি পৃষ্ঠার আপেক্ষিক পথ জানেন, আপনি সেই নির্দিষ্ট পৃষ্ঠাটি আনতে path
প্যারামিটার ব্যবহার করতে পারেন। এই উদাহরণটি http://sites.google.com/ domainName / siteName /path/to/the/page
এ অবস্থিত পৃষ্ঠাটি ফিরিয়ে দেবে :
path = '/path/to/the/page' print 'Fetching page by its path: ' + path uri = '%s?path=%s' % (client.MakeContentFeedUri(), path) feed = client.GetContentFeed(uri=uri)
একটি মূল পৃষ্ঠার অধীনে সমস্ত এন্ট্রি পুনরুদ্ধার করা হচ্ছে
আপনি যদি একটি পৃষ্ঠার বিষয়বস্তু এন্ট্রি আইডি জানেন (যেমন নীচের উদাহরণে "1234567890"), আপনি এর সমস্ত চাইল্ড এন্ট্রি (যদি থাকে) আনার জন্য parent
প্যারামিটার ব্যবহার করতে পারেন:
parent = '1234567890' print 'Fetching all children of parent entry: ' + parent uri = '%s?parent=%s' % (client.MakeContentFeedUri(), parent) feed = client.GetContentFeed(uri=uri)
অতিরিক্ত প্যারামিটারের জন্য, রেফারেন্স গাইড দেখুন।
সামগ্রী তৈরি করা
দ্রষ্টব্য: একটি সাইটের জন্য সামগ্রী তৈরি করার আগে, নিশ্চিত করুন যে আপনি ক্লায়েন্টে আপনার সাইট সেট করেছেন। client.site = "siteName"
CreatePage()
ব্যবহার করে নতুন কন্টেন্ট (ওয়েবপেজ, লিস্টপেজ, ফাইলক্যাবিনেট, অ্যানাউন্সমেন্ট পেজ ইত্যাদি) তৈরি করা যেতে পারে। এই পদ্ধতির প্রথম আর্গুমেন্ট হতে হবে যে ধরনের পৃষ্ঠা তৈরি করতে হবে, তার পরে শিরোনাম এবং এর HTML বিষয়বস্তু।
সমর্থিত নোড প্রকারের তালিকার জন্য, রেফারেন্স গাইডে kind
প্যারামিটার দেখুন।
নতুন আইটেম/পৃষ্ঠা তৈরি করা
এই উদাহরণটি শীর্ষ-স্তরের অধীনে একটি নতুন webpage
তৈরি করে, পৃষ্ঠার অংশের জন্য কিছু XHTML অন্তর্ভুক্ত করে এবং শিরোনামটিকে 'নতুন ওয়েবপেজ শিরোনাম'-এ সেট করে:
entry = client.CreatePage('webpage', 'New WebPage Title', html='<b>HTML content</b>') print 'Created. View it at: %s' % entry.GetAlternateLink().href
অনুরোধ সফল হলে, entry
সার্ভারে তৈরি করা এন্ট্রির একটি অনুলিপি থাকবে, একটি gdata.sites.gdata.ContentEntry
হিসাবে।
আরও জটিল এন্ট্রি ধরনের তৈরি করতে যা সৃষ্টিতে পপুলেট করা হয় (যেমন কলাম শিরোনাম সহ একটি listpage
), আপনাকে ম্যানুয়ালি gdata.sites.data.ContentEntry
তৈরি করতে হবে, আগ্রহের বৈশিষ্ট্যগুলি পূরণ করতে হবে এবং client.Post()
কল করতে হবে .
কাস্টম URL পাথের অধীনে আইটেম/পৃষ্ঠা তৈরি করা
ডিফল্টরূপে, আগের উদাহরণটি URL http://sites.google.com/ domainName / siteName /new-webpage-title
এর অধীনে তৈরি করা হবে এবং 'নতুন ওয়েবপৃষ্ঠা শিরোনাম'-এর একটি পৃষ্ঠা শিরোনাম থাকবে। অর্থাৎ, URL-এর জন্য শিরোনামটিকে new-webpage-title
এ স্বাভাবিক করা হয়েছে। একটি পৃষ্ঠার URL পাথ কাস্টমাইজ করতে, আপনি সামগ্রী এন্ট্রিতে page_name
বৈশিষ্ট্য সেট করতে পারেন। CreatePage()
সহায়ক এটি একটি ঐচ্ছিক কীওয়ার্ড আর্গুমেন্ট হিসাবে প্রদান করে।
এই উদাহরণটি 'ফাইল স্টোরেজ' শিরোনাম সহ একটি নতুন filecabinet
পৃষ্ঠা তৈরি করে, কিন্তু URL এর অধীনে পৃষ্ঠাটি তৈরি করে http://sites.google.com/ domainName / siteName /files
( http://sites.google.com/ domainName / siteName /file-storage
এর পরিবর্তে http://sites.google.com/ domainName / siteName /file-storage
) page_name
প্রপার্টি উল্লেখ করে।
entry = client.CreatePage('filecabinet', 'File Storage', html='<b>HTML content</b>', page_name='files') print 'Created. View it at: ' + entry.GetAlternateLink().href
সার্ভার একটি পৃষ্ঠার URL পাথ নামকরণের জন্য নিম্নলিখিত অগ্রাধিকার নিয়ম ব্যবহার করে:
-
page_name
, যদি উপস্থিত থাকে।az, AZ, 0-9, -, _
সন্তুষ্ট করতে হবে। -
title
, পৃষ্ঠার নাম উপস্থিত না থাকলে অবশ্যই শূন্য হবে না। সাধারণীকরণ হল হোয়াইটস্পেসকে '-' এ ছাঁটাই করা এবংaz, AZ, 0-9, -, _
এর সাথে মেলে না এমন অক্ষরগুলি সরিয়ে ফেলা।
সাবপেজ তৈরি করা হচ্ছে
একটি অভিভাবক পৃষ্ঠার অধীনে সাবপেজ (শিশু) তৈরি করতে, CreatePage()
এর parent
কীওয়ার্ড আর্গুমেন্ট ব্যবহার করুন। parent
হয় একটি gdata.sites.gdata.ContentEntry
বা বিষয়বস্তুর এন্ট্রির সম্পূর্ণ স্ব-আইডি প্রতিনিধিত্বকারী একটি স্ট্রিং হতে পারে৷
এই উদাহরণটি announcementpage
জন্য বিষয়বস্তু ফিডকে জিজ্ঞাসা করে এবং পাওয়া প্রথমটির অধীনে একটি নতুন announcement
তৈরি করে:
uri = '%s?kind=%s' % (client.MakeContentFeedUri(), 'announcementpage') feed = client.GetContentFeed(uri=uri) entry = client.CreatePage('announcement', 'Party!!', html='My place, this weekend', parent=feed.entry[0]) print 'Posted!'
ফাইল আপলোড করা হচ্ছে
ঠিক যেমন Google সাইটগুলিতে, API একটি ফাইল ক্যাবিনেট পৃষ্ঠা বা মূল পৃষ্ঠায় সংযুক্তি আপলোড সমর্থন করে৷ সংযুক্তি একটি অভিভাবক পৃষ্ঠায় আপলোড করা আবশ্যক. অতএব, আপনি যে ContentEntry
আপলোড করার চেষ্টা করছেন তাতে আপনাকে অবশ্যই একটি অভিভাবক লিঙ্ক সেট করতে হবে। আরও তথ্যের জন্য সাবপেজ তৈরি করা দেখুন।
ক্লায়েন্ট লাইব্রেরির UploadAttachment()
পদ্ধতি সংযুক্তি আপলোড করার জন্য ইন্টারফেস প্রদান করে।
সংযুক্তি আপলোড করা হচ্ছে
এই উদাহরণটি ব্যবহারকারীর কন্টেন্ট ফিডে পাওয়া প্রথম filecabinet
একটি PDF ফাইল আপলোড করে। সংযুক্তিটি 'নতুন কর্মচারী হ্যান্ডবুক' এর শিরোনাম এবং একটি (ঐচ্ছিক) বর্ণনা, 'এইচআর প্যাকেট' দিয়ে তৈরি করা হয়েছে।
uri = '%s?kind=%s' % (client.MakeContentFeedUri(),'filecabinet') feed = client.GetContentFeed(uri=uri) attachment = client.UploadAttachment('/path/to/file.pdf', feed.entry[0], content_type='application/pdf', title='New Employee Handbook', description='HR Packet') print 'Uploaded. View it at: %s' % attachment.GetAlternateLink().href
আপলোড সফল হলে, attachment
সার্ভারে তৈরি সংযুক্তির একটি অনুলিপি থাকবে।
একটি ফোল্ডারে একটি সংযুক্তি আপলোড করা হচ্ছে৷
Google সাইট সমর্থন ফোল্ডারে ফাইলক্যাবিনেট। UploadAttachment()
একটি অতিরিক্ত কীওয়ার্ড আর্গুমেন্ট প্রদান করে, folder_name
যা আপনি একটি filecabinet
ফোল্ডারে একটি সংযুক্তি আপলোড করতে ব্যবহার করতে পারেন। শুধু ফোল্ডারের নাম উল্লেখ করুন:
import gdata.data ms = gdata.data.MediaSource(file_path='/path/to/file.pdf', content_type='application/pdf') attachment = client.UploadAttachment(ms, feed.entry[0], title='New Employee Handbook', description='HR Packet', folder_name='My Folder')
লক্ষ্য করুন যে এই উদাহরণটি ফাইলপথের পরিবর্তে একটি gdata.data.MediaSource
অবজেক্ট UploadAttachment()
এ পাস করে। এটি একটি বিষয়বস্তুর প্রকার পাস করে না। পরিবর্তে, মিডিয়াসোর্স অবজেক্টে বিষয়বস্তুর ধরন নির্দিষ্ট করা হয়েছে।
ওয়েব সংযুক্তি
ওয়েব সংযুক্তিগুলি বিশেষ ধরণের সংযুক্তি। মূলত, এগুলি ওয়েবের অন্যান্য ফাইলগুলির লিঙ্ক যা আপনি আপনার filecabinet
তালিকায় যুক্ত করতে পারেন৷ এই বৈশিষ্ট্যটি Google Sites UI-তে ' URL দ্বারা ফাইল যোগ করুন ' আপলোড পদ্ধতির অনুরূপ।
দ্রষ্টব্য : ওয়েব সংযুক্তি শুধুমাত্র একটি filecabinet
অধীনে তৈরি করা যেতে পারে। সেগুলি অন্য ধরনের পেজে আপলোড করা যাবে না।
এই উদাহরণটি ব্যবহারকারীর সামগ্রী ফিডে পাওয়া প্রথম filecabinet
অধীনে একটি ওয়েব সংযুক্তি তৈরি করে। এর শিরোনাম এবং (ঐচ্ছিক) বর্ণনা যথাক্রমে 'GoogleLogo' এবং 'nice colors'-এ সেট করা আছে।
uri = '%s?kind=%s' % (client.MakeContentFeedUri(),'filecabinet') feed = client.GetContentFeed(uri=uri) parent_entry = feed.entry[0] image_url = 'http://www.google.com/images/logo.gif' web_attachment = client.CreateWebAttachment(image_url, 'image/gif', 'GoogleLogo', parent_entry, description='nice colors') print 'Created!'
কলটি filecabinet
'http://www.google.com/images/logo.gif'-এ চিত্রের দিকে নির্দেশ করে একটি লিঙ্ক তৈরি করে৷
বিষয়বস্তু আপডেট করা হচ্ছে
একটি পৃষ্ঠার মেটাডেটা এবং/অথবা html বিষয়বস্তু আপডেট করা হচ্ছে
মেটাডেটা (শিরোনাম, পৃষ্ঠার নাম, ইত্যাদি) এবং যেকোনো এন্ট্রি ধরনের পৃষ্ঠা বিষয়বস্তু ক্লায়েন্টের Update()
পদ্ধতি ব্যবহার করে সম্পাদনা করা যেতে পারে।
নীচে নিম্নলিখিত পরিবর্তনগুলির সাথে একটি listpage
আপডেট করার একটি উদাহরণ রয়েছে:
- শিরোনামটি 'আপডেট করা শিরোনাম'-এ পরিবর্তন করা হয়েছে
- পৃষ্ঠার HTML বিষয়বস্তু 'আপডেট করা HTML সামগ্রী'-তে আপডেট করা হয়েছে
- তালিকার প্রথম কলামের শিরোনাম "মালিক" এ পরিবর্তিত হয়েছে
uri = '%s?kind=%s' % (client.MakeContentFeedUri(),'listpage') feed = client.GetContentFeed(uri=uri) old_entry = feed.entry[0] # Update the listpage's title, html content, and first column's name. old_entry.title.text = 'Updated Title' old_entry.content.html = 'Updated HTML Content' old_entry.data.column[0].name = 'Owner' # You can also change the page's webspace page name on an update. # old_entry.page_name = 'new-page-path' updated_entry = client.Update(old_entry) print 'List page updated!'
একটি সংযুক্তির বিষয়বস্তু + মেটাডেটা প্রতিস্থাপন
আপনি নতুন ফাইল সামগ্রীর সাথে একটি নতুন MediaSource
অবজেক্ট তৈরি করে এবং ক্লায়েন্টের Update()
পদ্ধতিতে কল করে একটি সংযুক্তির ফাইল সামগ্রী প্রতিস্থাপন করতে পারেন। সংযুক্তির মেটাডেটা (যেমন শিরোনাম এবং বিবরণ) আপডেট করা যেতে পারে, বা কেবলমাত্র মেটাডেটা। এই উদাহরণটি একই সময়ে ফাইল সামগ্রী এবং মেটাডেটা আপডেট করার প্রদর্শন করে:
import gdata.data # Load the replacement content in a MediaSource. Also change the attachment's title and description. ms = gdata.data.MediaSource(file_path='/path/to/replacementContent.doc', content_type='application/msword') existing_attachment.title.text = 'Updated Document Title' existing_attachment.summary.text = 'version 2.0' updated_attachment = client.Update(existing_attachment, media_source=ms) print "Attachment '%s' changed to '%s'" % (existing_attachment.title.text, updated_attachment.title.text)
বিষয়বস্তু মুছে ফেলা হচ্ছে
একটি Google সাইট থেকে একটি পৃষ্ঠা বা আইটেম সরাতে, প্রথমে বিষয়বস্তু এন্ট্রি পুনরুদ্ধার করুন, তারপর ক্লায়েন্টের Delete()
পদ্ধতিতে কল করুন৷
client.Delete(content_entry)
আপনি সামগ্রী এন্ট্রির edit
লিঙ্কটি Delete()
পদ্ধতিটি পাস করতে পারেন এবং/অথবা মুছে ফেলতে বাধ্য করতে পারেন:
# force=True sets the If-Match: * header instead of using the entry's ETag. client.Delete(content_entry.GetEditLink().href, force=True)
ETags সম্পর্কে আরও তথ্যের জন্য, Google Data APIs রেফারেন্স গাইড দেখুন।
সংযুক্তি ডাউনলোড করা হচ্ছে
প্রতিটি attachment
এন্ট্রিতে একটি বিষয়বস্তু src
লিঙ্ক থাকে যা ফাইল সামগ্রী ডাউনলোড করতে ব্যবহার করা যেতে পারে। সাইট ক্লায়েন্টে এই লিঙ্ক থেকে ফাইলটি অ্যাক্সেস এবং ডাউনলোড করার জন্য একটি সহায়ক পদ্ধতি রয়েছে: DownloadAttachment()
। এটি একটি gdata.sites.data.ContentEntry
গ্রহণ করে বা এর প্রথম আর্গুমেন্টের জন্য URI ডাউনলোড করে, এবং দ্বিতীয় হিসাবে সংযুক্তি সংরক্ষণ করার জন্য একটি ফাইলপথ।
এই উদাহরণটি একটি নির্দিষ্ট সংযুক্তি এন্ট্রি নিয়ে আসে (এটির self
লিঙ্ক অনুসন্ধান করে) এবং ফাইলটিকে নির্দিষ্ট পথে ডাউনলোড করে:
uri = 'https://sites.google.com/feeds/content/site/siteName/1234567890' attachment = client.GetEntry(uri, desired_class=gdata.sites.data.ContentEntry) print "Downloading '%s', a %s file" % (attachment.title.text, attachment.content.type) client.DownloadAttachment(attachment, '/path/to/save/test.pdf') print 'Downloaded!'
অ্যাটাচমেন্টের বিষয়বস্তুর প্রকারের জন্য অর্থপূর্ণ একটি ফাইল এক্সটেনশন নির্দিষ্ট করা অ্যাপ ডেভেলপারের উপর নির্ভর করে। বিষয়বস্তুর ধরন entry.content.type
এ পাওয়া যাবে।
কিছু ক্ষেত্রে আপনি ডিস্কে ফাইল ডাউনলোড করতে পারবেন না (যেমন যদি আপনার অ্যাপ Google অ্যাপ ইঞ্জিনে চলছে)। এই পরিস্থিতিতে, ফাইলের বিষয়বস্তু আনতে এবং মেমরিতে সংরক্ষণ করতে _GetFileContent()
ব্যবহার করুন।
এই উদাহরণ ডাউনলোড মেমরি একটি সংযুক্তি.
try: file_contents = client._GetFileContent(attachment.content.src) # TODO: Do something with the file contents except gdata.client.RequestError, e: raise e
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 ফিড পুনরুদ্ধার করা হচ্ছে
ACL ফিড একটি সাইটের শেয়ারিং অনুমতি নিয়ন্ত্রণ করতে ব্যবহার করা যেতে পারে এবং GetAclFeed()
পদ্ধতি ব্যবহার করে আনা যেতে পারে।
নিম্নলিখিত উদাহরণটি SitesClient
অবজেক্টে বর্তমানে সেট করা সাইটের জন্য ACL ফিড নিয়ে আসে এবং অনুমতি এন্ট্রিগুলি প্রিন্ট করে:
print "Fetching acl permissions of site '%s'...\n" % client.site feed = client.GetAclFeed() for entry in feed.entry: print '%s (%s) - %s' % (entry.scope.value, entry.scope.type, entry.role.value)
একটি সফল ক্যোয়ারী করার পরে, feed
হবে একটি gdata.sites.data.AclFeed
অবজেক্ট যেখানে gdata.sites.data.AclEntry
এর একটি তালিকা রয়েছে।
আপনি যদি SiteFeed- এ এন্ট্রি নিয়ে কাজ করেন, প্রতিটি SiteEntry
তার ACL ফিডের একটি লিঙ্ক থাকে। উদাহরণস্বরূপ, এই স্নিপেটটি ব্যবহারকারীর সাইট ফিডে প্রথম সাইটটি নিয়ে আসে এবং এর ACL ফিডকে জিজ্ঞাসা করে:
feed = client.GetSiteFeed() site_entry = feed.entry[0] print "Fetching acl permissions of site '%s'...\n" % site_entry.site_name.text feed = client.GetAclFeed(uri=site_entry.FindAclLink())
একটি সাইট শেয়ারিং
দ্রষ্টব্য : নির্দিষ্ট কিছু ACL শেয়ার করা তখনই সম্ভব হতে পারে যদি ডোমেনটি এই ধরনের অনুমতি দেওয়ার জন্য কনফিগার করা থাকে (যেমন যদি G Suite ডোমেনের জন্য ডোমেনের বাইরে শেয়ার করা সক্ষম করা থাকে ইত্যাদি)।
API ব্যবহার করে একটি Google সাইট শেয়ার করতে, পছন্দসই gdata.acl.data.AclScope
এবং gdata.acl.data.AclRole
মান সহ একটি gdata.sites.gdata.AclEntry
তৈরি করুন৷ সম্ভাব্য AclScope
এবং AclRoles
মানগুলির জন্য ACL ফিড ওভারভিউ বিভাগটি দেখুন।
এই উদাহরণটি 'user@example.com' ব্যবহারকারীকে সাইটে পড়ার অনুমতি দেয়:
import gdata.acl.data scope = gdata.acl.data.AclScope(value='user@example.com', type='user') role = gdata.acl.data.AclRole(value='reader') acl = gdata.sites.gdata.AclEntry(scope=scope, role=role) acl_entry = client.Post(acl, client.MakeAclFeedUri()) print "%s %s added as a %s" % (acl_entry.scope.type, acl_entry.scope.value, acl_entry.role.value)
গ্রুপ এবং ডোমেন লেভেল শেয়ারিং
একটি একক ব্যবহারকারীর সাথে একটি সাইট শেয়ার করার মতো, আপনি একটি Google গ্রুপ বা G Suite ডোমেন জুড়ে একটি সাইট শেয়ার করতে পারেন। প্রয়োজনীয় scope
মান নীচে তালিকাভুক্ত করা হয়.
একটি গ্রুপ ইমেল ঠিকানা ভাগ করা:
scope = gdata.acl.data.AclScope(value='group_name@example.com', type='group')
একটি সম্পূর্ণ ডোমেনে শেয়ার করা:
scope = gdata.acl.data.AclScope(value='example.com', type='domain')
ডোমেন লেভেলে শেয়ার করা শুধুমাত্র G Suite ডোমেনের জন্য সমর্থিত, এবং শুধুমাত্র সেই ডোমেনের জন্য যেখানে সাইটটি হোস্ট করা হয়েছে। উদাহরণস্বরূপ http://sites.google.com/a/domain1.com/siteA শুধুমাত্র domain1.com-এর সাথে সমগ্র সাইট শেয়ার করতে পারে, domain2.com নয়। G Suite ডোমেনে হোস্ট করা নয় এমন সাইটগুলি (যেমন http://sites.google.com/site/siteB) ডোমেনগুলিকে আমন্ত্রণ জানাতে পারে না৷
ভাগ করার অনুমতি পরিবর্তন করা হচ্ছে
একটি সাইটে বিদ্যমান শেয়ারিং অনুমতির জন্য, প্রথমে প্রশ্নে AclEntry
আনুন, ইচ্ছামতো অনুমতি পরিবর্তন করুন এবং তারপর সার্ভারে ACL পরিবর্তন করতে ক্লায়েন্টের Update()
পদ্ধতিতে কল করুন।
এই উদাহরণটি 'user@example.com' কে একজন লেখক (সহযোগী) হতে আপডেট করার মাধ্যমে একটি সাইট ভাগ করা বিভাগ থেকে আমাদের পূর্ববর্তী acl_entry
সংশোধন করে:
acl_entry.role.value = 'writer' updated_acl = client.Update(acl_entry) # To force the update, even if you do not have the latest changes to the entry: # updated_acl = client.Update(acl_entrys, force=True)
ETags সম্পর্কে আরও তথ্যের জন্য, Google Data APIs রেফারেন্স গাইড দেখুন।
শেয়ারিং অনুমতি সরানো হচ্ছে
একটি শেয়ারিং অনুমতি অপসারণ করতে, প্রথমে AclEntry
পুনরুদ্ধার করুন, তারপর ক্লায়েন্টের Delete()
পদ্ধতিতে কল করুন।
client.Delete(acl_entry)
এছাড়াও আপনি ACL এন্ট্রির edit
লিঙ্কটি Delete()
পদ্ধতিটি পাস করতে পারেন এবং/অথবা মুছে ফেলার জন্য বাধ্য করতে পারেন:
# force=True sets the If-Match: * header instead of using the entry's ETag. client.Delete(acl_entry.GetEditLink().href, force=True)
ETags সম্পর্কে আরও তথ্যের জন্য, Google Data APIs রেফারেন্স গাইড দেখুন।
বিশেষ বিষয়
আবার একটি ফিড বা এন্ট্রি পুনরুদ্ধার করা হচ্ছে
যদি আপনি একটি ফিড বা এন্ট্রি পুনরুদ্ধার করতে চান যা আপনি আগে পুনরুদ্ধার করেছেন, আপনি সার্ভারকে তালিকা বা এন্ট্রি পাঠাতে বলার মাধ্যমে কার্যকারিতা উন্নত করতে পারেন যদি আপনি এটি শেষবার পুনরুদ্ধার করার পর থেকে এটি পরিবর্তিত হয়।
এই ধরণের শর্তসাপেক্ষ পুনরুদ্ধার করতে, GetEntry()
এ একটি ETag মান পাস করুন। উদাহরণস্বরূপ, যদি আপনার একটি বিদ্যমান entry
অবজেক্ট থাকে:
import gdata.client try: entry = client.GetEntry(entry.GetSelfLink().href, desired_class=gdata.sites.data.ContentEntry, etag=entry.etag) except gdata.client.NotModified, error: print 'You have the latest copy of this entry' print error
যদি GetEntry()
gdata.client.NotModified
ব্যতিক্রমটি ছুড়ে দেয়, তাহলে এন্ট্রির ETag সার্ভারের সংস্করণের সাথে মিলে যায়, মানে আপনার কাছে সবচেয়ে আপ-টু-ডেট কপি রয়েছে। যাইহোক, যদি অন্য ক্লায়েন্ট/ব্যবহারকারী পরিবর্তন করে থাকে, তাহলে নতুন এন্ট্রি entry
ফেরত দেওয়া হবে এবং কোনো ব্যতিক্রম করা হবে না।
ETags সম্পর্কে আরও তথ্যের জন্য, Google Data APIs রেফারেন্স গাইড দেখুন।