ipfs 0.0.4 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +12 -2
- data/ipfs.gemspec +15 -15
- data/lib/ipfs/client.rb +9 -3
- data/lib/ipfs/commands/add.rb +31 -0
- data/lib/ipfs/commands/ls.rb +1 -2
- data/lib/ipfs/content/link.rb +8 -2
- data/lib/ipfs/content/node.rb +2 -2
- data/lib/ipfs/version.rb +1 -1
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9b8e46e448a734cedb238ad0f2bc34bef85aa9ea
|
4
|
+
data.tar.gz: 7f9c352411166b441f5837473df07a1cff62caa5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38e528fa12618cdd253c4f81536c677835eeab19b5ae98b6b8463f6c098a905f22ca4e50ead4347e6345612b3690ccc2066561419761be38960e1c4f466915d2
|
7
|
+
data.tar.gz: 93998f7fbdaa22e5ecf10de7298295ae85665b0e3b550af06ede9f0c12ccea3ad2cb67614e5f152c3a1fe8d211bb36e4216d6a175b1add97115b920169cbd739
|
data/README.md
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
# IPFS API Bindings for Ruby
|
2
|
-
This gem provides IPFS API bindings for Ruby, see [https://ipfs.io](https://ipfs.io).
|
3
2
|
|
4
|
-
|
3
|
+
![](https://ipfs.io/ipfs/QmQJ68PFMDdAsgCZvA1UVzzn18asVcf7HVvCDgpjiSCAse)
|
4
|
+
|
5
|
+
> This gem provides IPFS API bindings for Ruby, see [https://ipfs.io](https://ipfs.io).
|
6
|
+
|
7
|
+
**Work in progress.**
|
5
8
|
|
6
9
|
## Installation
|
7
10
|
Requires Ruby >= 2.1, since it uses the new required keyword arguments syntax.
|
@@ -55,6 +58,13 @@ nodes.each do |node|
|
|
55
58
|
end
|
56
59
|
```
|
57
60
|
|
61
|
+
### add
|
62
|
+
```ruby
|
63
|
+
link = client.add 'myExampleFile.txt'
|
64
|
+
puts link.hashcode
|
65
|
+
# => QmaVwjMgqjBD25apiuVVnaDqU8SsiiREAAy3Amb1Bs2XHs
|
66
|
+
```
|
67
|
+
|
58
68
|
### cat
|
59
69
|
```ruby
|
60
70
|
client.cat 'QmaVwjMgqjBD25apiuVVnaDqU8SsiiREAAy3Amb1Bs2XHs'
|
data/ipfs.gemspec
CHANGED
@@ -4,27 +4,27 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'ipfs/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'ipfs'
|
8
8
|
spec.version = IPFS::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
9
|
+
spec.authors = ['Pierpaolo Frasa']
|
10
|
+
spec.email = ['pfrasa@gmail.com']
|
11
11
|
spec.license = 'MIT'
|
12
12
|
|
13
|
-
spec.summary =
|
14
|
-
spec.description =
|
15
|
-
spec.homepage =
|
13
|
+
spec.summary = 'IPFS API bindings'
|
14
|
+
spec.description = 'API bindings for the Interplanetary File System'
|
15
|
+
spec.homepage = 'https://ipfs.io'
|
16
16
|
|
17
17
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
|
-
spec.bindir =
|
18
|
+
spec.bindir = 'exe'
|
19
19
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
|
-
spec.require_paths = [
|
20
|
+
spec.require_paths = ['lib']
|
21
21
|
|
22
|
-
spec.add_dependency
|
22
|
+
spec.add_dependency 'http', '~> 2.2'
|
23
23
|
|
24
|
-
spec.add_development_dependency
|
25
|
-
spec.add_development_dependency
|
26
|
-
spec.add_development_dependency
|
27
|
-
spec.add_development_dependency
|
28
|
-
spec.add_development_dependency
|
29
|
-
spec.add_development_dependency
|
24
|
+
spec.add_development_dependency 'bundler', '~> 1.10'
|
25
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
26
|
+
spec.add_development_dependency 'byebug'
|
27
|
+
spec.add_development_dependency 'rspec'
|
28
|
+
spec.add_development_dependency 'webmock'
|
29
|
+
spec.add_development_dependency 'sinatra'
|
30
30
|
end
|
data/lib/ipfs/client.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
require 'ipfs/commands/ls'
|
2
2
|
require 'ipfs/commands/cat'
|
3
|
+
require 'ipfs/commands/add'
|
3
4
|
|
4
5
|
module IPFS
|
5
6
|
class Client
|
6
|
-
DEFAULT_HOST = 'http://localhost'
|
7
|
+
DEFAULT_HOST = 'http://localhost'.freeze
|
7
8
|
DEFAULT_PORT = 5001
|
8
|
-
API_VERSION = 'v0'
|
9
|
+
API_VERSION = 'v0'.freeze
|
9
10
|
|
10
11
|
attr_reader :host, :port
|
11
12
|
|
@@ -14,7 +15,8 @@ module IPFS
|
|
14
15
|
end
|
15
16
|
|
16
17
|
def initialize(host:, port:)
|
17
|
-
@host
|
18
|
+
@host = host
|
19
|
+
@port = port
|
18
20
|
end
|
19
21
|
|
20
22
|
def api_url
|
@@ -28,5 +30,9 @@ module IPFS
|
|
28
30
|
def cat(node)
|
29
31
|
Commands::Cat.call self, node
|
30
32
|
end
|
33
|
+
|
34
|
+
def add(file)
|
35
|
+
Commands::Add.call self, file
|
36
|
+
end
|
31
37
|
end
|
32
38
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'http'
|
2
|
+
require 'http/form_data'
|
3
|
+
require 'json'
|
4
|
+
require 'ipfs/content/link'
|
5
|
+
|
6
|
+
module IPFS
|
7
|
+
module Commands
|
8
|
+
class Add
|
9
|
+
def self.call(client, file)
|
10
|
+
parse query(client, file)
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def self.query(client, file)
|
16
|
+
form = multiform(file)
|
17
|
+
HTTP.get("#{client.api_url}/add?stream-channels=true",
|
18
|
+
body: form.to_s,
|
19
|
+
headers: { 'Content-Type' => form.content_type }).to_s
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.multiform(file)
|
23
|
+
HTTP::FormData.create(file: HTTP::FormData::File.new(file))
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.parse(response)
|
27
|
+
Content::Link.parse_single JSON.parse(response)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/ipfs/commands/ls.rb
CHANGED
@@ -5,12 +5,12 @@ require 'ipfs/content/node'
|
|
5
5
|
module IPFS
|
6
6
|
module Commands
|
7
7
|
class LS
|
8
|
-
|
9
8
|
def self.call(client, node)
|
10
9
|
parse query(client, node)
|
11
10
|
end
|
12
11
|
|
13
12
|
private
|
13
|
+
|
14
14
|
def self.query(client, node)
|
15
15
|
HTTP.get("#{client.api_url}/ls?arg=#{node}&stream-channels=true").to_s
|
16
16
|
end
|
@@ -18,7 +18,6 @@ module IPFS
|
|
18
18
|
def self.parse(response)
|
19
19
|
Content::Node.parse_array JSON.parse(response)['Objects']
|
20
20
|
end
|
21
|
-
|
22
21
|
end
|
23
22
|
end
|
24
23
|
end
|
data/lib/ipfs/content/link.rb
CHANGED
@@ -4,14 +4,20 @@ module IPFS
|
|
4
4
|
attr_reader :name, :hashcode, :size
|
5
5
|
|
6
6
|
def initialize(name:, hashcode:, size:)
|
7
|
-
@name
|
7
|
+
@name = name
|
8
|
+
@hashcode = hashcode
|
9
|
+
@size = size
|
8
10
|
end
|
9
11
|
|
10
12
|
def self.parse_array(array)
|
11
13
|
array.map do |item|
|
12
|
-
|
14
|
+
parse_single(item)
|
13
15
|
end
|
14
16
|
end
|
17
|
+
|
18
|
+
def self.parse_single(item)
|
19
|
+
new name: item['Name'], hashcode: item['Hash'], size: item['Size']
|
20
|
+
end
|
15
21
|
end
|
16
22
|
end
|
17
23
|
end
|
data/lib/ipfs/content/node.rb
CHANGED
@@ -6,7 +6,8 @@ module IPFS
|
|
6
6
|
attr_reader :hashcode, :links
|
7
7
|
|
8
8
|
def initialize(hashcode:, links:)
|
9
|
-
@hashcode
|
9
|
+
@hashcode = hashcode
|
10
|
+
@links = links
|
10
11
|
end
|
11
12
|
|
12
13
|
def self.parse_array(array)
|
@@ -14,7 +15,6 @@ module IPFS
|
|
14
15
|
new(hashcode: item['Hash'], links: Link.parse_array(item['Links']))
|
15
16
|
end
|
16
17
|
end
|
17
|
-
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
data/lib/ipfs/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ipfs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pierpaolo Frasa
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-11-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: http
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: '2.2'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: '2.2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -127,6 +127,7 @@ files:
|
|
127
127
|
- ipfs.gemspec
|
128
128
|
- lib/ipfs.rb
|
129
129
|
- lib/ipfs/client.rb
|
130
|
+
- lib/ipfs/commands/add.rb
|
130
131
|
- lib/ipfs/commands/cat.rb
|
131
132
|
- lib/ipfs/commands/ls.rb
|
132
133
|
- lib/ipfs/content/link.rb
|
@@ -152,7 +153,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
152
153
|
version: '0'
|
153
154
|
requirements: []
|
154
155
|
rubyforge_project:
|
155
|
-
rubygems_version: 2.
|
156
|
+
rubygems_version: 2.6.8
|
156
157
|
signing_key:
|
157
158
|
specification_version: 4
|
158
159
|
summary: IPFS API bindings
|