ipfs 0.0.4 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
+

|
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
|