git ssb

2+

arj / dat-share



Tree: 6eab0842af17e84613fcb72d0b1895e96198f522

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

Built with git-ssb-web