ruby-ipfs-api 0.0.0 → 0.1.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: 1a1e48869a040177738a9ed7ce59bbbe21b09911
4
- data.tar.gz: eb9c7da8ab89abef7074d30ca98ae7fdef5ada35
3
+ metadata.gz: 6be77b3c8b110052ee64c9dae0041ca4a01da400
4
+ data.tar.gz: d667d4ceb0722a86261c88218f5c6444803659b0
5
5
  SHA512:
6
- metadata.gz: 1257ef9c9134163bc0b7c18091fd58953236aed5e8d8462a34efb47b99e848d9cd81aa77f12f116f18b0b1d396467bf87c15d344157c580a0cd33982c6151ffd
7
- data.tar.gz: 56a5460e66f35178baa894aac00cb1597e9f5ea0f2779c985c1f00b4543caf0873f475c16a8962950b911c2edf5f2d3df6ac3f6e479b070b80f3f83b2c6514c0
6
+ metadata.gz: 2998fe01ce08f03066de75ee6d1da7b00e10214b7da5bbbf0a7b37dcf4d5af51336366b86821d0b51fa3b2560dc46af890f317eca2bb3d3e7168bade698f1baf
7
+ data.tar.gz: 7325c99bfbddad37937694b9496f51c06b18b9f22b2addac51d89034e83b1bce1babb0f3b027ac9db0048780d97ca29e2c43a7c4512febea64e6025c7c3647e2
@@ -0,0 +1,22 @@
1
+ require_relative '../../dagnode'
2
+ require_relative '../../errors'
3
+
4
+ module Ipfs
5
+ module Command
6
+ class Cat
7
+ PATH = '/cat'
8
+
9
+ def self.make_request multi_hash
10
+ {
11
+ method: :get,
12
+ path: PATH,
13
+ params: { :arg => multi_hash }
14
+ }
15
+ end
16
+
17
+ def self.parse_response response
18
+ DagNode.new response
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,18 @@
1
+ module Ipfs
2
+ module Command
3
+ class Id
4
+ PATH = '/id'
5
+
6
+ def self.make_request
7
+ {
8
+ method: :get,
9
+ path: PATH
10
+ }
11
+ end
12
+
13
+ def self.parse_response response
14
+ JSON.parse response
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ module Ipfs
2
+ module Command
3
+ class Version
4
+ PATH = '/version'
5
+
6
+ def self.make_request
7
+ {
8
+ method: :get,
9
+ path: PATH
10
+ }
11
+ end
12
+
13
+ def self.parse_response response
14
+ JSON.parse response
15
+ end
16
+ end
17
+ end
18
+ end
data/lib/dagnode.rb ADDED
@@ -0,0 +1,15 @@
1
+ require_relative './errors'
2
+
3
+ module Ipfs
4
+ class DagNode
5
+ attr_reader :content
6
+
7
+ def initialize http_response
8
+ if http_response.status.code == 200
9
+ @content = http_response.body
10
+ else
11
+ raise Error::InvalidDagNode.new JSON.parse(http_response.body)["Message"]
12
+ end
13
+ end
14
+ end
15
+ end
data/lib/errors.rb ADDED
@@ -0,0 +1,6 @@
1
+ module Ipfs
2
+ module Error
3
+ class InvalidDagNode < StandardError
4
+ end
5
+ end
6
+ end
data/lib/ipfs-api.rb CHANGED
@@ -1 +1,30 @@
1
- require_relative './ipfs'
1
+ require_relative './request'
2
+ require_relative './api/generic/id'
3
+ require_relative './api/generic/version'
4
+ require_relative './api/files/cat'
5
+
6
+ module Ipfs
7
+ class Client
8
+ def initialize server = {}
9
+ @request = Request.new server
10
+ end
11
+
12
+ def id
13
+ execute Command::Id
14
+ end
15
+
16
+ def version
17
+ execute Command::Version
18
+ end
19
+
20
+ def cat multi_hash
21
+ execute Command::Cat, multi_hash
22
+ end
23
+
24
+ private
25
+
26
+ def execute command, *args
27
+ command.parse_response @request.call_api command.make_request *args
28
+ end
29
+ end
30
+ end
data/lib/request.rb ADDED
@@ -0,0 +1,35 @@
1
+ require 'http'
2
+ require 'uri'
3
+
4
+ module Ipfs
5
+ class Request
6
+ attr_reader :host, :port, :base_path
7
+
8
+ DEFAULT_HOST = 'localhost'
9
+ DEFAULT_PORT = 5001
10
+ DEFAULT_BASE_PATH = '/api/v0'
11
+
12
+ def initialize **api_server
13
+ @host = api_server[:host] || DEFAULT_HOST
14
+ @port = api_server[:port] || DEFAULT_PORT
15
+ @base_path = api_server[:base_path] || DEFAULT_BASE_PATH
16
+ end
17
+
18
+ def call_api command
19
+ HTTP.request(
20
+ command[:method],
21
+ url(command[:path]),
22
+ params: command[:params]
23
+ )
24
+ end
25
+
26
+ private
27
+
28
+ def url command_path
29
+ URI::HTTP.build \
30
+ host: @host,
31
+ port: @port,
32
+ path: @base_path + command_path
33
+ end
34
+ end
35
+ end
metadata CHANGED
@@ -1,24 +1,30 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-ipfs-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Nieto
8
+ - Neil Nilou
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2017-05-28 00:00:00.000000000 Z
12
+ date: 2017-08-12 00:00:00.000000000 Z
12
13
  dependencies: []
13
- description:
14
+ description: A client library for the IPFS HTTP API, immplemented in Ruby
14
15
  email: thms.no@gmail.com
15
16
  executables: []
16
17
  extensions: []
17
18
  extra_rdoc_files: []
18
19
  files:
20
+ - lib/api/files/cat.rb
21
+ - lib/api/generic/id.rb
22
+ - lib/api/generic/version.rb
23
+ - lib/dagnode.rb
24
+ - lib/errors.rb
19
25
  - lib/ipfs-api.rb
20
- - lib/ipfs.rb
21
- homepage: http://github.com/mahloun/ruby-ipfs-api
26
+ - lib/request.rb
27
+ homepage: https://github.com/mahloun/ruby-ipfs-api
22
28
  licenses:
23
29
  - MIT
24
30
  metadata: {}
@@ -38,8 +44,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
38
44
  version: '0'
39
45
  requirements: []
40
46
  rubyforge_project:
41
- rubygems_version: 2.6.12
47
+ rubygems_version: 2.6.8
42
48
  signing_key:
43
49
  specification_version: 4
44
- summary: A client library for the IPFS HTTP API, immplemented in Ruby
50
+ summary: ipfs client
45
51
  test_files: []
data/lib/ipfs.rb DELETED
@@ -1,5 +0,0 @@
1
- class IPFS
2
- def self.id
3
- 'your id is not yet discoverable'
4
- end
5
- end