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. 67
      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. 65
      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) => {
console.log('received message', { payload })
// console.log('received message', { payload })
var date = new Date();
date.setMilliseconds(0)
@ -183,7 +183,7 @@ const receiveMessage = async (payload) => {
}
const message = await models.Message.create(msg)
console.log('saved message', message.dataValues)
// console.log('saved message', message.dataValues)
socket.sendJson({
type: 'message',

2
api/controllers/payment.ts

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

4
api/hub.ts

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

67
api/network/modify.ts

@ -13,22 +13,18 @@ const constants = require(path.join(__dirname,'../../config/constants.json'))
const msgtypes = constants.message_types
export async function modifyPayloadAndSaveMediaKey(payload, chat, sender) {
if(payload.type===msgtypes.attachment) {
try{
const ret = await 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 {
if(payload.type!==msgtypes.attachment) return payload
try{
const ret = await downloadAndUploadAndSaveReturningTermsAndKey(payload,chat,sender)
return fillmsg(payload, ret) // key is re-encrypted later
} catch(e) {
console.log("[modify] error", e)
return payload
}
}
// "purchase" type
export async function purchaseFromOriginalSender(payload, chat, sender){
export async function purchaseFromOriginalSender(payload, chat, purchaser){
if(payload.type!==msgtypes.purchase) return
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
if(amount<price) return // not enough sats
if(mediaKey) { // ALREADY BEEN PURHCASED! simply send
const owner = await models.Contact.findOne({where: {isOwner:true}})
if(mediaKey) { // ALREADY BEEN PURHCASED! simply send
console.log("MEDIA KEY EXISTS ALREADY",mediaKey)
// send back the new mediaToken and key
// const mediaTerms: {[k:string]:any} = {
// muid, ttl:31536000, host:'',
// meta:{...amount && {amt:amount}},
// }
const mediaTerms: {[k:string]:any} = {
muid, ttl:31536000, host:'',
meta:{...amount && {amt:amount}},
}
// 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 {
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")
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}})
if(existingMediaKey) return // no need, its already been sent
console.log("DOWNLOAD AND REIP:OAD")
const termsAndKey = await downloadAndUploadAndSaveReturningTermsAndKey(payload,chat,sender)
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
// send it to the purchaser
const owner = await models.Contact.findOne({where: {isOwner:true}})
console.log("SEND firST PURHCASE ACCEPT MSG!")
sendMessage({
sender: {
...owner.dataValues,
...originalSender&&originalSender.alias && {alias:originalSender.alias}
...ogSender&&ogSender.alias && {alias:ogSender.alias}
},
chat:{
...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 { models } from '../models'
import {sendMessage} from './send'
// import {modifyPayloadAndSaveMediaKey,purchaseFromOriginalSender,sendFinalMemeIfFirstPurchaser} from './modify'
import {modifyPayloadAndSaveMediaKey} from './modify'
import {modifyPayloadAndSaveMediaKey,purchaseFromOriginalSender,sendFinalMemeIfFirstPurchaser} from './modify'
// import {modifyPayloadAndSaveMediaKey} from './modify'
import {decryptMessage,encryptTribeBroadcast} from '../utils/msg'
const constants = require(path.join(__dirname,'../../config/constants.json'))
@ -57,15 +57,15 @@ async function onReceive(payload){
if(doAction) forwardMessageToTribe(payload, senderContact)
else console.log('=> insufficient payment for this action')
}
// if(isTribeOwner && payload.type===msgtypes.purchase) {
// const senderContact = await models.Contact.findOne({where:{publicKey:payload.sender.pub_key}})
// purchaseFromOriginalSender(payload, chat, senderContact)
// }
// if(isTribeOwner && payload.type===msgtypes.purchase_accept) {
// // store media key?
// const senderContact = await models.Contact.findOne({where:{publicKey:payload.sender.pub_key}})
// sendFinalMemeIfFirstPurchaser(payload, chat, senderContact)
// }
if(isTribeOwner && payload.type===msgtypes.purchase) {
const senderContact = await models.Contact.findOne({where:{publicKey:payload.sender.pub_key}})
purchaseFromOriginalSender(payload, chat, senderContact)
}
if(isTribeOwner && payload.type===msgtypes.purchase_accept) {
// store media key?
const senderContact = await models.Contact.findOne({where:{publicKey:payload.sender.pub_key}})
sendFinalMemeIfFirstPurchaser(payload, chat, senderContact)
}
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;
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();
date.setMilliseconds(0);
const total_spent = 1;
@ -165,7 +165,7 @@ const receiveMessage = (payload) => __awaiter(void 0, void 0, void 0, function*
msg.remoteMessageContent = remote_content;
}
const message = yield models_1.models.Message.create(msg);
console.log('saved message', message.dataValues);
// console.log('saved message', message.dataValues)
socket.sendJson({
type: 'message',
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;
}
const message = yield models_1.models.Message.create(msg);
console.log('saved message', message.dataValues);
// console.log('saved message', message.dataValues)
socket.sendJson({
type: 'direct_payment',
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' }
})
.then(res => res.json())
.then(json => console.log('[hub notification]', json));
.then(json => {
// console.log('[hub notification]', json)
});
});
exports.sendNotification = sendNotification;
//# sourceMappingURL=hub.js.map

2
dist/api/hub.js.map

File diff suppressed because one or more lines are too long

65
dist/api/network/modify.js

@ -23,25 +23,21 @@ const constants = require(path.join(__dirname, '../../config/constants.json'));
const msgtypes = constants.message_types;
function modifyPayloadAndSaveMediaKey(payload, chat, sender) {
return __awaiter(this, void 0, void 0, function* () {
if (payload.type === msgtypes.attachment) {
try {
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?
if (payload.type !== msgtypes.attachment)
return payload;
try {
const ret = yield downloadAndUploadAndSaveReturningTermsAndKey(payload, chat, sender);
return fillmsg(payload, ret); // key is re-encrypted later
}
else {
catch (e) {
console.log("[modify] error", e);
return payload;
}
});
}
exports.modifyPayloadAndSaveMediaKey = modifyPayloadAndSaveMediaKey;
// "purchase" type
function purchaseFromOriginalSender(payload, chat, sender) {
function purchaseFromOriginalSender(payload, chat, purchaser) {
return __awaiter(this, void 0, void 0, function* () {
if (payload.type !== msgtypes.purchase)
return;
@ -55,17 +51,42 @@ function purchaseFromOriginalSender(payload, chat, sender) {
let price = terms.meta && terms.meta.amt;
if (amount < price)
return; // not enough sats
if (mediaKey) { // ALREADY BEEN PURHCASED! simply send
const owner = yield models_1.models.Contact.findOne({ where: { isOwner: true } });
if (mediaKey) { // ALREADY BEEN PURHCASED! simply send
console.log("MEDIA KEY EXISTS ALREADY", mediaKey);
// send back the new mediaToken and key
// const mediaTerms: {[k:string]:any} = {
// muid, ttl:31536000, host:'',
// meta:{...amount && {amt:amount}},
// }
const mediaTerms = {
muid, ttl: 31536000, host: '',
meta: Object.assign({}, amount && { amt: amount }),
};
// 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 {
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")
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 } });
if (existingMediaKey)
return; // no need, its already been sent
console.log("DOWNLOAD AND REIP:OAD");
const termsAndKey = yield downloadAndUploadAndSaveReturningTermsAndKey(payload, chat, sender);
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
// send it to the purchaser
const owner = yield models_1.models.Contact.findOne({ where: { isOwner: true } });
console.log("SEND firST PURHCASE ACCEPT MSG!");
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] }),
type: msgtypes.purchase_accept,
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 models_1 = require("../models");
const send_1 = require("./send");
// import {modifyPayloadAndSaveMediaKey,purchaseFromOriginalSender,sendFinalMemeIfFirstPurchaser} from './modify'
const modify_1 = require("./modify");
// import {modifyPayloadAndSaveMediaKey} from './modify'
const msg_1 = require("../utils/msg");
const constants = require(path.join(__dirname, '../../config/constants.json'));
const msgtypes = constants.message_types;
@ -72,15 +72,15 @@ function onReceive(payload) {
else
console.log('=> insufficient payment for this action');
}
// if(isTribeOwner && payload.type===msgtypes.purchase) {
// const senderContact = await models.Contact.findOne({where:{publicKey:payload.sender.pub_key}})
// purchaseFromOriginalSender(payload, chat, senderContact)
// }
// if(isTribeOwner && payload.type===msgtypes.purchase_accept) {
// // store media key?
// const senderContact = await models.Contact.findOne({where:{publicKey:payload.sender.pub_key}})
// sendFinalMemeIfFirstPurchaser(payload, chat, senderContact)
// }
if (isTribeOwner && payload.type === msgtypes.purchase) {
const senderContact = yield models_1.models.Contact.findOne({ where: { publicKey: payload.sender.pub_key } });
modify_1.purchaseFromOriginalSender(payload, chat, senderContact);
}
if (isTribeOwner && payload.type === msgtypes.purchase_accept) {
// store media key?
const senderContact = yield models_1.models.Contact.findOne({ where: { publicKey: payload.sender.pub_key } });
modify_1.sendFinalMemeIfFirstPurchaser(payload, chat, senderContact);
}
if (doAction)
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