UNPKG

@randajan/oauth2-client

Version:

Lightweight Node.js helper that streamlines OAuth 2.0 and service-account authentication for all Google APIs, giving downstream packages hassle-free token acquisition and refresh

8 lines (7 loc) 5.72 kB
{ "version": 3, "sources": ["../../../src/seznam/SeznamAccount.js", "../../../src/seznam/SeznamGrant.js", "../../../src/seznam/index.js"], "sourcesContent": ["import { google } from \"googleapis\";\r\nimport { solids } from \"@randajan/props\";\r\n\r\nimport { OAuth2Account } from \"../class/OAuth2Account\";\r\nimport { vault } from \"../consts\";\r\n\r\n\r\n\r\nexport class SeznamAccount extends OAuth2Account {\r\n\r\n async profile() {\r\n const grant = vault.get(this.client);\r\n const { access_token } = this.credentials;\r\n\r\n return grant.fetchApiGet(\"/user\", {\r\n Authorization: `bearer ${access_token}`, \"Accept\": \"application/json\"\r\n });\r\n }\r\n\r\n async tokens() {\r\n return this.credentials;\r\n }\r\n\r\n async scopes() {\r\n if (this.credentials?.scopes) {\r\n return super.scopes(this.credentials.scopes);\r\n }\r\n return [];\r\n }\r\n\r\n}", "// SeznamGrant.js\r\nimport fetch from \"node-fetch\";\r\nimport { OAuth2Grant } from \"../class/OAuth2Grant\";\r\nimport { extendURL } from \"../tools\";\r\nimport { RedirectError } from \"../errors\";\r\nimport { SeznamAccount } from \"./SeznamAccount\";\r\n\r\nexport class SeznamGrant extends OAuth2Grant {\r\n\r\n static name = \"seznam\";\r\n static uidKey = \"email\";\r\n static scopePrefix = \"\"; // Seznam prefix nepou\u017E\u00EDv\u00E1\r\n static scopesCommon = [\"identity\"]; // povinn\u00FD scope\r\n static scopesNoPrefix = []; // nic zvl\u00E1\u0161tn\u00EDho\r\n static Account = SeznamAccount;\r\n\r\n createApiUrl(path, query = {}) {\r\n return extendURL(\r\n `https://login.szn.cz/api/v1${path}`,\r\n query\r\n );\r\n }\r\n\r\n async fetchApiGet(path, headers, errorCode = 2) {\r\n const url = this.createApiUrl(path);\r\n const res = await fetch(url, { headers });\r\n if (!res.ok) { throw new RedirectError(errorCode, await res.text()); }\r\n return res.json();\r\n }\r\n\r\n async fetchApiPost(path, body, errorCode = 2) {\r\n const url = this.createApiUrl(path);\r\n const res = await fetch(url, {\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/json\", \"Accept\": \"application/json\" },\r\n body: JSON.stringify(body)\r\n });\r\n if (!res.ok) { throw new RedirectError(errorCode, await res.text()); }\r\n return res.json();\r\n }\r\n\r\n generateAuthUrl(scope, state, extra) {\r\n const { clientId, redirectUri, isOffline } = this;\r\n\r\n const access_type = isOffline ? \"offline\" : \"\";\r\n\r\n return this.createApiUrl(\"/oauth/auth\", {\r\n ...extra,\r\n access_type,\r\n response_type: \"code\",\r\n client_id: clientId,\r\n redirect_uri: redirectUri,\r\n scope: scope.join(\",\"), // Seznam odd\u011Bluje \u010D\u00E1rkou\r\n state,\r\n });\r\n }\r\n\r\n async swapCodeForTokens(code) {\r\n const { clientId, clientSecret, redirectUri } = this;\r\n\r\n return this.fetchApiPost(\"/oauth/token\", {\r\n grant_type: \"authorization_code\",\r\n code,\r\n client_id: clientId,\r\n client_secret: clientSecret,\r\n redirect_uri: redirectUri\r\n }, 2);\r\n\r\n }\r\n}\r\n", "import { OAuth2Client } from \"../class/OAuth2Client\";\r\nimport { SeznamAccount } from \"./SeznamAccount\";\r\nimport { SeznamGrant } from \"./SeznamGrant\";\r\n\r\n\r\nexport const createSeznamOAuth2 = (options={})=>new OAuth2Client(SeznamGrant, options);\r\nexport default createSeznamOAuth2;\r\n\r\nexport {\r\n SeznamAccount,\r\n SeznamGrant\r\n}"], "mappings": ";;;;;;;;;;;;AAAA,SAAS,cAAc;AACvB,SAAS,cAAc;AAOhB,IAAM,gBAAN,cAA4B,cAAc;AAAA,EAE7C,MAAM,UAAU;AACZ,UAAM,QAAQ,MAAM,IAAI,KAAK,MAAM;AACnC,UAAM,EAAE,aAAa,IAAI,KAAK;AAE9B,WAAO,MAAM,YAAY,SAAS;AAAA,MAC9B,eAAe,UAAU,YAAY;AAAA,MAAI,UAAU;AAAA,IACvD,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,SAAS;AACX,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,MAAM,SAAS;AACX,QAAI,KAAK,aAAa,QAAQ;AAC1B,aAAO,MAAM,OAAO,KAAK,YAAY,MAAM;AAAA,IAC/C;AACA,WAAO,CAAC;AAAA,EACZ;AAEJ;;;AC7BA,OAAO,WAAW;AAMX,IAAM,cAAN,cAA0B,YAAY;AAAA,EAEzC,OAAO,OAAO;AAAA,EACd,OAAO,SAAS;AAAA,EAChB,OAAO,cAAc;AAAA;AAAA,EACrB,OAAO,eAAe,CAAC,UAAU;AAAA;AAAA,EACjC,OAAO,iBAAiB,CAAC;AAAA;AAAA,EACzB,OAAO,UAAU;AAAA,EAEjB,aAAa,MAAM,QAAQ,CAAC,GAAG;AAC3B,WAAO;AAAA,MACH,8BAA8B,IAAI;AAAA,MAClC;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,YAAY,MAAM,SAAS,YAAY,GAAG;AAC5C,UAAM,MAAM,KAAK,aAAa,IAAI;AAClC,UAAM,MAAM,MAAM,MAAM,KAAK,EAAE,QAAQ,CAAC;AACxC,QAAI,CAAC,IAAI,IAAI;AAAE,YAAM,IAAI,cAAc,WAAW,MAAM,IAAI,KAAK,CAAC;AAAA,IAAG;AACrE,WAAO,IAAI,KAAK;AAAA,EACpB;AAAA,EAEA,MAAM,aAAa,MAAM,MAAM,YAAY,GAAG;AAC1C,UAAM,MAAM,KAAK,aAAa,IAAI;AAClC,UAAM,MAAM,MAAM,MAAM,KAAK;AAAA,MACzB,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,oBAAoB,UAAU,mBAAmB;AAAA,MAC5E,MAAM,KAAK,UAAU,IAAI;AAAA,IAC7B,CAAC;AACD,QAAI,CAAC,IAAI,IAAI;AAAE,YAAM,IAAI,cAAc,WAAW,MAAM,IAAI,KAAK,CAAC;AAAA,IAAG;AACrE,WAAO,IAAI,KAAK;AAAA,EACpB;AAAA,EAEA,gBAAgB,OAAO,OAAO,OAAO;AACjC,UAAM,EAAE,UAAU,aAAa,UAAU,IAAI;AAE7C,UAAM,cAAc,YAAY,YAAY;AAE5C,WAAO,KAAK,aAAa,eAAe;AAAA,MACpC,GAAG;AAAA,MACH;AAAA,MACA,eAAe;AAAA,MACf,WAAW;AAAA,MACX,cAAc;AAAA,MACd,OAAO,MAAM,KAAK,GAAG;AAAA;AAAA,MACrB;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,kBAAkB,MAAM;AAC1B,UAAM,EAAE,UAAU,cAAc,YAAY,IAAI;AAEhD,WAAO,KAAK,aAAa,gBAAgB;AAAA,MACrC,YAAY;AAAA,MACZ;AAAA,MACA,WAAW;AAAA,MACX,eAAe;AAAA,MACf,cAAc;AAAA,IAClB,GAAG,CAAC;AAAA,EAER;AACJ;;;AChEO,IAAM,qBAAqB,CAAC,UAAQ,CAAC,MAAI,IAAI,aAAa,aAAa,OAAO;AACrF,IAAO,iBAAQ;", "names": [] }