From 49ba51fff13a35de9f42b15e0eeed80b6dee3912 Mon Sep 17 00:00:00 2001 From: Hideki Yoshioka Date: Wed, 10 Feb 2021 22:21:02 +0900 Subject: [PATCH] =?UTF-8?q?100MB=E3=81=BE=E3=81=A7=E5=8F=AF=E8=83=BD?= =?UTF-8?q?=E3=81=AA=E8=A8=AD=E5=AE=9A=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/index.js | 2 +- src/sdk/api/freee-api-client.ts | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/index.js b/lib/index.js index 90e6fba..b995461 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,2 +1,2 @@ -!function(e,t){for(var r in t)e[r]=t[r]}(this,function(e){var t={};function r(a){if(t[a])return t[a].exports;var i=t[a]={i:a,l:!1,exports:{}};return e[a].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,a){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(a,i,function(t){return e[t]}.bind(null,i));return a},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1)}([function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const a=r(8),i=JSON.parse(process.env.FIREBASE_CONFIG).projectId,n=a.config().env&&a.config().env.region?a.config().env.region:"asia-northeast1";var s;!function(e){e.apiHost="apiHost",e.appHost="appHost",e.authHost="authHost",e.redirectPath="redirectPath",e.callbackPath="callbackPath",e.companiesPath="companiesPath",e.homePath="homePath",e.tokenHost="tokenHost",e.authorizePath="authorizePath",e.tokenPath="tokenPath",e.cryptoKeyBucket="cryptoKeyBucket"}(s=t.ConfigKeys||(t.ConfigKeys={}));const o={freee:[{key:s.apiHost,default:"https://api.freee.co.jp",production:"https://api.freee.co.jp"},{key:s.appHost,default:"http://localhost:5000",production:`https://${i}.web.app`},{key:s.authHost,default:`http://localhost:5001/${i}/${n}/api/auth`,production:`https://${n}-${i}.cloudfunctions.net/api/auth`},{key:s.redirectPath,default:"/redirect"},{key:s.callbackPath,default:"/callback"},{key:s.companiesPath,default:"/companies"},{key:s.homePath,default:"/"},{key:s.tokenHost,default:"https://accounts.secure.freee.co.jp",production:"https://accounts.secure.freee.co.jp"},{key:s.authorizePath,default:"/public_api/authorize"},{key:s.tokenPath,default:"/public_api/token"}],firebase:[{key:s.cryptoKeyBucket,default:`${i}.appspot.com`}]};t.ConfigManager=class{static get(e,t){return e&&this.hasKey(e,t)?e[t]:this.getDefaultValue(t)}static getFunctionsConfigs(){return a.config()}static getDefaultValue(e){const t=[].concat(o.freee).concat(o.firebase).find(t=>t.key===e);return this.isProduction()&&t.production?t.production:t.default}static isProduction(){const e=this.getFunctionsConfigs();return e.env&&"production"===e.env.mode}static hasKey(e,t){return Object.keys(e).find(e=>e===t)}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const a=r(2);t.FreeeServerSDK=a.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const a=r(3),i=r(4),n=r(5),s=r(7),o=r(0),c=r(9),h=r(12);t.default=class{constructor(e,t){const u=e.freee;this.admin=t?i.initializeApp({credential:i.credential.cert(t),databaseURL:`https://${t.project_id}.firebaseio.com`,storageBucket:`${t.project_id}.appspot.com`}):i.initializeApp();const p=o.ConfigManager.get(e.firebase,o.ConfigKeys.cryptoKeyBucket),f=p?new c.default(this.admin.storage().bucket(p)):null,l=r(13).create(this.getCredentials(u)),d=new h.TokenManager(this.admin,l,f);a.default.defaults.baseURL=o.ConfigManager.get(u,o.ConfigKeys.apiHost),this.apiClient=new n.FreeeAPIClient(d,a.default),this.firebaseAuthClient=new s.FreeeFirebaseAuthClient(this.admin,l,a.default,d,e)}firebaseApp(){return this.admin}api(){return this.apiClient}auth(){return this.firebaseAuthClient}getCredentials(e){const t=o.ConfigManager.getFunctionsConfigs().freee;return{client:{id:t.client_id,secret:t.client_secret},auth:{tokenHost:o.ConfigManager.get(e,o.ConfigKeys.tokenHost),authorizePath:o.ConfigManager.get(e,o.ConfigKeys.authorizePath),tokenPath:o.ConfigManager.get(e,o.ConfigKeys.tokenPath)}}}}},function(e,t){e.exports=require("axios")},function(e,t){e.exports=require("firebase-admin")},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const a=r(6);t.FreeeAPIClient=class{constructor(e,t){this.tokenManager=e,this.axios=t}get(e,t,r){return this.tokenManager.get(r).then(r=>{const a={Authorization:`Bearer ${r}`,"X-Api-Version":"2020-06-15","Content-Type":"application/json"};return this.axios.get(e,{params:t,headers:a})})}post(e,t,r){return this.tokenManager.get(r).then(r=>{let i=t,n={},s="application/json";if("api/1/receipts"===e){const e=new a;Object.keys(t).forEach(r=>{e.append(r,t[r])}),i=e,n=e.getHeaders(),s="multipart/form-data"}return n.Authorization=`Bearer ${r}`,n["X-Api-Version"]="2020-06-15",n["Content-Type"]=s,this.axios.post(e,i,{headers:n})})}put(e,t,r){return this.tokenManager.get(r).then(r=>{const a={Authorization:`Bearer ${r}`,"X-Api-Version":"2020-06-15","Content-Type":"application/json"};return this.axios.put(e,t,{headers:a})})}delete(e,t,r){return this.tokenManager.get(r).then(r=>{const a={Authorization:`Bearer ${r}`,"X-Api-Version":"2020-06-15","Content-Type":"application/json"};return this.axios.delete(e,{data:t,headers:a})})}}},function(e,t){e.exports=require("form-data")},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const a=r(0);t.FreeeFirebaseAuthClient=class{constructor(e,t,r,i,n){this.admin=e,this.oauth2=t,this.axios=r,this.tokenManager=i;const s=n.freee,o=a.ConfigManager.getFunctionsConfigs();this.clientId=o.freee.client_id,this.clientSecret=o.freee.client_secret,this.redirectPath=a.ConfigManager.get(s,a.ConfigKeys.redirectPath),this.callbackPath=a.ConfigManager.get(s,a.ConfigKeys.callbackPath),this.companiesPath=a.ConfigManager.get(s,a.ConfigKeys.companiesPath),this.homePath=a.ConfigManager.get(s,a.ConfigKeys.homePath),this.appHost=a.ConfigManager.get(s,a.ConfigKeys.appHost),this.authHost=a.ConfigManager.get(s,a.ConfigKeys.authHost),this.apiKey=n.firebase&&n.firebase.apiKey}redirect(e){const t=this.oauth2.authorizationCode.authorizeURL({redirect_uri:`${this.authHost}${this.getCallbackPath()}`});e.redirect(t)}async callback(e,t){try{const r=await this.oauth2.authorizationCode.getToken({client_id:this.clientId,client_secret:this.clientSecret,code:e,redirect_uri:`${this.authHost}${this.getCallbackPath()}`}),a={accessToken:r.access_token,refreshToken:r.refresh_token,expiresIn:r.expires_in,createdAt:r.created_at},i=await this.getFreeeUser(a.accessToken),n=i.data.user.id,s=i.data.user.email,o=i.data.user.display_name?i.data.user.display_name:"",c=await this.createFirebaseAccount(n,s,o,a);t.redirect(`${this.appHost}${this.homePath}?token=${c}`)}catch(e){console.error("Some error occured on login process:",e),t.send(this.signInRefusedTemplate())}}getRedirectPath(){return this.redirectPath}getCallbackPath(){return this.callbackPath}getCompaniesPath(){return this.companiesPath}async createCryptoKey(e){await this.tokenManager.createCryptoKey(e)}getFreeeUser(e){return this.axios.get("/api/1/users/me?companies=true",{headers:{Authorization:`Bearer ${e}`}})}async createFirebaseAccount(e,t,r,a){const i=e.toString();return await this.tokenManager.save(i,t,a),await this.admin.auth().updateUser(i,{email:t,displayName:r}).catch(async e=>{if("auth/user-not-found"===e.code)return await this.admin.auth().createUser({uid:i,email:t,displayName:r});throw e}),await this.admin.auth().createCustomToken(i)}signInRefusedTemplate(){return`\n