dragonfly-azure_data_store 0.1.0 → 0.1.1

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: 4d2024967b29c0e312ad70474d518ceb9b6ac941
4
- data.tar.gz: 69f109e7bee50858b5cd899255b5bc660c1f4f9d
3
+ metadata.gz: f68fbd5536bb5c88abb5e1d464072a9460a9cd3b
4
+ data.tar.gz: 32cc8d4759f109a885883a31a5629ee2954ee8b6
5
5
  SHA512:
6
- metadata.gz: 23268df03c06d76312ae8bd52a910080cbe53a3d452878d21a4c29bd237c829e4962e7feda5a7d02c65ebcf808ea6b104cb9ad21ee4565117b428d5a417fb696
7
- data.tar.gz: 6e2c2eed209c11d5d945296bacb21da78256027295d557b920e9b2b6d773ff0da5a5a3b11314ac36fbbeaea2bdb8c6cb0aeacc2f9e72ec519a572cb630773368
6
+ metadata.gz: ebac1d185ed46037a940f0b589241fff93171b8e3c89ee949db9b2e482473c57e3d745021a4a342fef3e30672f95334208b34f6a394607878e4cfc628c939d41
7
+ data.tar.gz: 565a6dc9c05b92ccc6590d49c93788853e0290a52bec86cdc6ed246381ce403bd6fbe1985102e584f918fa17bceb9396b248ee0d0019e36bd98eb4213c68ed2e
data/.gitignore CHANGED
@@ -6,6 +6,6 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
-
9
+ *.gem
10
10
  # rspec failure tracking
11
11
  .rspec_status
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dragonfly-azure_data_store (0.0.1)
4
+ dragonfly-azure_data_store (0.1.1)
5
5
  azure-storage-blob (~> 1.0)
6
6
  dragonfly (~> 1.0)
7
7
 
@@ -96,8 +96,8 @@ PLATFORMS
96
96
 
97
97
  DEPENDENCIES
98
98
  dragonfly-azure_data_store!
99
- guard-rspec
100
- pry-byebug
99
+ guard-rspec (~> 4.0)
100
+ pry-byebug (~> 3.0)
101
101
  rspec (~> 3.0)
102
102
 
103
103
  BUNDLED WITH
data/README.md CHANGED
@@ -36,6 +36,8 @@ end
36
36
  :url_scheme # defaults to "http"
37
37
  :url_host # defaults to "<account_name>.blob.core.windows.net"
38
38
  :root_path # store all content under a subdirectory - uids will be relative to this - defaults to nil
39
+ :store_meta # store metadata info in azure. Defaults to true
40
+ :legacy_meta # activate only if file store was used before and want to load old `.meta.yml` generated files from azure storage.
39
41
  ```
40
42
 
41
43
  ### Serving directly from Azure
@@ -1,12 +1,13 @@
1
1
  require 'dragonfly'
2
2
  require 'azure/storage/blob'
3
+ require 'yaml'
3
4
 
4
5
  Dragonfly::App.register_datastore(:azure) { Dragonfly::AzureDataStore }
5
6
 
6
7
  module Dragonfly
7
8
  class AzureDataStore
8
9
  attr_accessor :account_name, :access_key, :container_name, :root_path,
9
- :url_scheme, :url_host
10
+ :url_scheme, :url_host, :store_meta, :legacy_meta
10
11
 
11
12
  def initialize(opts = {})
12
13
  @account_name = opts[:account_name]
@@ -15,22 +16,37 @@ module Dragonfly
15
16
  @root_path = opts[:root_path]
16
17
  @url_scheme = opts[:url_scheme] || 'http'
17
18
  @url_host = opts[:url_host]
19
+ @store_meta = opts[:store_meta].nil? ? true : opts[:store_meta]
20
+ @legacy_meta = opts[:legacy_meta]
18
21
  end
19
22
 
20
23
  def write(content, _opts = {})
21
- blob = nil
22
24
  filename = path_for(content.name || 'file')
25
+ path = full_path(filename)
26
+ options = {}
27
+ options[:metadata] = content.meta if store_meta
23
28
  content.file do |f|
24
- blob = storage.create_block_blob(
25
- container.name, full_path(filename), f
26
- )
29
+ storage.create_block_blob(container.name, path, f, options)
27
30
  end
28
31
  filename
29
32
  end
30
33
 
31
34
  def read(uid)
32
- blob = storage.get_blob(container.name, full_path(uid))
33
- [blob[1], blob[0].properties]
35
+ path = full_path(uid)
36
+ blob = storage.get_blob(container.name, path)
37
+ meta = nil
38
+ if store_meta
39
+ meta = blob[0].metadata
40
+ if legacy_meta && (meta.nil? || meta.empty?)
41
+ begin
42
+ meta_blob = storage.get_blob(container.name, meta_path(path))
43
+ meta = YAML.safe_load(meta_blob[1])
44
+ rescue Azure::Core::Http::HTTPError
45
+ meta = {}
46
+ end
47
+ end
48
+ end
49
+ [blob[1], meta]
34
50
  rescue Azure::Core::Http::HTTPError
35
51
  nil
36
52
  end
@@ -76,5 +92,9 @@ module Dragonfly
76
92
  def full_path(filename)
77
93
  File.join(*[root_path, filename].compact)
78
94
  end
95
+
96
+ def meta_path(path)
97
+ "#{path}.meta.yml"
98
+ end
79
99
  end
80
100
  end
@@ -1,5 +1,5 @@
1
1
  module Dragonfly
2
2
  class AzureDataStore
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dragonfly-azure_data_store
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alter Lagos
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-02-13 00:00:00.000000000 Z
11
+ date: 2018-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: azure-storage-blob
@@ -97,8 +97,6 @@ files:
97
97
  - LICENSE.txt
98
98
  - README.md
99
99
  - Rakefile
100
- - bin/console
101
- - bin/setup
102
100
  - dragonfly-azure_data_store.gemspec
103
101
  - lib/dragonfly/azure_data_store.rb
104
102
  - lib/dragonfly/azure_data_store/version.rb
data/bin/console DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "dragonfly/azure_data_store"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start(__FILE__)
data/bin/setup DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here