Пример #1
0
 public async Task <IKey> CreateAsync(string name, string keyType, int size, CancellationToken cancel = default(CancellationToken))
 {
     return(await ipfs.DoCommandAsync <KeyInfo>("key/gen", cancel,
                                                name,
                                                $"type={keyType}",
                                                $"size={size}"));
 }
Пример #2
0
        public async Task <DagNode> NewAsync(string template = null, CancellationToken cancel = default(CancellationToken))
        {
            var json = await ipfs.DoCommandAsync("object/new", cancel, template);

            var hash = (string)(JObject.Parse(json)["Hash"]);

            return(await GetAsync(hash));
        }
Пример #3
0
        public async Task <IEnumerable <Cid> > AddAsync(string path, bool recursive = true, CancellationToken cancel = default(CancellationToken))
        {
            var opts = "recursive=" + recursive.ToString().ToLowerInvariant();
            var json = await ipfs.DoCommandAsync("pin/add", cancel, path, opts);

            return(((JArray)JObject.Parse(json)["Pins"])
                   .Select(p => (Cid)(string)p));
        }
Пример #4
0
        public async Task <JObject> GetAsync(
            Cid id,
            CancellationToken cancel = default(CancellationToken))
        {
            var json = await ipfs.DoCommandAsync("dag/get", cancel, id);

            return(JObject.Parse(json));
        }
        /// <inheritdoc />
        public void Add(MultiAddress peer)
        {
            if (peer == null)
            {
                throw new ArgumentNullException();
            }

            ipfs.DoCommandAsync("bootstrap/add", default(CancellationToken), peer.ToString()).Wait();
            peers = null;
        }
Пример #6
0
        public async Task <IDataBlock> StatAsync(Cid id, CancellationToken cancel = default(CancellationToken))
        {
            var json = await ipfs.DoCommandAsync("block/stat", cancel, id);

            var info = JObject.Parse(json);

            return(new Block
            {
                Size = (long)info["Size"],
                Id = (string)info["Key"]
            });
        }
Пример #7
0
        public async Task <MultiAddress> AddAsync(MultiAddress address, CancellationToken cancel = default(CancellationToken))
        {
            var json = await ipfs.DoCommandAsync("bootstrap/add", cancel, address.ToString());

            var addrs = (JArray)(JObject.Parse(json)["Peers"]);
            var a     = addrs.FirstOrDefault();

            if (a == null)
            {
                return(null);
            }
            return(new MultiAddress((string)a));
        }
Пример #8
0
        public async Task <IEnumerable <string> > SubscribedTopicsAsync(CancellationToken cancel = default(CancellationToken))
        {
            var json = await ipfs.DoCommandAsync("pubsub/ls", cancel);

            var result  = JObject.Parse(json);
            var strings = result["Strings"] as JArray;

            if (strings == null)
            {
                return(new string[0]);
            }
            return(strings.Select(s => (string)s));
        }
        public void Do_Command_Throws_Exception_On_Missing_Argument()
        {
            IpfsClient target = TestFixture.Ipfs;
            object     unknown;

            ExceptionAssert.Throws <HttpRequestException>(() => unknown = target.DoCommandAsync("key/gen", default(CancellationToken)).Result);
        }
        public void Do_Command_Throws_Exception_On_Invalid_Command()
        {
            IpfsClient target = TestFixture.Ipfs;
            object     unknown;

            ExceptionAssert.Throws <HttpRequestException>(() => unknown = target.DoCommandAsync("foobar", default(CancellationToken)).Result);
        }
        /// <summary>
        ///   Get information about the file or directory.
        /// </summary>
        /// <param name="path">
        ///   A path to an existing file or directory, such as "QmXarR6rgkQ2fDSHjSY5nM2kuCXKYGViky5nohtwgF65Ec/about"
        ///   or "QmZTR5bcpQD7cFgTorqxZDYaew1Wqgfbd2ud9QqGPAkK2V"
        /// </param>
        /// <param name="cancel">
        ///   Is used to stop the task.  When cancelled, the <see cref="TaskCanceledException"/> is raised.
        /// </param>
        /// <returns></returns>
        public async Task <IFileSystemNode> ListFileAsync(string path, CancellationToken cancel = default(CancellationToken))
        {
            var json = await ipfs.DoCommandAsync("file/ls", cancel, path);

            var r    = JObject.Parse(json);
            var hash = (string)r["Arguments"][path];
            var o    = (JObject)r["Objects"][hash];
            var node = new FileSystemNode()
            {
                Id          = (string)o["Hash"],
                Size        = (long)o["Size"],
                IsDirectory = (string)o["Type"] == "Directory",
                Links       = new FileSystemLink[0],
                IpfsClient  = ipfs
            };
            var links = o["Links"] as JArray;

            if (links != null)
            {
                node.Links = links
                             .Select(l => new FileSystemLink()
                {
                    Name        = (string)l["Name"],
                    Id          = (string)l["Hash"],
                    Size        = (long)l["Size"],
                    IsDirectory = (string)l["Type"] == "Directory",
                })
                             .ToArray();
            }

            return(node);
        }
Пример #12
0
        public async Task <NamedContent> PublishAsync(string path, bool resolve = true, string key = "self", TimeSpan?lifetime = null, CancellationToken cancel = default(CancellationToken))
        {
            var json = await ipfs.DoCommandAsync("name/publish", cancel,
                                                 path,
                                                 "lifetime=24h", // TODO
                                                 $"resolve={resolve.ToString().ToLowerInvariant()}",
                                                 $"key={key}");

            // TODO: lifetime
            var info = JObject.Parse(json);

            return(new NamedContent
            {
                NamePath = (string)info["Name"],
                ContentPath = (string)info["Value"]
            });
        }
Пример #13
0
        public async Task <IEnumerable <Cid> > WantsAsync(MultiHash peer = null, CancellationToken cancel = default(CancellationToken))
        {
            var json = await ipfs.DoCommandAsync("bitswap/wantlist", cancel, peer?.ToString());

            var keys = (JArray)(JObject.Parse(json)["Keys"]);

            // https://github.com/ipfs/go-ipfs/issues/5077
            return(keys
                   .Select(k =>
            {
                if (k.Type == JTokenType.String)
                {
                    return Cid.Decode(k.ToString());
                }
                var obj = (JObject)k;
                return Cid.Decode(obj["/"].ToString());
            }));
        }
Пример #14
0
        public async Task <string> ResolveAsync(string name, bool recursive = false, CancellationToken cancel = default(CancellationToken))
        {
            var json = await ipfs.DoCommandAsync("dns", cancel,
                                                 name,
                                                 $"recursive={recursive.ToString().ToLowerInvariant()}");

            var path = (string)(JObject.Parse(json)["Path"]);

            return(path);
        }
Пример #15
0
        public async Task <IEnumerable <Peer> > AddressesAsync(CancellationToken cancel = default(CancellationToken))
        {
            var json = await ipfs.DoCommandAsync("swarm/addrs", cancel);

            return(((JObject)JObject.Parse(json)["Addrs"])
                   .Properties()
                   .Select(p => new Peer {
                Id = p.Name,
                Addresses = ((JArray)p.Value)
                            .Select(a => MultiAddress.TryCreate((string)a))
                            .Where(ma => ma != null)
            }));
        }
Пример #16
0
        public async Task <JObject> GetAsync(CancellationToken cancel = default(CancellationToken))
        {
            var json = await ipfs.DoCommandAsync("config/show", cancel);

            return(JObject.Parse(json));
        }
Пример #17
0
 public Task <BandwidthData> BandwidthAsync(CancellationToken cancel = default(CancellationToken))
 {
     return(ipfs.DoCommandAsync <BandwidthData>("stats/bw", cancel));
 }
 public async Task RemoveGarbageAsync(CancellationToken cancel = default(CancellationToken))
 {
     await ipfs.DoCommandAsync("repo/gc", cancel);
 }