API କଲ୍ ଓ ଟୋକେନ୍ ରିଫ୍ରେସ୍ ପାଇଁ gspread 6 ପ୍ରକ୍ସି ରାଉଟିଂ
gspread କୁ ପ୍ରକ୍ସି-ସଚେତନ ଅଧିକୃତ ସେସନ୍ ଦିଅନ୍ତୁ ଏବଂ Google ପ୍ରମାଣପତ୍ର ରିଫ୍ରେସ୍ କରିବା ପାଇଁ ବ୍ୟବହୃତ ଅଲଗା ଟ୍ରାନ୍ସପୋର୍ଟ କନଫିଗର୍ କରନ୍ତୁ।
ଯେତେବେଳେ ଦୁଇଟି ମଧ୍ୟରୁ କୌଣସିଟି ପ୍ରକ୍ସି ଆବଶ୍ୟକ କରେ, ସେତେବେଳେ gspread ର ଅଧିକୃତ API ସେସନ୍ ଏବଂ ପ୍ରମାଣପତ୍ର ରିଫ୍ରେସ୍ ଅନୁରୋଧର ଟ୍ରାନ୍ସପୋର୍ଟ ଉଭୟକୁ କନଫିଗର୍ କରନ୍ତୁ:
import requests
import gspread
from google.auth.transport.requests import AuthorizedSession, Request
routes = {
'http': 'http://proxy.example:8080',
'https': 'http://proxy.example:8080',
}
token_session = requests.Session()
token_session.proxies.update(routes)
session = AuthorizedSession(
credentials,
auth_request=Request(session=token_session),
)
session.proxies.update(routes)
client = gspread.Client(auth=credentials, session=session)ଏହା gspread 6 ର Client ଇଣ୍ଟରଫେସ୍ କୁ ଦିଆଯାଇଥିବା ସେସନ୍ ଏବଂ ଆପ୍ର ବିଦ୍ୟମାନ ପ୍ରମାଣପତ୍ର ସହିତ ବ୍ୟବହାର କରେ। ଏହା ଟ୍ରାନ୍ସପୋର୍ଟ କନଫିଗର୍ କରେ, ସ୍ପ୍ରେଡସିଟ୍ ଅନୁମତି କିମ୍ବା OAuth ସ୍କୋପ୍ ନୁହେଁ। ଅନୁମତିପ୍ରାପ୍ତ ସାର୍ବଜନୀନ ପଥରେ ଥିବା ସାର୍ବଜନୀନ API ଏବଂ ଟୋକେନ୍ ଏଣ୍ଡପଏଣ୍ଟ ପାଇଁ ରୁଟ୍ ମ୍ୟାପ୍ ପାଇଁ HTTP ପ୍ରକ୍ସି ତାଲିକାରୁ ଅପ୍ରମାଣିତ HTTP ପ୍ରାର୍ଥୀ ବାଛନ୍ତୁ। ମଧ୍ୟସ୍ଥକାରୀ ବଦଳାଇବା ସମୟରେ ଉଭୟ ସେସନ୍କୁ କୌଣସି ସଞ୍ଚିତ ପ୍ରକ୍ସି ଖାତାରୁ ମୁକ୍ତ ରଖନ୍ତୁ।
AuthorizedSession API ଅନୁରୋଧରେ ପ୍ରମାଣପତ୍ର ଯୋଡେ ଏବଂ ସେଗୁଡ଼ିକୁ ରିଫ୍ରେସ୍ କରିପାରେ। auth_request ବିନା google-auth ସେହି ଟ୍ରାଫିକ୍ ପାଇଁ ଆଉ ଏକ Requests ସେସନ୍ ସୃଷ୍ଟି କରିପାରେ। ଅଧିକୃତ ସେସନ୍ର ପ୍ରକ୍ସି ଡିଫଲ୍ଟ ସ୍ୱତନ୍ତ୍ରଭାବେ ସୃଷ୍ଟି ହୋଇଥିବା ସେସନ୍ କନଫିଗର୍ କରେ ନାହିଁ।
ଉପରୋକ୍ତ Request ଆଡାପ୍ଟର ସେହି ଦ୍ୱିତୀୟ ପଥକୁ ଉଦ୍ଦେଶ୍ୟମୂଳକ ଭାବେ ଯୋଗାଇ ଦିଏ। ବ୍ୟବହାର ସମୟରେ ଉଭୟ ସେସନ୍ ରଖନ୍ତୁ, ତାପରେ ସେମାନଙ୍କ ଆପ୍ଲିକେସନ୍ ପରିସରର ଶେଷରେ ବାହ୍ୟ ମାଲିକାନାର ସେସନ୍ ବନ୍ଦ କରନ୍ତୁ।
ଏହି ସେସନ୍ ଡିଫଲ୍ଟ, ତେଣୁ Requests ପରିବେଶର ମିଶ୍ରଣ ଏବେ ମଧ୍ୟ ସେଗୁଡ଼ିକୁ ପ୍ରଭାବିତ କରିପାରେ। ସ୍ଥିର ପଥ ଆବଶ୍ୟକ ହେଲେ ଉତ୍ତରାଧିକାରୀ ପ୍ରକ୍ସି ଇନପୁଟ୍ ବିଚାର କରନ୍ତୁ।
ବିଫଳ URL ବ୍ୟବହାର କରି ସ୍ପ୍ରେଡସିଟ୍ ଅସ୍ୱୀକାର, ପ୍ରକ୍ସି ଚ୍ୟାଲେଞ୍ଜ ଏବଂ ପ୍ରମାଣପତ୍ର ଏଣ୍ଡପଏଣ୍ଟ ବିଫଳତାକୁ ଅଲଗା କରନ୍ତୁ। କ୍ୟାସ୍ ହୋଇଥିବା ଆକ୍ସେସ୍ ଟୋକେନ୍ କୌଣସି ରିଫ୍ରେସ୍ ନକରି API କଲ୍ ସଫଳ କରିପାରେ।