ruby-ipfs-api 0.0.0 → 0.1.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 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