LANG SELRCT

コードを書く場所

2019年3月7日木曜日

LambdaでLINEにPUSHしてみる(複数のjsファイル間でデータを受け渡す)


Lambda Function の中で require と exports の理解を試みたときの備忘録。


AWS LambdaでLINEにPUSHしてみる
で書いたコードを
機能毎にファイルに分けて
require と exports で関数や値を受け渡してみます。


試したこと
  1. index.js の中ですべてのファイルを require して exports する
  2. index.js 以外の各ファイルでは index を require する
  3. index.ファイル名.関数()の形で使ってみる


Lambda Function

index.js
/************************************
require
************************************/
var https = require('https');
var promise = require('promise');
var options = require('options');
var payload = require('payload');

/************************************
exports
************************************/
exports.https = https;
exports.options = options;
exports.payload = payload;
exports.text = "hello!!";

exports.handler = async function(event) {
  var results = await promise.getData();
  var json = returnJson(results);
  return json;
};

/************************************
JSONを返す
************************************/
function returnJson(results) {
  const response = {
    body: results,
  };
  return response;
}





options.js
var index = require('index');

exports.get = function() {
  var options = {
    "method": 'POST',
    "host": 'api.line.me',
    "path": '/v2/bot/message/push',
    "headers": {
      "Content-type": "application/json",
      'Content-Length': Buffer.byteLength(index.payload.get()),
      "Authorization": " Bearer " + process.env.token
    }
  };
  return options;
};




payload.js
var index = require('index');

exports.get = function() {
  var data = {
    "to": process.env.user_id,
    "messages": [{
      "type": "text",
      "text": index.text,
    }]
  };
  var payload = JSON.stringify(data);
  return payload;
};





promise.js
var index = require('index');

exports.getData = function () {
  return new Promise(resolveFunc);
};

/************************************
options.jsのexports.getの戻り値でAPIたたいて"SUCCESS"を返す
************************************/
function resolveFunc(callback) { 
  var req = index.https.request(index.options.get(), function(){
    callback("SUCCESS");
  });
  req.write(index.payload.get());  
  req.end();
}


補足

最初はここに書いたような index ですべてを require して exports せず、各ファイルで必要なファイルを require するコードを試しました。

各ファイルで同じ外部ファイルを require していたので、 require するのは index だけにして、index の中で exports した外部ファイルを読み込んで、その関数や変数を利用できないかと試してみたくなって書きました。

Lambda や Node.js はまだ試してから日が浅いので、これから。


関連記事