mfs 0.0.3 → 0.0.4

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: c9b00957745dcb112bcc396dbcd39eaef86f59b4
4
- data.tar.gz: 99ff1f459474364f5aaedac07a7b8cb6d0388dbd
3
+ metadata.gz: dcea98d53fb089d933a1eae596871bdac6c4b6ba
4
+ data.tar.gz: eb34cc820cf860ee89868c4259ddf6c0d2d8de6c
5
5
  SHA512:
6
- metadata.gz: 4c06ae52675d8b0f2e417169b4e76b86559b53e30d8b19bf19dcf70b3f5ce6228cdc22a32c309f2c5d03a97b97e0ab15d0d36d0ed10abd387a9b31fa65ee73b8
7
- data.tar.gz: 8d29687b9187c832cc6767ebf66f00ab2c6fe74f7cd40070cdf3005bda929f4f1f0539e4db1a6e21b1f8478b95924fa3be077cb3212580eeaa7651bed6a042db
6
+ metadata.gz: 0a1594cff6da3ae6b2d441f26615de65217f4d295cd2bee50654211e6dbaa45fe6a9b653fb99f7db52d03b7d58cfa1af00d9530523e035b9e3338889b2416091
7
+ data.tar.gz: 17912fa43733acb15db6920cdf2f538385c6f8e070f03bfa8857f372178f6b44136dfc9af78c4dd0adf2210e70f865fb798d0263dc2c683284b5bc4610fd62b3
data/README.md CHANGED
@@ -24,26 +24,29 @@ Usage
24
24
  -----
25
25
  ```ruby
26
26
  require 'mfs'
27
- entry = Mfs::Loader.load_file('path/to/file')
27
+ entry = Mfs::Entry.load_file('path/to/file')
28
28
  entry.filepath
29
29
  entry.filename
30
30
  entry.created_at
31
31
  entry.data
32
32
 
33
33
  # Set arbitrary Meta-data fields
34
- Mfs::Loader.load_file('path/to/file',test_field: true)
34
+ Mfs::Entry.load_file('path/to/file',test_field: true)
35
35
  entry = Mfs::Entry.where(test_field: true).first
36
36
 
37
37
  # Load all files in a directory structure
38
- entries = Mfs::Loader.load_directory('path/to/files')
38
+ entries = Mfs::Entry.load_directory('path/to/files')
39
39
 
40
40
  # Load all files and set meta-data
41
- entries = Mfs::Loader.load_directory('path/to/files') do |filename|
41
+ entries = Mfs::Entry.load_directory('path/to/files') do |filename|
42
42
  {has_a: filename.include('a')}
43
43
  end
44
44
 
45
45
  ```
46
46
 
47
+ Create your own file types.
48
+ As an example see [Mfs::Types::Certificate](lib/types/certificate.rb) and its [Spec](spec/types/certificate_spec.rb)
49
+
47
50
  Limitations
48
51
  -----------
49
52
  * No File Hierarchy
data/lib/mfs.rb CHANGED
@@ -2,9 +2,9 @@ require 'bundler/setup'
2
2
  require 'mongoid'
3
3
 
4
4
  require "mfs/version"
5
- require "mfs/loader"
5
+ require "mfs/can_be_created_from_files"
6
6
  require "mfs/entry"
7
-
7
+ require "mfs/types/certificate"
8
8
 
9
9
 
10
10
  module Mfs
@@ -0,0 +1,24 @@
1
+ module Mfs
2
+ module CanBeCreatedFromFiles
3
+
4
+ def load_directory(path)
5
+ Dir.glob("#{path}/**/*").map do |file|
6
+ next if File.directory?(file)
7
+
8
+ additional_metadata = block_given? ? yield(file) : {}
9
+
10
+ load_file(file, additional_metadata)
11
+ end.compact
12
+ end
13
+
14
+ def load_file(filename, additional_metadata = {})
15
+ create(
16
+ additional_metadata.merge(
17
+ data: File.read(filename),
18
+ filename: filename
19
+ )
20
+ )
21
+ end
22
+
23
+ end
24
+ end
@@ -2,10 +2,12 @@ module Mfs
2
2
  class Entry
3
3
  include Mongoid::Document
4
4
  include Mongoid::Timestamps
5
+ extend CanBeCreatedFromFiles
5
6
 
6
7
  field :data
7
8
  field :filename, type: String
8
9
  field :filepath
10
+ field :filetype
9
11
 
10
12
  validates_presence_of :filename
11
13
  before_create :calculate_metadata
@@ -0,0 +1,17 @@
1
+ module Mfs
2
+ module Types
3
+ class Certificate < Entry
4
+ field :filetype, default: "certificate"
5
+
6
+
7
+ def certificate
8
+ @certificate ||= OpenSSL::X509::Certificate.new data
9
+ end
10
+
11
+ def dn
12
+ certificate.subject.to_s
13
+ end
14
+
15
+ end
16
+ end
17
+ end
@@ -1,3 +1,3 @@
1
1
  module Mfs
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+
3
+ module Mfs
4
+
5
+ describe CanBeCreatedFromFiles do
6
+
7
+ class FileHolder
8
+ extend CanBeCreatedFromFiles
9
+
10
+ attr_reader :hash
11
+
12
+ def self.create(params)
13
+ new(params)
14
+ end
15
+
16
+ def initialize(initialization_hash)
17
+ @hash = initialization_hash
18
+ end
19
+
20
+ end
21
+
22
+
23
+ describe "can load files from directory" do
24
+ before do
25
+ @file_holders = FileHolder.load_directory('spec/fixtures/files') do |filename|
26
+ {additional_field: filename}
27
+ end
28
+ end
29
+ subject { @file_holders }
30
+ its(:size) { should eq 11 }
31
+
32
+ specify "they should all have additional_field" do
33
+ @file_holders.reject { |file| file.hash[:additional_field].match /#{file.hash[:filename]}/ }.should be_empty
34
+ end
35
+
36
+ end
37
+
38
+ describe "can load file" do
39
+ before do
40
+ @file_holder = FileHolder.load_file('spec/fixtures/files/file1')
41
+ end
42
+ subject { @file_holder }
43
+ its(:hash) { should have_key :data }
44
+ it "should have file contents" do
45
+ @file_holder.hash[:data].should eq 'This is File One'
46
+ end
47
+ end
48
+ end
49
+
50
+ end
@@ -8,9 +8,9 @@ module Mfs
8
8
  @entry = Entry.new
9
9
  end
10
10
 
11
- subject {@entry}
11
+ subject { @entry }
12
12
 
13
- it { should_not be_valid}
13
+ it { should_not be_valid }
14
14
  end
15
15
 
16
16
  describe "has proper fields" do
@@ -18,17 +18,20 @@ module Mfs
18
18
  @entry = Entry.create(
19
19
  data: "HarderBetterFasterStronger",
20
20
  filename: "spec/fixtures/file1",
21
- filepath: "spec/fixtures"
21
+ filepath: "spec/fixtures",
22
+ filetype: "fake"
22
23
  )
23
24
  end
24
25
 
25
26
  subject { @entry }
26
27
 
27
- it {should be_valid}
28
+ it { should be_valid }
28
29
  its(:data) { should eq "HarderBetterFasterStronger" }
29
30
  its(:filename) { should eq "file1" }
30
31
  its(:filepath) { should match "spec/fixtures" }
32
+ its(:filetype) { should eq "fake"}
31
33
  its(:created_at) { should be }
32
34
  end
35
+
33
36
  end
34
37
  end
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  module Mfs
4
4
  describe "Integration" do
5
5
  before do
6
- Loader.load_directory('spec/fixtures/files') do |filename|
6
+ Entry.load_directory('spec/fixtures/files') do |filename|
7
7
  {even: (filename[-1].to_i % 2 == 0) ? true : false}
8
8
  end
9
9
  end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+ module Mfs
3
+ module Types
4
+
5
+ describe Certificate do
6
+ describe "has correct filetype" do
7
+ before do
8
+ @certificate = Certificate.load_file("spec/fixtures/test.pem")
9
+ end
10
+ subject { @certificate}
11
+ its(:filetype) {should eq "certificate"}
12
+ its(:dn) { should eq "/C=US/ST=NJ/O=SoftwareWithFriends/CN=Tim"}
13
+ end
14
+ end
15
+ end
16
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mfs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Johson
@@ -84,10 +84,12 @@ files:
84
84
  - Rakefile
85
85
  - config/mongoid.yml
86
86
  - lib/mfs.rb
87
+ - lib/mfs/can_be_created_from_files.rb
87
88
  - lib/mfs/entry.rb
88
- - lib/mfs/loader.rb
89
+ - lib/mfs/types/certificate.rb
89
90
  - lib/mfs/version.rb
90
91
  - mfs.gemspec
92
+ - spec/can_be_created_from_files_spec.rb
91
93
  - spec/entry_spec.rb
92
94
  - spec/fixtures/files/file1
93
95
  - spec/fixtures/files/file10
@@ -101,9 +103,9 @@ files:
101
103
  - spec/fixtures/files/file9
102
104
  - spec/fixtures/files/sub/file11
103
105
  - spec/integration_spec.rb
104
- - spec/loader_spec.rb
105
106
  - spec/mfs_spec.rb
106
107
  - spec/spec_helper.rb
108
+ - spec/types/certificate_spec.rb
107
109
  homepage: https://github.com/SoftwareWithFriends/mfs
108
110
  licenses:
109
111
  - MIT
@@ -129,6 +131,7 @@ signing_key:
129
131
  specification_version: 4
130
132
  summary: MongoFileStore stores files in mongo.
131
133
  test_files:
134
+ - spec/can_be_created_from_files_spec.rb
132
135
  - spec/entry_spec.rb
133
136
  - spec/fixtures/files/file1
134
137
  - spec/fixtures/files/file10
@@ -142,6 +145,6 @@ test_files:
142
145
  - spec/fixtures/files/file9
143
146
  - spec/fixtures/files/sub/file11
144
147
  - spec/integration_spec.rb
145
- - spec/loader_spec.rb
146
148
  - spec/mfs_spec.rb
147
149
  - spec/spec_helper.rb
150
+ - spec/types/certificate_spec.rb
@@ -1,24 +0,0 @@
1
- module Mfs
2
- module Loader
3
-
4
- def self.load_directory(path)
5
- Dir.glob("#{path}/**/*").map do |file|
6
- unless File.directory?(file)
7
- additional_metadata = block_given? ? yield(file) : {}
8
- load_file(file, additional_metadata)
9
- end
10
- end.compact!
11
- end
12
-
13
- def self.load_file(filename, additional_metadata = {})
14
-
15
- Entry.create(
16
- additional_metadata.merge(
17
- data: File.read(filename),
18
- filename: filename
19
- )
20
- )
21
- end
22
-
23
- end
24
- end
@@ -1,31 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Mfs
4
-
5
- describe Loader do
6
-
7
- describe "can load files from directory" do
8
- before do
9
- @files = Loader.load_directory('spec/fixtures/files') do |filename|
10
- {additional_field: filename}
11
- end
12
- end
13
- subject { @files }
14
- its(:size) { should eq 11 }
15
-
16
- specify "they should all have additional_field" do
17
- @files.reject { |file| file.additional_field.match /#{file.filename}/ }.should be_empty
18
- end
19
-
20
- end
21
-
22
- describe "can load file" do
23
- before do
24
- @file = Loader.load_file('spec/fixtures/files/file1')
25
- end
26
- subject { @file }
27
- its(:data) { should eq 'This is File One' }
28
- end
29
- end
30
-
31
- end