UNPKG

steemkr

Version:

스팀잇 기반 CLI 툴 : CLI(Command Line Interface) Tool for steemit.

135 lines (113 loc) 3.9 kB
const help = require('./help'); const {getLocalTime} = require('../util/wdate'); const {question} = require('../util/wutil'); const {to} = require('../util/wutil'); const steem = require('steem'); const dateFormat = require('dateformat'); const ora = require('ora'); // 기본값 const STEEM_AUTHOR = process.env.STEEM_AUTHOR; const STEEM_KEY_ACTIVE = process.env.STEEM_KEY_ACTIVE; /* * 파라미터 정보를 초기화 해준다 * @param args 외부로부터 입력받은 파라미터 */ function initParams(args) { // 초기화 args = args?args:[]; // new 처리 하므로 return 처리 해야 됨에 유의 // 1번째 : 작가 if(args.length==0){ if(STEEM_AUTHOR){ args.push(STEEM_AUTHOR); } } // 2번째 : 엑티브 키 if(args.length==1){ if(STEEM_KEY_ACTIVE){ args.push(STEEM_KEY_ACTIVE); } } return args; } let spinner; async function orderCancel(author, wif){ let err; // 내부거래소 주문 목록 조회 let orders; spinner = ora().start('loading orders'); [err,orders] = await to(steem.api.getOpenOrdersAsync(author)); if(err){ // 오류처리 spinner.fail(); return Promise.reject(err); } spinner.succeed(' '); // 내부거래소 주문 목록 출력 let orderlist = []; for(let result of orders){ console.log(`x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x`); console.log(`⚡️ 주문번호 : ${result.orderid} (삭제시 필요)`); console.log(`x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x`); console.log(`판매 : ${result.sell_price.base}`); console.log(`구매 : ${result.sell_price.quote}`); console.log(`____________________________________________________________`); console.log(`생성일 : ${dateFormat(getLocalTime(result.created),'yyyy-mm-dd HH:MM:ss')}`); console.log(`만료일 : ${dateFormat(getLocalTime(result.expiration),'yyyy-mm-dd HH:MM:ss')}`); console.log(`____________________________________________________________`); orderlist.push(result.orderid); } if(orderlist.length==0){ // 오류처리 return Promise.reject('주문 목록이 존재하지 않습니다.'); } // 문의 let orderid; [err,orderid] = await to(question(`취소할 주문번호를 입력 바랍니다 : `)); if(err){ // 오류처리 return Promise.reject(err); }else{ orderid = Number(orderid.trim()); // 숫자로 변경처리 해야 됨 if(!orderlist.includes(orderid)){ // 오류처리 return Promise.reject(`입력받은 주문번호 ( ${orderid} ) 는 목록 ( ${orderlist.join(', ')} ) 에 포함되지 않았습니다.`); } } // 주문 취소 let cancel; spinner = ora().start('canceling orders'); [err,cancel] = await to(steem.broadcast.limitOrderCancelAsync(wif, author, orderid)); if(err){ // 오류처리 spinner.fail(); return Promise.reject(err); } spinner.succeed(' '); return Promise.resolve(orderid); } module.exports = (args)=>{ // 파라미터 초기화 args = initParams(args); // 입력 파라미터 유효성 검증 if(args.length!=2){ console.error('\n [경고] 파라미터 오류 : 아래 메뉴얼을 참조 바랍니다'); help('buycancel'); return; } let author = args[0]; let wif = args[1]; orderCancel(author, wif) .then(orderid=>{ console.log(`____________________________________________________________`); console.log(`처리완료 : `); console.log(`주문번호 (${orderid}) 가 정상적으로 취소되었습니다.`); console.log(`____________________________________________________________`); }) .catch(e=>{ console.log(`____________________________________________________________`); console.log(`오류발생 : `); console.error(e); console.log(`____________________________________________________________`); }); };