git ssb

2+

arj / dat-share



Tree: ee570c41c6e2c24f4c77c9f3c9f14811bfb29f5f

Files: ee570c41c6e2c24f4c77c9f3c9f14811bfb29f5f / lib.js

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

Built with git-ssb-web