ड्राफ़्ट
`drafts.list`, `list_all`, `iterate`, `get`, `create`, `update` और `delete`।
हर मेथड
page = client.drafts.list(query: "invoice", limit: 25)draft = client.drafts.get("draft-5f0c2a9e-8b1d-4e7a-a3c6-2d9f41b7e0c8")puts page.items.size, draft[:subject] created = client.drafts.create( to: ["[email protected]"], cc: [], bcc: [], subject: "Your September invoice", html: "<p>Draft body.</p>", from: "[email protected]", threadId: "CAHk7pQ2x9LmZ4-mail.example.com") updated = client.drafts.update(created[:id], subject: "Revised")client.drafts.delete(updated[:id])update ड्राफ़्ट की id बनाए रखता है, इसलिए जिस मान से यह जवाब देता है वह हमेशा वही होता है जो आपने पास किया। अज्ञात id नया ड्राफ़्ट नहीं, बल्कि 404 है, जो OpenEmail::NotFoundError के रूप में raise होता है।
ड्राफ़्ट के फ़ील्ड API के नामों वाले keyword arguments हैं, इसलिए ड्राफ़्ट जिस थ्रेड का जवाब है वह threadId: है। इन्हें एक Hash के रूप में भी पास किया जा सकता है। ड्राफ़्ट Symbol कुंजियों वाले Hash के रूप में लौटता है, इसलिए draft[:subject] विषय पढ़ता है। हर write सिर्फ़ object और id के साथ जवाब देता है, इसलिए पूरा ड्राफ़्ट get से पढ़ें।
list उसी तरह पेज करता है जैसे threads.list। API का pageToken next_cursor के रूप में लौटता है और cursor: के रूप में जाता है, और list_all तथा iterate आपके लिए इसका पीछा करते हैं। iterate हर ड्राफ़्ट को block में yield करता है, या block के बिना एक Enumerator लौटाता है। एक पेज में 25 ड्राफ़्ट होते हैं, जब तक limit: 100 तक न माँगे। query: threads.list की खोज सिंटैक्स लेता है, और खोज कभी ड्राफ़्ट से बाहर नहीं जाती। एक पंक्ति सिर्फ़ object और id है, इसलिए प्राप्तकर्ता, विषय और बॉडी के लिए get कॉल करें।
ड्राफ़्ट की सूची कोई hasMore नहीं बताती, इसलिए जब भी cursor लौटा हो has_more? true होता है। सर्वर हर भरे पेज पर एक cursor देता है, इसलिए जो आख़िरी पेज संयोग से भरा हो उसके बाद एक ख़ाली पेज आता है।
ड्राफ़्ट DRAFT लेबल वाले थ्रेड के रूप में सहेजा जाता है, इसीलिए client.threads.list(folder: "draft") वही ड्राफ़्ट सूचीबद्ध करता है। get, update और delete किसी सामान्य थ्रेड id का जवाब 404 से देते हैं, भले ही threads.get उसे खोल ले। delete ड्राफ़्ट को हमेशा के लिए हटा देता है। वह Bin में नहीं जाता और उसे वापस नहीं लाया जा सकता।
ड्राफ़्ट भेजने के लिए उसकी id emails.send को draftId: के रूप में पास करें। ड्राफ़्ट सामग्री देता है और send envelope देता है। ड्राफ़्ट को template या translate के साथ नहीं मिलाया जा सकता।
client.emails.send( from: "[email protected]", to: "[email protected]", draftId: "draft-5f0c2a9e-8b1d-4e7a-a3c6-2d9f41b7e0c8")पैरामीटर: drafts.create और drafts.update
toArray<String>- प्राप्तकर्ता पते Strings की एक Array के रूप में, न कि वे Hash रूप जो `emails.send` स्वीकार करता है, क्योंकि यह endpoint Array को उस कॉमा से अलग सूची में जोड़ता है जो driver चाहता है। String में display name हो सकता है, जैसे `Ada Lovelace <[email protected]>`, पर कॉमा वाला नाम टूटकर दो ख़राब प्राप्तकर्ता बन जाता है। `emails.send` के विपरीत, gem यहाँ अकेली String को Array में नहीं लपेटता, इसलिए `["[email protected]"]` पास करें। create पर छोड़ी गई Array ख़ाली सहेजी जाती है। update पर छोड़ा गया फ़ील्ड सहेजे गए प्राप्तकर्ताओं को नहीं छेड़ता, क्योंकि handler पहले ड्राफ़्ट पढ़ता है और फिर मिलाता है।
ccArray<String>- Cc पते, `to` जैसे ही रूप में। create पर छोड़ने पर ख़ाली, और update पर छोड़ने पर अपरिवर्तित।
bccArray<String>- Bcc पते, `to` जैसे ही रूप में। create पर छोड़ने पर ख़ाली, और update पर छोड़ने पर अपरिवर्तित।
subjectString- ड्राफ़्ट का विषय, अधिकतम 998 वर्ण, जो RFC 5322 की पंक्ति सीमा है। create पर इसका डिफ़ॉल्ट एक ख़ाली String है, और ख़ाली विषय `(no subject)` के रूप में सहेजा जाता है, इसलिए हर ड्राफ़्ट का हमेशा एक विषय होता है।
htmlString- ड्राफ़्ट की बॉडी markup के रूप में, अधिकतम 1,000,000 वर्ण। यही बॉडी जीतती है। `html` और `text` दोनों driver के इकलौते संदेश फ़ील्ड में जाते हैं, इसलिए दोनों भेजने पर यही सहेजी जाती है।
textString- सादा-टेक्स्ट बॉडी, अधिकतम 1,000,000 वर्ण, जो सिर्फ़ तब इस्तेमाल होती है जब `html` न हो। ड्राफ़्ट दो हिस्सों के बजाय एक बॉडी सहेजता है, इसलिए यहाँ दिया गया टेक्स्ट ड्राफ़्ट पढ़ने पर बिना बदले `html` पर लौटता है।
fromString- ड्राफ़्ट पर सहेजा जाने वाला प्रेषक पता, display name के साथ या बिना। create पर छोड़ने पर ड्राफ़्ट का कोई प्रेषक नहीं होता। update पर छोड़ने पर सहेजे गए ड्राफ़्ट से आगे ले जाया जाता है। driver उसे दी गई चीज़ों से पूरा संदेश दोबारा बनाता है, इसलिए इसे छोड़ देने वाला अधूरा patch चुपचाप चुना गया प्रेषक बदल देता। update पर ख़ाली String या nil इसे साफ़ कर देता है।
threadIdString- ड्राफ़्ट को किसी मौजूदा थ्रेड से जोड़ें ताकि वह जवाब के रूप में सहेजा जाए। `from` की तरह, update पर छोड़ने पर यह आगे ले जाया जाता है, क्योंकि इसके बिना संदेश दोबारा बनाने से जवाब अपने थ्रेड से अलग हो जाता। update पर ख़ाली String इसे अलग कर देती है। ड्राफ़्ट फिर भी अपनी id के तहत अपने अलग थ्रेड के रूप में सहेजा जाता है, इसलिए वह जिस थ्रेड का जवाब है उसके अंदर नहीं, ड्राफ़्ट के साथ सूचीबद्ध होता है।
किसी फ़ील्ड को बनाए रखने के लिए उसे छोड़ दें। nil पास करना वैसा नहीं है। gem उसे भेजता है, और update पर from को छोड़कर हर फ़ील्ड उसे 422 invalid_parameter के साथ अस्वीकार करता है, जहाँ nil प्रेषक साफ़ कर देता है। वैकल्पिक मानों वाले Hash को पास करने से पहले उस पर compact कॉल करें। बॉडी भी सख़्त है। इन आठ के बाहर का फ़ील्ड उसी तरह अस्वीकार होता है, और अटैचमेंट के लिए कोई फ़ील्ड नहीं है।
जवाब: एक ड्राफ़्ट (drafts.get)
objectString- हमेशा `draft`।
idString- ड्राफ़्ट की id, `draft-` के बाद एक UUID। writes पूरे ड्राफ़्ट के बजाय सिर्फ़ `object` और `id` के साथ जवाब देते हैं, इसलिए भेजी गई id दोबारा इस्तेमाल करने के बजाय नतीजे से id पढ़ें।
toArray<String>- प्राप्तकर्ता पते जैसे ड्राफ़्ट ने सहेजे, सादे, हर display name हटाकर। जब ड्राफ़्ट में कोई न हो तो ख़ाली Array, कभी nil नहीं।
ccArray<String>- Cc पते जैसे सहेजे गए। जब ड्राफ़्ट में कोई न हो तो ख़ाली Array, कभी nil नहीं।
bccArray<String>- Bcc पते जैसे सहेजे गए। जब ड्राफ़्ट में कोई न हो तो ख़ाली Array, कभी nil नहीं।
subjectString- सहेजा गया विषय, कभी nil नहीं। बिना विषय सहेजा गया ड्राफ़्ट `(no subject)` पढ़ता है, वह placeholder जो मेलबॉक्स सहेजता है, इसलिए ख़ाली String जाँचने के बजाय उसी से तुलना करें।
htmlString- सहेजी गई बॉडी, या जहाँ ड्राफ़्ट में कोई न हो वहाँ ख़ाली String। बाहर जाते समय कोई अलग text फ़ील्ड नहीं है, इसलिए सिर्फ़ `text` के साथ सहेजा गया ड्राफ़्ट यहीं लौटाया जाता है।
fromString or nil- वह पता जिसके साथ ड्राफ़्ट सहेजा गया, जो सिर्फ़ तब तक बताया जाता है जब तक वर्कस्पेस उससे भेज सकता है। बिना प्रेषक के सहेजे गए ड्राफ़्ट के लिए, या ऐसे पते से सहेजे गए ड्राफ़्ट के लिए जो तब से हट चुका है, यह nil है।
threadIdString or nil- वह थ्रेड जिसका ड्राफ़्ट जवाब है, या नई बातचीत शुरू करने वाले ड्राफ़्ट के लिए nil।
attachmentsArray<Hash>- हर प्रविष्टि में सिर्फ़ `filename` और `contentType` होते हैं, क्योंकि ड्राफ़्ट के अटैचमेंट बिना सामग्री के, नाम और टाइप के रूप में सहेजे जाते हैं। एक `update` इस सूची को ख़ाली कर देता है।