activestorage-backblaze 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/active_storage/service/backblaze_service.rb +79 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d7c0eb8bb1cab9146cb415bf6b16357b7816fdbe32821c8fffda0281d2fbc5b
|
4
|
+
data.tar.gz: 62b0ce9a3a4bb6816f9ba49b69ef6192c6c2d90043ffc5c1ae1d5aff5b18f08c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ec5fe0d075775943a5dc676fe01cbe98e56dbd4cba2deecc085309ea61aee60bca05790aacd35521cf5877d1c430f57bd5ebf32a00057c3f4f7cb55c2d80c4e1
|
7
|
+
data.tar.gz: 27d5a9803fdd4d3ab3422e06613913a9c0de3983343dc0995d3c3bea78618cf721344dcee8648d60e4b5b6d04720a5dc26dc8906b8b5af9749de56142753da47
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require "fog/backblaze"
|
2
|
+
|
3
|
+
class ActiveStorage::Service::BackblazeService < ActiveStorage::Service
|
4
|
+
def initialize(key_id:, key_token:, bucket_name:, bucket_id:)
|
5
|
+
@key_id = key_id
|
6
|
+
@key_token = key_token
|
7
|
+
@bucket_name = bucket_name
|
8
|
+
@bucket_id = bucket_id
|
9
|
+
@connection = Fog::Storage.new(
|
10
|
+
provider: 'backblaze',
|
11
|
+
b2_key_id: @key_id,
|
12
|
+
b2_key_token: @key_token,
|
13
|
+
b2_bucket_name: @bucket_name,
|
14
|
+
b2_bucket_id: @bucket_id,
|
15
|
+
logger: Logger.new(STDOUT)
|
16
|
+
)
|
17
|
+
end
|
18
|
+
|
19
|
+
def upload(key, io, checksum: nil, **options)
|
20
|
+
instrument :upload, { key: key, checksum: checksum } do
|
21
|
+
begin
|
22
|
+
@connection.put_object(@bucket_name, key, io)
|
23
|
+
rescue => e
|
24
|
+
raise ActiveStorage::IntegrityError
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def download(key)
|
30
|
+
instrument :download, { key: key } do
|
31
|
+
io = @connection.get_object(@bucket_name, key)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def delete(key)
|
36
|
+
instrument :delete, { key: key } do
|
37
|
+
begin
|
38
|
+
@connection.delete_object(@bucket_name, key)
|
39
|
+
rescue => e
|
40
|
+
false
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def delete_prefixed(prefix)
|
46
|
+
delete(prefix)
|
47
|
+
end
|
48
|
+
|
49
|
+
def exist?(key)
|
50
|
+
instrument :exist, { key: key } do |payload|
|
51
|
+
answer = false
|
52
|
+
begin
|
53
|
+
@connection.head_object(@bucket_name, key)
|
54
|
+
answer = true
|
55
|
+
rescue => e
|
56
|
+
end
|
57
|
+
payload[:exist] = answer
|
58
|
+
answer
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def url(key, expires_in:, disposition:, filename:, **options)
|
63
|
+
instrument :url, {key: key} do |payload|
|
64
|
+
url = @connection.get_public_object_url(@bucket_name, key)
|
65
|
+
payload[:url] = url
|
66
|
+
|
67
|
+
url
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def url_for_direct_upload(key, expires_in:, content_type:, content_length:, checksum:)
|
72
|
+
raise NotImpletementedError
|
73
|
+
end
|
74
|
+
|
75
|
+
def headers_for_direct_upload(key, content_type:, checksum:, **)
|
76
|
+
raise NotImpletementedError
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activestorage-backblaze
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jey
|
@@ -30,6 +30,7 @@ executables: []
|
|
30
30
|
extensions: []
|
31
31
|
extra_rdoc_files: []
|
32
32
|
files:
|
33
|
+
- lib/active_storage/service/backblaze_service.rb
|
33
34
|
- lib/active_storage_backblaze.rb
|
34
35
|
homepage: https://github.com/gten/activestorage-backblaze
|
35
36
|
licenses: []
|