git ssb

0+

clemo / ssb-ipfs-share



forked from arj / dat-share

Tree: 338baa22ed1a31664b6306c3b58352e256a469ea

Files: 338baa22ed1a31664b6306c3b58352e256a469ea / lib.js

3454 bytesRaw
1var Dat = require('dat-node')
2var uri = require('urijs')
3var pull = require('pull-stream')
4
5var self = module.exports = {
6 extractLinksAndSeed: function(err, logs, shareFolder, useTemp) {
7 if (err) throw err;
8
9 console.log("Found " + logs.length)
10
11 logs.forEach(msg => {
12 uri.withinString(msg.value.content.text, (datLink) => {
13 if (!datLink.startsWith("dat://")) return
14
15 console.log("Saving to:", shareFolder + "/" + datLink.substring(6))
16
17 Dat(shareFolder + "/" + datLink.substring(6), {
18 key: datLink,
19 temp: useTemp
20 }, function (err, dat) {
21 if (err) throw err
22
23 console.log("sharing:", datLink)
24 dat.joinNetwork()
25 })
26 })
27 })
28 },
29
30 getAll: function(sbot, shareFolder, useTemp) {
31 console.log("Looking for dat links in all feeds")
32
33 pull(
34 sbot.createLogStream({ live: true, reverse: true, limit: 10000 }),
35 pull.filter((msg) => {
36 return !msg.value ||
37 msg.value.content.type == 'post' &&
38 typeof msg.value.content.text == "string" &&
39 msg.value.content.text.indexOf("dat://") != -1
40 }),
41 pull.collect((err, logs) => self.extractLinksAndSeed(err, logs,
42 shareFolder,
43 useTemp))
44 )
45 },
46
47 messagesFromPeopleIFollow: function(sbot, following,
48 channelSubscriptions,
49 shareFolder, useTemp) {
50 console.log("users:", following)
51 console.log("channels:", channelSubscriptions)
52 pull(
53 sbot.createLogStream({ live: true, reverse: true, limit: 10000 }),
54 pull.filter((msg) => {
55 return !msg.value ||
56 ((msg.value.author in following ||
57 msg.value.content.channel in channelSubscriptions)
58 && msg.value.content.type == 'post' &&
59 typeof msg.value.content.text == "string" &&
60 msg.value.content.text.indexOf("dat://") != -1)
61 }),
62 pull.collect((err, logs) => self.extractLinksAndSeed(err, logs,
63 shareFolder,
64 useTemp))
65 )
66 },
67
68 getFromPeopleIFollow: function(sbot, shareFolder, useTemp) {
69 var following = []
70 var channelSubscriptions = []
71
72 console.log("Looking for dat links in people i follow")
73
74 sbot.whoami((err, feed) => {
75 pull(
76 sbot.createUserStream({ id: feed.id }),
77 pull.filter((msg) => {
78 return !msg.value ||
79 msg.value.content.type == 'contact' ||
80 (msg.value.content.type == 'channel' &&
81 typeof msg.value.content.subscribed != 'undefined')
82 }),
83 pull.collect(function (err, msgs) {
84 msgs.forEach((msg) => {
85 if (msg.value.content.type == 'contact')
86 {
87 if (msg.value.content.following)
88 following[msg.value.content.contact] = 1
89 else
90 delete following[msg.value.content.contact]
91 }
92 else // channel subscription
93 {
94 if (msg.value.content.subscribed)
95 channelSubscriptions[msg.value.content.channel] = 1
96 else
97 delete channelSubscriptions[msg.value.content.channel]
98 }
99 })
100
101 self.messagesFromPeopleIFollow(sbot, following,
102 channelSubscriptions,
103 shareFolder, useTemp)
104 })
105 )
106 })
107 }
108}
109

Built with git-ssb-web