git ssb

0+

clemo / ssb-ipfs-share



forked from arj / dat-share

Tree: 589659eb2f7557af64874b5dc925456e0cc0764a

Files: 589659eb2f7557af64874b5dc925456e0cc0764a / lib.js

3248 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) {
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 }, function (err, dat) {
20 if (err) throw err
21
22 console.log("sharing:", datLink)
23 dat.joinNetwork()
24 })
25 })
26 })
27 },
28
29 getAll: function(sbot, shareFolder) {
30 console.log("Looking for dat links in all feeds")
31
32 pull(
33 sbot.createLogStream({ live: true, reverse: true, limit: 10000 }),
34 pull.filter((msg) => {
35 return !msg.value ||
36 msg.value.content.type == 'post' &&
37 typeof msg.value.content.text == "string" &&
38 msg.value.content.text.indexOf("dat://") != -1
39 }),
40 pull.collect((err, logs) => self.extractLinksAndSeed(err, logs,
41 shareFolder))
42 )
43 },
44
45 messagesFromPeopleIFollow: function(sbot, following,
46 channelSubscriptions,
47 shareFolder) {
48 console.log("users:", following)
49 console.log("channels:", channelSubscriptions)
50 pull(
51 sbot.createLogStream({ live: true, reverse: true, limit: 10000 }),
52 pull.filter((msg) => {
53 return !msg.value ||
54 ((msg.value.author in following ||
55 msg.value.content.channel in channelSubscriptions)
56 && msg.value.content.type == 'post' &&
57 typeof msg.value.content.text == "string" &&
58 msg.value.content.text.indexOf("dat://") != -1)
59 }),
60 pull.collect((err, logs) => self.extractLinksAndSeed(err, logs,
61 shareFolder))
62 )
63 },
64
65 getFromPeopleIFollow: function(sbot, shareFolder) {
66 var following = []
67 var channelSubscriptions = []
68
69 console.log("Looking for dat links in people i follow")
70
71 sbot.whoami((err, feed) => {
72 pull(
73 sbot.createUserStream({ id: feed.id }),
74 pull.filter((msg) => {
75 return !msg.value ||
76 msg.value.content.type == 'contact' ||
77 (msg.value.content.type == 'channel' &&
78 typeof msg.value.content.subscribed != 'undefined')
79 }),
80 pull.collect(function (err, msgs) {
81 msgs.forEach((msg) => {
82 if (msg.value.content.type == 'contact')
83 {
84 if (msg.value.content.following)
85 following[msg.value.content.contact] = 1
86 else
87 delete following[msg.value.content.contact]
88 }
89 else // channel subscription
90 {
91 if (msg.value.content.subscribed)
92 channelSubscriptions[msg.value.content.channel] = 1
93 else
94 delete channelSubscriptions[msg.value.content.channel]
95 }
96 })
97
98 self.messagesFromPeopleIFollow(sbot, following,
99 channelSubscriptions,
100 shareFolder)
101 })
102 )
103 })
104 }
105}
106

Built with git-ssb-web