activestorage-horcrux 0.0.1 → 0.0.2

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
  SHA256:
3
- metadata.gz: dc8bb0a018830fa20e443f065cd756231cd2872d51d09ba0a0da43e48bfd2d08
4
- data.tar.gz: f6f24bd9fea6fae6e8f80c23ca9775473792c4cfc9dc2e00edd2fce9c2f4b4e8
3
+ metadata.gz: 5e3f1b44e9be312f76b1f54bc9aac82d024b8c48110508e746b27e3c524e7636
4
+ data.tar.gz: cef3c2477017ed6228d4bcdad96a5b647c74695de257582d7723e8105cb502cd
5
5
  SHA512:
6
- metadata.gz: 4ca6492807a097e183468d06700e77347978f6b4b1576acab4a102a8fa18e08c306cceba5d7e4d6c8096d7af1ead0b116bc4ebd7ec08858d2b502df0b938c6e5
7
- data.tar.gz: 38f64bef48b480d925e4ac8e0dee3ca68a75c43e93d8f25aedddcf8a0b3d0a4ff404d1333a824dfd828bc6c62b0173f35f3d38cda0e49bb75b9407c4cb11cde8
6
+ metadata.gz: 149fc099063b20a0f14f28dda79ec41b23f0e90bd160fec681908fe12c6afcd50c7273164389b5f9a0fccd8f33a7054a51ab649e92fab92c3cad6355ffecf511
7
+ data.tar.gz: 6a678681feb0b3de7e6273bc8cdd2ad4769ee681916d8fa49e8796a318c5b6c38b2251c908d4793cca09999e6e5b790cf954620cddfafb416a3955c6fefbbac4
@@ -8,7 +8,7 @@ require "active_support/core_ext/module/delegation"
8
8
 
9
9
  module ActiveStorage
10
10
  class Service::HorcruxService < Service
11
- attr_reader :services, :shares, :threshold
11
+ attr_reader :services, :shares, :threshold, :prefix
12
12
 
13
13
  def upload(key,io,checksum: nil, **options)
14
14
  data = io.tap(&:rewind).read
@@ -23,7 +23,8 @@ module ActiveStorage
23
23
  end
24
24
  svc = servicesamples.sample
25
25
  shardkey = SecureRandom.base58(key.length)
26
- svc.upload shardkey, StringIO.new(shards[i]), checksum: nil, **options
26
+ shardkey = svc[:name] + ':' + shardkey if prefix
27
+ svc[:service].upload shardkey, StringIO.new(shards[i]), checksum: nil, **options
27
28
  file.write("#{shardkey},")
28
29
  servicesamples.delete(svc)
29
30
  i = i + 1
@@ -38,8 +39,8 @@ module ActiveStorage
38
39
  while i < shardkeys.count
39
40
  j = 0
40
41
  while j < services.count
41
- if services[j].exist?(shardkeys[i])
42
- shards << services[j].download(shardkeys[i])
42
+ if services[j][:service].exist?(shardkeys[i])
43
+ shards << services[j][:service].download(shardkeys[i])
43
44
  end
44
45
  j = j + 1
45
46
  end
@@ -57,20 +58,33 @@ module ActiveStorage
57
58
  raise ActiveStorage::UnpreviewableError, "Horcrux does not implement ranged download yet"
58
59
  end
59
60
 
60
- def delete(*args)
61
- perform_across_services(:delete, *args)
61
+ def delete(keys)
62
+ shardkeys = keys.split(',')
63
+ shards = []
64
+ i = 0
65
+ while i < shardkeys.count
66
+ j = 0
67
+ while j < services.count
68
+ if services[j][:service].exist?(shardkeys[i])
69
+ services[j][:service].delete(shardkeys[i])
70
+ end
71
+ j = j + 1
72
+ end
73
+ i = i + 1
74
+ end
62
75
  end
63
76
 
64
77
  # Stitch together from named services.
65
- def self.build(services:, shares:, threshold:, configurator:, **options) #:nodoc:
78
+ def self.build(services:, shares:, threshold:, prefix:, configurator:, **options) #:nodoc:
66
79
  new \
67
80
  shares: shares,
68
81
  threshold: threshold,
69
- services: services.collect { |name| configurator.build name }
82
+ prefix: prefix,
83
+ services: services.collect { |name| { :name => name, :service => configurator.build(name) } }
70
84
  end
71
85
 
72
- def initialize(shares:,threshold:,services:)
73
- @shares, @threshold, @services = shares, threshold, services
86
+ def initialize(shares:,threshold:,prefix:,services:)
87
+ @shares, @threshold, @prefix, @services = shares, threshold, prefix, services
74
88
  end
75
89
 
76
90
  def delete_prefixed(*args)
@@ -83,7 +97,7 @@ module ActiveStorage
83
97
  while i < localKeys.count
84
98
  j = 0
85
99
  while j < services.count
86
- if services[j].exist?(localKeys[i])
100
+ if services[j][:service].exist?(localKeys[i])
87
101
  return true
88
102
  end
89
103
  j = j + 1
@@ -1,5 +1,5 @@
1
1
  module ActiveStorage
2
2
  module HorcruxService
3
- VERSION = '0.0.1'.freeze
3
+ VERSION = '0.0.2'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activestorage-horcrux
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Callahan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-08-14 00:00:00.000000000 Z
11
+ date: 2020-08-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler