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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 69aa1d54ba5bb91e6a22401083d53b8d04908b42
4
- data.tar.gz: c31d8f77f7ad335e4fbd24eaf98d576f07951b49
3
+ metadata.gz: 9b8e46e448a734cedb238ad0f2bc34bef85aa9ea
4
+ data.tar.gz: 7f9c352411166b441f5837473df07a1cff62caa5
5
5
  SHA512:
6
- metadata.gz: 447a358ab84de2bb2f33112a5d1576e047968cc446789c6861c66fd1192a2dc9b45bf0a305edf35aad740f39070a26fff7c71599ffbf5e0f76595243116f2cd0
7
- data.tar.gz: 76592d96da61e8ca99535937e99d183965c504ef0a1f98e8d247df25718199d522ada5b766179ec1d22531827df87c3aa2003ce407d317967c77d3e844d4c908
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
- Work in progress.
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'
@@ -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 = "ipfs"
7
+ spec.name = 'ipfs'
8
8
  spec.version = IPFS::VERSION
9
- spec.authors = ["Pierpaolo Frasa"]
10
- spec.email = ["pfrasa@gmail.com"]
9
+ spec.authors = ['Pierpaolo Frasa']
10
+ spec.email = ['pfrasa@gmail.com']
11
11
  spec.license = 'MIT'
12
12
 
13
- spec.summary = %q{IPFS API bindings}
14
- spec.description = %q{API bindings for the Interplanetary File System}
15
- spec.homepage = "https://ipfs.io"
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 = "exe"
18
+ spec.bindir = 'exe'
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
- spec.require_paths = ["lib"]
20
+ spec.require_paths = ['lib']
21
21
 
22
- spec.add_dependency "http", "~> 0.9.6"
22
+ spec.add_dependency 'http', '~> 2.2'
23
23
 
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"
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
@@ -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, @port = host, port
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
@@ -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
@@ -4,14 +4,20 @@ module IPFS
4
4
  attr_reader :name, :hashcode, :size
5
5
 
6
6
  def initialize(name:, hashcode:, size:)
7
- @name, @hashcode, @size = name, hashcode, size
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
- new name: item['Name'], hashcode: item['Hash'], size: item['Size']
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
@@ -6,7 +6,8 @@ module IPFS
6
6
  attr_reader :hashcode, :links
7
7
 
8
8
  def initialize(hashcode:, links:)
9
- @hashcode, @links = hashcode, links
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
@@ -1,3 +1,3 @@
1
1
  module IPFS
2
- VERSION = "0.0.4"
2
+ VERSION = "0.2.0"
3
3
  end
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
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: 2015-09-19 00:00:00.000000000 Z
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: 0.9.6
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: 0.9.6
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.4.5.1
156
+ rubygems_version: 2.6.8
156
157
  signing_key:
157
158
  specification_version: 4
158
159
  summary: IPFS API bindings