कॉन्फ़िगरेशन
क्लाइंट का हर विकल्प, वह एनवायरनमेंट से क्या पढ़ता है, और क्या अस्वीकार करता है।
विकल्प
OpenEmail client = OpenEmail.builder() .apiKey(System.getenv("OPENEMAIL_API_KEY")) .baseUrl("https://api.openemail.uk") .timeout(Duration.ofSeconds(30)) .maxRetries(2) .header("X-Team", "billing") .build(); System.out.println(client.mode());| विकल्प | यह क्या करता है |
|---|---|
| apiKey | वर्कस्पेस API कुंजी, जो oe_live_ या oe_test_ से शुरू होती है। किसी कॉल पर देने से वह केवल उसी कॉल के लिए दूसरी कुंजी से काम करती है। |
| accessToken | एक OAuth एक्सेस टोकन, उस ऐप के लिए जिसे किसी व्यक्ति ने कनेक्ट किया है। कुंजी या टोकन में से एक पास करें, दोनों नहीं। |
| accessToken(Supplier<String>) | एक फ़ंक्शन जो एक्सेस टोकन लौटाता है। यह हर अनुरोध से पहले चलता है, इसलिए टोकन को नया करने की जगह यही है। |
| baseUrl | API का ओरिजिन। localhost:2222 जैसे सिर्फ़ होस्ट वाले मान में उसकी स्कीम जोड़ दी जाती है। |
| httpClient | आपका अपना java.net.http.HttpClient, किसी प्रॉक्सी, कस्टम SSLContext या एक्ज़ीक्यूटर के लिए। |
| timeout | एक प्रयास कितना समय ले सकता है। डिफ़ॉल्ट 30 सेकंड है, शून्य इसे बंद कर देता है, और अपलोड कम से कम दस मिनट प्रतीक्षा करते हैं। |
| maxRetries | विफल अनुरोध को कितनी बार दोबारा आज़माया जाता है। डिफ़ॉल्ट 2 है, और 0 एक बार भेजता है। |
| userAgent | User-Agent हेडर को बदलता है, जो openemail-java/ और संस्करण से बनता है। |
| header, headers | हर अनुरोध में एक हेडर जोड़ता है। |
| disableUpdateNotice | स्टैंडर्ड एरर पर आने वाली वह एक पंक्ति बंद करता है जो बताती है कि नया संस्करण आ गया है। OPENEMAIL_DISABLE_UPDATE_NOTICE=1 भी यही करता है। |
जो कुछ आप छोड़ देते हैं वह एनवायरनमेंट से पढ़ा जाता है: OPENEMAIL_API_KEY, फिर OPENEMAIL_ACCESS_TOKEN, और OPENEMAIL_BASE_URL। client.mode() बताता है कि कुंजी live कुंजी है या test कुंजी।
कॉल पर विकल्प
क्वेरी पैरामीटर और कॉल की सेटिंग एक RequestOptions में जाती हैं, जो आर्ग्युमेंट के बाद पास किया जाता है। इसमें apiKey, idempotencyKey, timeout, limit और cursor के लिए मेथड हैं, और set बाकी हर विकल्प को उसी नाम से लेता है जो API इस्तेमाल करता है। हर मेथड वही विकल्प स्वीकार करता है जो उसकी संदर्भ प्रविष्टि में सूचीबद्ध हैं, और जो विकल्प लागू नहीं होता वह कुछ भी भेजे जाने से पहले अस्वीकार कर दिया जाता है।
RequestOptions options = RequestOptions.of("folder", "inbox") .apiKey(System.getenv("OPENEMAIL_API_KEY")) .timeout(Duration.ofSeconds(5)) .limit(50); Page threads = client.threads().list(options); System.out.println(threads.size());एक RequestOptions अपरिवर्तनीय है: हर मेथड एक नया लौटाता है, इसलिए कोई साझा मान उस कोड से कभी नहीं बदल सकता जो उसमें कुछ जोड़ता है। थ्रेड को इंटरप्ट करने से प्रतीक्षा कर रही कॉल रुक जाती है।
क्लाइंट क्या अस्वीकार करता है
- ऐसी कुंजी जो
oe_live_याoe_test_से शुरू नहीं होती, और एक्सेस टोकन के साथ दी गई कुंजी। - सादे
http:पर क्रेडेंशियल भेजना, जब तक सर्वर इसी मशीन परlocalhost, किसी127.x.x.xपते या::1पर न हो। 0.0.0.0पर बेस URL, जो वह पता है जिस पर सर्वर सुनता है। उसी पोर्ट के साथ127.0.0.1इस्तेमाल करें।- खाली id, या सिर्फ़ बिंदुओं से बना id, जिसे URL पार्सर हटा देगा।
- किसी रीडायरेक्ट का पीछा करना। डिफ़ॉल्ट HTTP क्लाइंट कभी किसी रीडायरेक्ट का पीछा नहीं करता, इसलिए क्रेडेंशियल कभी किसी दूसरे होस्ट तक नहीं जाता।
किसी क्लाइंट, RequestOptions या एक्सेप्शन को प्रिंट करने पर क्रेडेंशियल कभी नहीं दिखता। कुंजी, टोकन और कस्टम हेडर के मान toString() से और क्लाइंट के लिखे हर संदेश से बाहर रखे जाते हैं।
बिना मेथड वाला एंडपॉइंट
client.raw().request किसी भी पाथ को क्लाइंट के क्रेडेंशियल, बेस URL, टाइमआउट और रीट्राई नीति के साथ कॉल करता है। पाथ एक ही / से शुरू होना चाहिए, और जो पाथ बेस URL के ओरिजिन से बाहर जाता है वह अस्वीकार कर दिया जाता है।
Object label = client.raw().request("POST", "/labels", Body.of("name", "Invoices")); System.out.println(label);