Browse Source

test forward purchase

feature/dockerfile-arm
Evan Feenstra 5 years ago
parent
commit
228fdd443b
  1. 4
      api/controllers/messages.ts
  2. 2
      api/controllers/payment.ts
  3. 4
      api/hub.ts
  4. 65
      api/network/modify.ts
  5. 22
      api/network/receive.ts
  6. 4
      dist/api/controllers/messages.js
  7. 2
      dist/api/controllers/messages.js.map
  8. 2
      dist/api/controllers/payment.js
  9. 2
      dist/api/controllers/payment.js.map
  10. 4
      dist/api/hub.js
  11. 2
      dist/api/hub.js.map
  12. 63
      dist/api/network/modify.js
  13. 2
      dist/api/network/modify.js.map
  14. 20
      dist/api/network/receive.js
  15. 2
      dist/api/network/receive.js.map

4
api/controllers/messages.ts

@ -153,7 +153,7 @@ const sendMessage = async (req, res) => {
} }
const receiveMessage = async (payload) => { const receiveMessage = async (payload) => {
console.log('received message', { payload }) // console.log('received message', { payload })
var date = new Date(); var date = new Date();
date.setMilliseconds(0) date.setMilliseconds(0)
@ -183,7 +183,7 @@ const receiveMessage = async (payload) => {
} }
const message = await models.Message.create(msg) const message = await models.Message.create(msg)
console.log('saved message', message.dataValues) // console.log('saved message', message.dataValues)
socket.sendJson({ socket.sendJson({
type: 'message', type: 'message',

2
api/controllers/payment.ts

@ -153,7 +153,7 @@ const receivePayment = async (payload) => {
const message = await models.Message.create(msg) const message = await models.Message.create(msg)
console.log('saved message', message.dataValues) // console.log('saved message', message.dataValues)
socket.sendJson({ socket.sendJson({
type: 'direct_payment', type: 'direct_payment',

4
api/hub.ts

@ -238,7 +238,9 @@ const sendNotification = async (chat, name, type) => {
headers: { 'Content-Type': 'application/json' } headers: { 'Content-Type': 'application/json' }
}) })
.then(res => res.json()) .then(res => res.json())
.then(json => console.log('[hub notification]', json)) .then(json => {
// console.log('[hub notification]', json)
})
} }
export { export {

65
api/network/modify.ts

@ -13,22 +13,18 @@ const constants = require(path.join(__dirname,'../../config/constants.json'))
const msgtypes = constants.message_types const msgtypes = constants.message_types
export async function modifyPayloadAndSaveMediaKey(payload, chat, sender) { export async function modifyPayloadAndSaveMediaKey(payload, chat, sender) {
if(payload.type===msgtypes.attachment) { if(payload.type!==msgtypes.attachment) return payload
try{ try{
const ret = await downloadAndUploadAndSaveReturningTermsAndKey(payload,chat,sender) const ret = await downloadAndUploadAndSaveReturningTermsAndKey(payload,chat,sender)
return fillmsg(payload, ret) // key is re-encrypted later return fillmsg(payload, ret) // key is re-encrypted later
} catch(e) { } catch(e) {
console.log("[modify] error", e) console.log("[modify] error", e)
return payload
}
// how to link w og msg? ogMediaToken?
} else {
return payload return payload
} }
} }
// "purchase" type // "purchase" type
export async function purchaseFromOriginalSender(payload, chat, sender){ export async function purchaseFromOriginalSender(payload, chat, purchaser){
if(payload.type!==msgtypes.purchase) return if(payload.type!==msgtypes.purchase) return
const mt = payload.message && payload.message.mediaToken const mt = payload.message && payload.message.mediaToken
@ -42,16 +38,45 @@ export async function purchaseFromOriginalSender(payload, chat, sender){
let price = terms.meta && terms.meta.amt let price = terms.meta && terms.meta.amt
if(amount<price) return // not enough sats if(amount<price) return // not enough sats
const owner = await models.Contact.findOne({where: {isOwner:true}})
if(mediaKey) { // ALREADY BEEN PURHCASED! simply send if(mediaKey) { // ALREADY BEEN PURHCASED! simply send
console.log("MEDIA KEY EXISTS ALREADY",mediaKey)
// send back the new mediaToken and key // send back the new mediaToken and key
// const mediaTerms: {[k:string]:any} = { const mediaTerms: {[k:string]:any} = {
// muid, ttl:31536000, host:'', muid, ttl:31536000, host:'',
// meta:{...amount && {amt:amount}}, meta:{...amount && {amt:amount}},
// } }
// send full new key and token // send full new key and token
const msg = {mediaTerms, mediaKey:mediaKey.key}
console.log("SEND PURCHASE ACCEPT FROM STORED KEY")
sendMessage({
chat: {...chat.dataValues, contactIds:[purchaser.id]},
sender: owner,
type: constants.message_types.purchase_accept,
message: msg,
success: ()=>{},
failure: ()=>{}
})
} else { } else {
await models.Message.findOne({where:{chatId:chat.id,mediaToken:mt}}) console.log("NO MEDIA KEY EXISTS YET")
const ogmsg = await models.Message.findOne({where:{chatId:chat.id,mediaToken:mt}})
const ogSender = await models.Contact.findOne({where:{id:ogmsg.sender}})
// purchase it from creator (send "purchase") // purchase it from creator (send "purchase")
const msg={amount, mediaToken:mt}
console.log("GO AHEARD AND BUY!!!")
sendMessage({
chat: {...chat.dataValues, contactIds:[ogmsg.sender]},
sender: {
...owner.dataValues,
...ogSender&&ogSender.alias && {alias:ogSender.alias}
},
type: constants.message_types.purchase,
message: msg,
amount: amount,
success: ()=>{},
failure: ()=>{}
})
} }
} }
@ -67,17 +92,21 @@ export async function sendFinalMemeIfFirstPurchaser(payload, chat, sender){
const existingMediaKey = await models.MediaKey.findOne({where:{muid}}) const existingMediaKey = await models.MediaKey.findOne({where:{muid}})
if(existingMediaKey) return // no need, its already been sent if(existingMediaKey) return // no need, its already been sent
console.log("DOWNLOAD AND REIP:OAD")
const termsAndKey = await downloadAndUploadAndSaveReturningTermsAndKey(payload,chat,sender) const termsAndKey = await downloadAndUploadAndSaveReturningTermsAndKey(payload,chat,sender)
const msg = await models.Message.findOne({where:{mediaToken:mt,type:msgtypes.purchase}}) const msg = await models.Message.findOne({where:{mediaToken:mt,type:msgtypes.purchase}})
const originalSender = await models.Contact.findOne({where:{id:msg.sender}}) console.log("OG MSG",msg.dataValues)
const ogSender = await models.Contact.findOne({where:{id:msg.sender}})
console.log("OG SENDER",ogSender.dataValues)
// find "purchase" Message with the OG muid // find "purchase" Message with the OG muid
// send it to the purchaser // send it to the purchaser
const owner = await models.Contact.findOne({where: {isOwner:true}}) const owner = await models.Contact.findOne({where: {isOwner:true}})
console.log("SEND firST PURHCASE ACCEPT MSG!")
sendMessage({ sendMessage({
sender: { sender: {
...owner.dataValues, ...owner.dataValues,
...originalSender&&originalSender.alias && {alias:originalSender.alias} ...ogSender&&ogSender.alias && {alias:ogSender.alias}
}, },
chat:{ chat:{
...chat.dataValues, ...chat.dataValues,

22
api/network/receive.ts

@ -6,8 +6,8 @@ import * as tribes from '../utils/tribes'
import {SPHINX_CUSTOM_RECORD_KEY, verifyAscii} from '../utils/lightning' import {SPHINX_CUSTOM_RECORD_KEY, verifyAscii} from '../utils/lightning'
import { models } from '../models' import { models } from '../models'
import {sendMessage} from './send' import {sendMessage} from './send'
// import {modifyPayloadAndSaveMediaKey,purchaseFromOriginalSender,sendFinalMemeIfFirstPurchaser} from './modify' import {modifyPayloadAndSaveMediaKey,purchaseFromOriginalSender,sendFinalMemeIfFirstPurchaser} from './modify'
import {modifyPayloadAndSaveMediaKey} from './modify' // import {modifyPayloadAndSaveMediaKey} from './modify'
import {decryptMessage,encryptTribeBroadcast} from '../utils/msg' import {decryptMessage,encryptTribeBroadcast} from '../utils/msg'
const constants = require(path.join(__dirname,'../../config/constants.json')) const constants = require(path.join(__dirname,'../../config/constants.json'))
@ -57,15 +57,15 @@ async function onReceive(payload){
if(doAction) forwardMessageToTribe(payload, senderContact) if(doAction) forwardMessageToTribe(payload, senderContact)
else console.log('=> insufficient payment for this action') else console.log('=> insufficient payment for this action')
} }
// if(isTribeOwner && payload.type===msgtypes.purchase) { if(isTribeOwner && payload.type===msgtypes.purchase) {
// const senderContact = await models.Contact.findOne({where:{publicKey:payload.sender.pub_key}}) const senderContact = await models.Contact.findOne({where:{publicKey:payload.sender.pub_key}})
// purchaseFromOriginalSender(payload, chat, senderContact) purchaseFromOriginalSender(payload, chat, senderContact)
// } }
// if(isTribeOwner && payload.type===msgtypes.purchase_accept) { if(isTribeOwner && payload.type===msgtypes.purchase_accept) {
// // store media key? // store media key?
// const senderContact = await models.Contact.findOne({where:{publicKey:payload.sender.pub_key}}) const senderContact = await models.Contact.findOne({where:{publicKey:payload.sender.pub_key}})
// sendFinalMemeIfFirstPurchaser(payload, chat, senderContact) sendFinalMemeIfFirstPurchaser(payload, chat, senderContact)
// } }
if(doAction) doTheAction({...payload, ...toAddIn}) if(doAction) doTheAction({...payload, ...toAddIn})
} }

4
dist/api/controllers/messages.js

@ -138,7 +138,7 @@ const sendMessage = (req, res) => __awaiter(void 0, void 0, void 0, function* ()
}); });
exports.sendMessage = sendMessage; exports.sendMessage = sendMessage;
const receiveMessage = (payload) => __awaiter(void 0, void 0, void 0, function* () { const receiveMessage = (payload) => __awaiter(void 0, void 0, void 0, function* () {
console.log('received message', { payload }); // console.log('received message', { payload })
var date = new Date(); var date = new Date();
date.setMilliseconds(0); date.setMilliseconds(0);
const total_spent = 1; const total_spent = 1;
@ -165,7 +165,7 @@ const receiveMessage = (payload) => __awaiter(void 0, void 0, void 0, function*
msg.remoteMessageContent = remote_content; msg.remoteMessageContent = remote_content;
} }
const message = yield models_1.models.Message.create(msg); const message = yield models_1.models.Message.create(msg);
console.log('saved message', message.dataValues); // console.log('saved message', message.dataValues)
socket.sendJson({ socket.sendJson({
type: 'message', type: 'message',
response: jsonUtils.messageToJson(message, chat, sender) response: jsonUtils.messageToJson(message, chat, sender)

2
dist/api/controllers/messages.js.map

File diff suppressed because one or more lines are too long

2
dist/api/controllers/payment.js

@ -143,7 +143,7 @@ const receivePayment = (payload) => __awaiter(void 0, void 0, void 0, function*
msg.senderAlias = sender_alias; msg.senderAlias = sender_alias;
} }
const message = yield models_1.models.Message.create(msg); const message = yield models_1.models.Message.create(msg);
console.log('saved message', message.dataValues); // console.log('saved message', message.dataValues)
socket.sendJson({ socket.sendJson({
type: 'direct_payment', type: 'direct_payment',
response: jsonUtils.messageToJson(message, chat, sender) response: jsonUtils.messageToJson(message, chat, sender)

2
dist/api/controllers/payment.js.map

File diff suppressed because one or more lines are too long

4
dist/api/hub.js

@ -228,7 +228,9 @@ const sendNotification = (chat, name, type) => __awaiter(void 0, void 0, void 0,
headers: { 'Content-Type': 'application/json' } headers: { 'Content-Type': 'application/json' }
}) })
.then(res => res.json()) .then(res => res.json())
.then(json => console.log('[hub notification]', json)); .then(json => {
// console.log('[hub notification]', json)
});
}); });
exports.sendNotification = sendNotification; exports.sendNotification = sendNotification;
//# sourceMappingURL=hub.js.map //# sourceMappingURL=hub.js.map

2
dist/api/hub.js.map

File diff suppressed because one or more lines are too long

63
dist/api/network/modify.js

@ -23,25 +23,21 @@ const constants = require(path.join(__dirname, '../../config/constants.json'));
const msgtypes = constants.message_types; const msgtypes = constants.message_types;
function modifyPayloadAndSaveMediaKey(payload, chat, sender) { function modifyPayloadAndSaveMediaKey(payload, chat, sender) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
if (payload.type === msgtypes.attachment) { if (payload.type !== msgtypes.attachment)
try { return payload;
const ret = yield downloadAndUploadAndSaveReturningTermsAndKey(payload, chat, sender); try {
return fillmsg(payload, ret); // key is re-encrypted later const ret = yield downloadAndUploadAndSaveReturningTermsAndKey(payload, chat, sender);
} return fillmsg(payload, ret); // key is re-encrypted later
catch (e) {
console.log("[modify] error", e);
return payload;
}
// how to link w og msg? ogMediaToken?
} }
else { catch (e) {
console.log("[modify] error", e);
return payload; return payload;
} }
}); });
} }
exports.modifyPayloadAndSaveMediaKey = modifyPayloadAndSaveMediaKey; exports.modifyPayloadAndSaveMediaKey = modifyPayloadAndSaveMediaKey;
// "purchase" type // "purchase" type
function purchaseFromOriginalSender(payload, chat, sender) { function purchaseFromOriginalSender(payload, chat, purchaser) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
if (payload.type !== msgtypes.purchase) if (payload.type !== msgtypes.purchase)
return; return;
@ -55,17 +51,42 @@ function purchaseFromOriginalSender(payload, chat, sender) {
let price = terms.meta && terms.meta.amt; let price = terms.meta && terms.meta.amt;
if (amount < price) if (amount < price)
return; // not enough sats return; // not enough sats
const owner = yield models_1.models.Contact.findOne({ where: { isOwner: true } });
if (mediaKey) { // ALREADY BEEN PURHCASED! simply send if (mediaKey) { // ALREADY BEEN PURHCASED! simply send
console.log("MEDIA KEY EXISTS ALREADY", mediaKey);
// send back the new mediaToken and key // send back the new mediaToken and key
// const mediaTerms: {[k:string]:any} = { const mediaTerms = {
// muid, ttl:31536000, host:'', muid, ttl: 31536000, host: '',
// meta:{...amount && {amt:amount}}, meta: Object.assign({}, amount && { amt: amount }),
// } };
// send full new key and token // send full new key and token
const msg = { mediaTerms, mediaKey: mediaKey.key };
console.log("SEND PURCHASE ACCEPT FROM STORED KEY");
send_1.sendMessage({
chat: Object.assign(Object.assign({}, chat.dataValues), { contactIds: [purchaser.id] }),
sender: owner,
type: constants.message_types.purchase_accept,
message: msg,
success: () => { },
failure: () => { }
});
} }
else { else {
yield models_1.models.Message.findOne({ where: { chatId: chat.id, mediaToken: mt } }); console.log("NO MEDIA KEY EXISTS YET");
const ogmsg = yield models_1.models.Message.findOne({ where: { chatId: chat.id, mediaToken: mt } });
const ogSender = yield models_1.models.Contact.findOne({ where: { id: ogmsg.sender } });
// purchase it from creator (send "purchase") // purchase it from creator (send "purchase")
const msg = { amount, mediaToken: mt };
console.log("GO AHEARD AND BUY!!!");
send_1.sendMessage({
chat: Object.assign(Object.assign({}, chat.dataValues), { contactIds: [ogmsg.sender] }),
sender: Object.assign(Object.assign({}, owner.dataValues), ogSender && ogSender.alias && { alias: ogSender.alias }),
type: constants.message_types.purchase,
message: msg,
amount: amount,
success: () => { },
failure: () => { }
});
} }
}); });
} }
@ -84,14 +105,18 @@ function sendFinalMemeIfFirstPurchaser(payload, chat, sender) {
const existingMediaKey = yield models_1.models.MediaKey.findOne({ where: { muid } }); const existingMediaKey = yield models_1.models.MediaKey.findOne({ where: { muid } });
if (existingMediaKey) if (existingMediaKey)
return; // no need, its already been sent return; // no need, its already been sent
console.log("DOWNLOAD AND REIP:OAD");
const termsAndKey = yield downloadAndUploadAndSaveReturningTermsAndKey(payload, chat, sender); const termsAndKey = yield downloadAndUploadAndSaveReturningTermsAndKey(payload, chat, sender);
const msg = yield models_1.models.Message.findOne({ where: { mediaToken: mt, type: msgtypes.purchase } }); const msg = yield models_1.models.Message.findOne({ where: { mediaToken: mt, type: msgtypes.purchase } });
const originalSender = yield models_1.models.Contact.findOne({ where: { id: msg.sender } }); console.log("OG MSG", msg.dataValues);
const ogSender = yield models_1.models.Contact.findOne({ where: { id: msg.sender } });
console.log("OG SENDER", ogSender.dataValues);
// find "purchase" Message with the OG muid // find "purchase" Message with the OG muid
// send it to the purchaser // send it to the purchaser
const owner = yield models_1.models.Contact.findOne({ where: { isOwner: true } }); const owner = yield models_1.models.Contact.findOne({ where: { isOwner: true } });
console.log("SEND firST PURHCASE ACCEPT MSG!");
send_1.sendMessage({ send_1.sendMessage({
sender: Object.assign(Object.assign({}, owner.dataValues), originalSender && originalSender.alias && { alias: originalSender.alias }), sender: Object.assign(Object.assign({}, owner.dataValues), ogSender && ogSender.alias && { alias: ogSender.alias }),
chat: Object.assign(Object.assign({}, chat.dataValues), { contactIds: [sender.id] }), chat: Object.assign(Object.assign({}, chat.dataValues), { contactIds: [sender.id] }),
type: msgtypes.purchase_accept, type: msgtypes.purchase_accept,
message: Object.assign(Object.assign({}, termsAndKey), { mediaType: typ }), message: Object.assign(Object.assign({}, termsAndKey), { mediaType: typ }),

2
dist/api/network/modify.js.map

File diff suppressed because one or more lines are too long

20
dist/api/network/receive.js

@ -17,8 +17,8 @@ const tribes = require("../utils/tribes");
const lightning_2 = require("../utils/lightning"); const lightning_2 = require("../utils/lightning");
const models_1 = require("../models"); const models_1 = require("../models");
const send_1 = require("./send"); const send_1 = require("./send");
// import {modifyPayloadAndSaveMediaKey,purchaseFromOriginalSender,sendFinalMemeIfFirstPurchaser} from './modify'
const modify_1 = require("./modify"); const modify_1 = require("./modify");
// import {modifyPayloadAndSaveMediaKey} from './modify'
const msg_1 = require("../utils/msg"); const msg_1 = require("../utils/msg");
const constants = require(path.join(__dirname, '../../config/constants.json')); const constants = require(path.join(__dirname, '../../config/constants.json'));
const msgtypes = constants.message_types; const msgtypes = constants.message_types;
@ -72,15 +72,15 @@ function onReceive(payload) {
else else
console.log('=> insufficient payment for this action'); console.log('=> insufficient payment for this action');
} }
// if(isTribeOwner && payload.type===msgtypes.purchase) { if (isTribeOwner && payload.type === msgtypes.purchase) {
// const senderContact = await models.Contact.findOne({where:{publicKey:payload.sender.pub_key}}) const senderContact = yield models_1.models.Contact.findOne({ where: { publicKey: payload.sender.pub_key } });
// purchaseFromOriginalSender(payload, chat, senderContact) modify_1.purchaseFromOriginalSender(payload, chat, senderContact);
// } }
// if(isTribeOwner && payload.type===msgtypes.purchase_accept) { if (isTribeOwner && payload.type === msgtypes.purchase_accept) {
// // store media key? // store media key?
// const senderContact = await models.Contact.findOne({where:{publicKey:payload.sender.pub_key}}) const senderContact = yield models_1.models.Contact.findOne({ where: { publicKey: payload.sender.pub_key } });
// sendFinalMemeIfFirstPurchaser(payload, chat, senderContact) modify_1.sendFinalMemeIfFirstPurchaser(payload, chat, senderContact);
// } }
if (doAction) if (doAction)
doTheAction(Object.assign(Object.assign({}, payload), toAddIn)); doTheAction(Object.assign(Object.assign({}, payload), toAddIn));
}); });

2
dist/api/network/receive.js.map

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save