haveapi-fs 0.8.0 → 0.9.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: 5df8fafea917e1335994de7b5ad0dce1258f6a74
4
- data.tar.gz: 440b1b976a5fd643d3a6b4274f482b6cf29829d7
3
+ metadata.gz: 2a31acec8bd60953c1833b73bfd7fb2bb7653586
4
+ data.tar.gz: 62e2bffff1703eea4f1d4a772a26d3bf508ba3a5
5
5
  SHA512:
6
- metadata.gz: fcd2321eab8bd586e06b43e589e0d4555d390cccb1258952566af806641a5f34f75cc95591a0a54d002d03111e439c13dc3889706d22a585192d32fb0d9c99bf
7
- data.tar.gz: 16200aca0f63b9353b19640200bf3b94c8417b0744110f17d3a974ec92c548cbf7e9296f275cd73078e926767ab2e0a6038a0d55321d0066d6fa86abb4db893b
6
+ metadata.gz: 89293e052eca008f96160c4ded94f933bdbd1a066386b076dadb7a01475a82c3cf80fd5d63f6dc4a7aa4fb07883a49d74175decf4b815cc7d56b5d91c3c55476
7
+ data.tar.gz: 1a9c49e4c579677b4143217dd66838ad29970f25a335058e2c27fac0678d8a9711d109ce7edbedc3ff51428ab3922d997cfa999ccfa2e9861fe84a04f8e9dc61
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ * Sat Apr 22 2017 - version 0.9.0
2
+ - Wrapper for hash and hash_list formats, so that they behave the same as
3
+ object and object_list
4
+
1
5
  * Fri Feb 10 2017 - version 0.8.0
2
6
  - Require haveapi-client v0.8
3
7
 
data/haveapi-fs.gemspec CHANGED
@@ -6,7 +6,7 @@ require 'haveapi/fs/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = 'haveapi-fs'
8
8
  spec.version = HaveAPI::Fs::VERSION
9
- spec.date = '2017-02-10'
9
+ spec.date = '2017-04-22'
10
10
  spec.authors = ['Jakub Skokan']
11
11
  spec.email = ['jakub.skokan@vpsfree.cz']
12
12
  spec.summary =
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency 'pry', '~> 0.10.3'
25
25
 
26
26
  spec.add_runtime_dependency 'rfusefs', '~> 1.0.3'
27
- spec.add_runtime_dependency 'haveapi-client', '~> 0.8.0'
27
+ spec.add_runtime_dependency 'haveapi-client', '~> 0.9.0'
28
28
  spec.add_runtime_dependency 'md2man', '~> 5.1.1'
29
29
  spec.add_runtime_dependency 'highline', '~> 1.7.8'
30
30
  end
@@ -64,8 +64,26 @@ module HaveAPI::Fs::Components
64
64
  ret,
65
65
  )
66
66
 
67
+ when :hash
68
+ res = HaveAPI::Fs::HashWrapper.new(
69
+ @resource.instance_variable_get('@client'),
70
+ @resource.instance_variable_get('@api'),
71
+ @resource,
72
+ @action,
73
+ ret.response,
74
+ )
75
+
76
+ when :hash_list
77
+ res = HaveAPI::Fs::HashListWrapper.new(
78
+ @resource.instance_variable_get('@client'),
79
+ @resource.instance_variable_get('@api'),
80
+ @resource,
81
+ @action,
82
+ ret.response,
83
+ )
84
+
67
85
  else
68
- res = ret
86
+ res = ret.response
69
87
  end
70
88
 
71
89
  children[:output].data = res
@@ -20,12 +20,7 @@ module HaveAPI::Fs::Components
20
20
  return ret unless @data
21
21
 
22
22
  if @list
23
- if @data.is_a?(HaveAPI::Client::ResourceInstanceList)
24
- ret.concat(@data.map { |v| v.id.to_s })
25
-
26
- else
27
- ret.concat(@data.response.map { |v| v[:id].to_s })
28
- end
23
+ ret.concat(@data.map { |v| v.id.to_s })
29
24
 
30
25
  else
31
26
  ret.concat(parameters.keys.map(&:to_s))
@@ -68,7 +63,7 @@ module HaveAPI::Fs::Components
68
63
  @action_dir.action,
69
64
  name,
70
65
  :output,
71
- @data.is_a?(HaveAPI::Client::ResourceInstance) ? @data : @data.response,
66
+ @data,
72
67
  ]
73
68
 
74
69
  else
@@ -5,7 +5,7 @@ module HaveAPI::Fs::Components
5
5
 
6
6
  def initialize(r)
7
7
  @resource = r
8
- @instance = r.is_a?(HaveAPI::Client::ResourceInstance)
8
+ @instance = r.is_a?(HaveAPI::Client::ResourceInstance) || r.is_a?(HaveAPI::Fs::HashWrapper)
9
9
 
10
10
  super()
11
11
  end
@@ -65,7 +65,23 @@ module HaveAPI::Fs::Components
65
65
  # need to load it all, a single query should be sufficient.
66
66
  begin
67
67
  obj = @resource.show(id, meta: meta_params)
68
- [ResourceInstanceDir, obj]
68
+
69
+ case @resource.actions[:show].output_layout
70
+ when :object
71
+ [ResourceInstanceDir, obj]
72
+
73
+ when :hash
74
+ [ResourceInstanceDir, HaveAPI::Fs::HashWrapper.new(
75
+ @resource.instance_variable_get('@client'),
76
+ @resource.instance_variable_get('@api'),
77
+ @resource,
78
+ @resource.actions[:show],
79
+ obj.response
80
+ )]
81
+
82
+ else
83
+ fail "Unexpected layout '#{@resource.actions[:show].output_layout}'"
84
+ end
69
85
 
70
86
  rescue HaveAPI::Client::ActionFailed
71
87
  # Not found
@@ -0,0 +1,21 @@
1
+ module HaveAPI::Fs
2
+ class HashListWrapper < Array
3
+ def initialize(client, api, resource, action, data)
4
+ data.each do |v|
5
+ self << HashWrapper.new(client, api, resource, action, v)
6
+ end
7
+ end
8
+
9
+ def id
10
+ @data[:id]
11
+ end
12
+
13
+ def [](k)
14
+ @data[k]
15
+ end
16
+
17
+ def []=(k, v)
18
+ @data[k] = v
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,25 @@
1
+ module HaveAPI::Fs
2
+ class HashWrapper < HaveAPI::Client::Resource
3
+ def initialize(client, api, resource, action, data)
4
+ super(client, api, resource._name)
5
+ setup(resource.instance_variable_get('@description'))
6
+
7
+ @data = data
8
+ @data.each do |k, v|
9
+ define_singleton_method(k) { v }
10
+ end
11
+ end
12
+
13
+ def attributes
14
+ @data
15
+ end
16
+
17
+ def [](k)
18
+ @data[k]
19
+ end
20
+
21
+ def []=(k, v)
22
+ @data[k] = v
23
+ end
24
+ end
25
+ end
@@ -1,5 +1,5 @@
1
1
  module HaveAPI
2
2
  module Fs
3
- VERSION = '0.8.0'
3
+ VERSION = '0.9.0'
4
4
  end
5
5
  end
data/lib/haveapi/fs.rb CHANGED
@@ -19,6 +19,8 @@ require_relative 'fs/component'
19
19
  require_relative 'fs/factory'
20
20
  require_relative 'fs/help'
21
21
  require_relative 'fs/remote_control'
22
+ require_relative 'fs/hash_wrapper'
23
+ require_relative 'fs/hash_list_wrapper'
22
24
  require_relative 'fs/version'
23
25
  require_relative 'fs/auth/base'
24
26
  require_relative 'fs/auth/basic'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: haveapi-fs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jakub Skokan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-10 00:00:00.000000000 Z
11
+ date: 2017-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.8.0
75
+ version: 0.9.0
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.8.0
82
+ version: 0.9.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: md2man
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -181,6 +181,8 @@ files:
181
181
  - lib/haveapi/fs/exceptions.rb
182
182
  - lib/haveapi/fs/factory.rb
183
183
  - lib/haveapi/fs/fs.rb
184
+ - lib/haveapi/fs/hash_list_wrapper.rb
185
+ - lib/haveapi/fs/hash_wrapper.rb
184
186
  - lib/haveapi/fs/help.rb
185
187
  - lib/haveapi/fs/main.rb
186
188
  - lib/haveapi/fs/remote_control.rb