carraway 0.10.0 → 0.11.0

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
  SHA256:
3
- metadata.gz: d415ec6e6ae471fa9ae3efa61f5def1465f9ee389f4493c79fa9346b6a48403f
4
- data.tar.gz: afbdce1993f0df85e123a52c700b9752ddc211a294a49ec79e25db4450dcd1f4
3
+ metadata.gz: 36a15e8b79a0687aed5a10830b95266d42c335fe44d89c5c9d437fe25d142ebc
4
+ data.tar.gz: ff04bf837c8be068eb9402ff2c9c50270d047947befa4053ead816cfb9baa14d
5
5
  SHA512:
6
- metadata.gz: 54455684723a8cf69b68c04625340d84efe035fd2787d3b5d36fd971ec23b9b97b30f6909cc97f83c690343848805d613c6b2f0527bcb1a27435580e0d0fbe14
7
- data.tar.gz: be647d4c395a25a290ae1c93d12f9d5ff0b72aabe379ce609dcaa94b035d200552fcb157cc242f1758099a1c69bcd6c4b35717b744bc4af0b6041187b48c34f8
6
+ metadata.gz: 31243a8f655fccb76aacc36bb6e029118bcf2d725b29bfadffd322fe3540c183033fdeb5431c4d10934592e2090c092e34082adf1202fc9eb676045667903d81
7
+ data.tar.gz: 125910fed0d17842f64b8adff09388d0568c5cf46667f6a46b02192bb7e4cc58ad29a8e188424a8a34a284bf31056b7c9d0b45c8fcd242e8aec800bed0ca5a52
data/CHANGELOG.md ADDED
@@ -0,0 +1,58 @@
1
+ # Change Log
2
+
3
+ ## [v0.10.0](https://github.com/adorechic/carraway/tree/v0.10.0) (2019-02-11)
4
+ [Full Changelog](https://github.com/adorechic/carraway/compare/v0.9.0...v0.10.0)
5
+
6
+ **Merged pull requests:**
7
+
8
+ - Post labeling [\#4](https://github.com/adorechic/carraway/pull/4) ([adorechic](https://github.com/adorechic))
9
+ - Extract file repository [\#3](https://github.com/adorechic/carraway/pull/3) ([adorechic](https://github.com/adorechic))
10
+ - Improve README documents [\#2](https://github.com/adorechic/carraway/pull/2) ([adorechic](https://github.com/adorechic))
11
+
12
+ ## [v0.9.0](https://github.com/adorechic/carraway/tree/v0.9.0) (2018-11-07)
13
+ [Full Changelog](https://github.com/adorechic/carraway/compare/v0.8.0...v0.9.0)
14
+
15
+ ## [v0.8.0](https://github.com/adorechic/carraway/tree/v0.8.0) (2018-09-05)
16
+ [Full Changelog](https://github.com/adorechic/carraway/compare/v0.7.0...v0.8.0)
17
+
18
+ **Merged pull requests:**
19
+
20
+ - Add render HTML using Markdown option [\#1](https://github.com/adorechic/carraway/pull/1) ([autumo](https://github.com/autumo))
21
+
22
+ ## [v0.7.0](https://github.com/adorechic/carraway/tree/v0.7.0) (2018-09-04)
23
+ [Full Changelog](https://github.com/adorechic/carraway/compare/v0.6.0...v0.7.0)
24
+
25
+ ## [v0.6.0](https://github.com/adorechic/carraway/tree/v0.6.0) (2018-09-03)
26
+ [Full Changelog](https://github.com/adorechic/carraway/compare/v0.5.0...v0.6.0)
27
+
28
+ ## [v0.5.0](https://github.com/adorechic/carraway/tree/v0.5.0) (2018-09-03)
29
+ [Full Changelog](https://github.com/adorechic/carraway/compare/v0.4.0...v0.5.0)
30
+
31
+ ## [v0.4.0](https://github.com/adorechic/carraway/tree/v0.4.0) (2018-09-03)
32
+ [Full Changelog](https://github.com/adorechic/carraway/compare/v0.3.1...v0.4.0)
33
+
34
+ ## [v0.3.1](https://github.com/adorechic/carraway/tree/v0.3.1) (2018-08-31)
35
+ [Full Changelog](https://github.com/adorechic/carraway/compare/v0.3.0...v0.3.1)
36
+
37
+ ## [v0.3.0](https://github.com/adorechic/carraway/tree/v0.3.0) (2018-08-31)
38
+ [Full Changelog](https://github.com/adorechic/carraway/compare/v0.2.1...v0.3.0)
39
+
40
+ ## [v0.2.1](https://github.com/adorechic/carraway/tree/v0.2.1) (2018-08-31)
41
+ [Full Changelog](https://github.com/adorechic/carraway/compare/v0.2.0...v0.2.1)
42
+
43
+ ## [v0.2.0](https://github.com/adorechic/carraway/tree/v0.2.0) (2018-08-30)
44
+ [Full Changelog](https://github.com/adorechic/carraway/compare/v0.1.3...v0.2.0)
45
+
46
+ ## [v0.1.3](https://github.com/adorechic/carraway/tree/v0.1.3) (2018-08-30)
47
+ [Full Changelog](https://github.com/adorechic/carraway/compare/v0.1.2...v0.1.3)
48
+
49
+ ## [v0.1.2](https://github.com/adorechic/carraway/tree/v0.1.2) (2018-08-27)
50
+ [Full Changelog](https://github.com/adorechic/carraway/compare/v0.1.1...v0.1.2)
51
+
52
+ ## [v0.1.1](https://github.com/adorechic/carraway/tree/v0.1.1) (2018-08-27)
53
+ [Full Changelog](https://github.com/adorechic/carraway/compare/v0.1.0...v0.1.1)
54
+
55
+ ## [v0.1.0](https://github.com/adorechic/carraway/tree/v0.1.0) (2018-08-27)
56
+
57
+
58
+ \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
data/README.md CHANGED
@@ -69,6 +69,8 @@ backend: # Required
69
69
  file_backend:
70
70
  bucket: 'carraway_bucket' # Required
71
71
  prefix: 'files' # Required.
72
+ endpoint: http://localhost:6001 # Optional. Set if you use local S3 like mineo
73
+ region: ap-northeast-1 # Optional.
72
74
  categories: # Least one category is required
73
75
  category_key:
74
76
  title: 'Category Name'
@@ -7,3 +7,11 @@ services:
7
7
  command: -jar DynamoDBLocal.jar -dbPath /var/lib/dynamodb -port 6000
8
8
  volumes:
9
9
  - /tmp:/var/lib/dynamodb
10
+ minio:
11
+ image: minio/minio
12
+ ports:
13
+ - '6001:9000'
14
+ environment:
15
+ MINIO_ACCESS_KEY: dummy
16
+ MINIO_SECRET_KEY: dummy_secret
17
+ command: server /data
data/lib/carraway/cli.rb CHANGED
@@ -15,6 +15,7 @@ module Carraway
15
15
  def setup
16
16
  Carraway::Config.load(options[:config])
17
17
  Carraway::Post.setup
18
+ Carraway::FileRepository.new.setup
18
19
  end
19
20
 
20
21
  desc 'drop', 'Drop backend'
@@ -22,6 +23,7 @@ module Carraway
22
23
  def drop
23
24
  Carraway::Config.load(options[:config])
24
25
  Carraway::Post.drop
26
+ Carraway::FileRepository.new.drop
25
27
  end
26
28
  end
27
29
  end
data/lib/carraway/file.rb CHANGED
@@ -3,7 +3,8 @@ require 'aws-sdk-s3'
3
3
 
4
4
  module Carraway
5
5
  class File
6
- attr_reader :title, :uid, :created, :file
6
+ attr_reader :uid, :created, :file
7
+ attr_accessor :title
7
8
 
8
9
  def initialize(title:, file: nil, uid: nil, created: nil)
9
10
  @title = title
@@ -18,6 +18,32 @@ module Carraway
18
18
  end
19
19
  end
20
20
 
21
+ def find(uid)
22
+ item = client.get_item(
23
+ key: {
24
+ uid: uid
25
+ },
26
+ table_name: Config.backend['table_name'],
27
+ ).item
28
+ if item && item['record_type'] == 'file'
29
+ Carraway::File.new(
30
+ uid: item['uid'],
31
+ title: item['title'],
32
+ created: item['created']
33
+ )
34
+ end
35
+ end
36
+
37
+ def persisted?(file)
38
+ s3_client.head_object(
39
+ bucket: Config.file_backend['bucket'],
40
+ key: file.path
41
+ )
42
+ true
43
+ rescue Aws::S3::Errors::NotFound
44
+ false
45
+ end
46
+
21
47
  def save(file, at: Time.now)
22
48
  client.put_item(
23
49
  table_name: Config.backend['table_name'],
@@ -25,15 +51,50 @@ module Carraway
25
51
  uid: file.uid,
26
52
  record_type: 'file',
27
53
  title: file.title,
28
- created: at.to_i
54
+ created: file.created || at.to_i
29
55
  }
30
56
  )
31
- s3_client.put_object(
32
- body: file.file[:tempfile],
57
+ if file.file
58
+ s3_client.put_object(
59
+ body: file.file[:tempfile],
60
+ bucket: Config.file_backend['bucket'],
61
+ acl: 'public-read',
62
+ key: file.path
63
+ )
64
+ end
65
+ end
66
+
67
+ def destroy(file)
68
+ s3_client.delete_object(
33
69
  bucket: Config.file_backend['bucket'],
34
- acl: 'public-read',
35
70
  key: file.path
36
71
  )
72
+ client.delete_item(
73
+ table_name: Config.backend['table_name'],
74
+ key: {
75
+ uid: file.uid
76
+ }
77
+ )
78
+ end
79
+
80
+ def setup
81
+ s3_client.create_bucket(
82
+ bucket: Config.file_backend['bucket']
83
+ )
84
+ end
85
+
86
+ def drop
87
+ s3_client.list_objects(
88
+ bucket: Config.file_backend['bucket']
89
+ ).contents.each do |content|
90
+ s3_client.delete_object(
91
+ bucket: Config.file_backend['bucket'],
92
+ key: content.key
93
+ )
94
+ end
95
+ s3_client.delete_bucket(
96
+ bucket: Config.file_backend['bucket']
97
+ )
37
98
  end
38
99
 
39
100
  private
@@ -52,7 +113,17 @@ module Carraway
52
113
  end
53
114
 
54
115
  def s3_client
55
- Aws::S3::Client.new
116
+ if Config.file_backend['endpoint']
117
+ Aws::S3::Client.new(
118
+ endpoint: Config.file_backend['endpoint'],
119
+ region: Config.file_backend['region'],
120
+ access_key_id: 'dummy',
121
+ secret_access_key: 'dummy_secret',
122
+ force_path_style: true,
123
+ )
124
+ else
125
+ Aws::S3::Client.new
126
+ end
56
127
  end
57
128
  end
58
129
  end
@@ -122,11 +122,35 @@ module Carraway
122
122
  redirect "/carraway/"
123
123
  end
124
124
 
125
+ get %r{/carraway/files/(\d+)} do |uid|
126
+ # FIXME handle not found
127
+ @file = FileRepository.new.find(uid)
128
+ erb :file_edit
129
+ end
130
+
125
131
  get '/carraway/files' do
126
132
  @files = FileRepository.new.all
127
133
  erb :files
128
134
  end
129
135
 
136
+ patch %r{/carraway/files/(\d+)} do |uid|
137
+ repository = FileRepository.new
138
+ file = repository.find(uid)
139
+ # FIXME handle not found
140
+ # FIXME validation
141
+ file.title = params[:title]
142
+ repository.save(file)
143
+ redirect "/carraway/files/#{file.uid}"
144
+ end
145
+
146
+ delete %r{/carraway/files/(\d+)} do |uid|
147
+ repository = FileRepository.new
148
+ file = repository.find(uid)
149
+ # FIXME handle not found
150
+ repository.destroy(file)
151
+ redirect "/carraway/files"
152
+ end
153
+
130
154
  post '/carraway/files' do
131
155
  file = File.new(title: params[:title], file: params[:file])
132
156
  # FIXME validation and error
@@ -1,3 +1,3 @@
1
1
  module Carraway
2
- VERSION = "0.10.0"
2
+ VERSION = "0.11.0"
3
3
  end
@@ -0,0 +1,21 @@
1
+ <h3><%= @file.title %></h3>
2
+ <p><%= @file.path %></p>
3
+ <div class="row">
4
+ <form action="/carraway/files/<%= @file.uid %>" method="POST" class="col s12" enctype="multipart/form-data">
5
+ <input type="hidden" name="_method" value="PATCH">
6
+ <div class="row">
7
+ <div class="input-field col s12">
8
+ <input type="text" id="title" name="title" placeholder="ファイルタイトル" value="<%= @file.title %>" >
9
+ <label for="title">ファイルタイトル</label>
10
+ </div>
11
+ </div>
12
+
13
+ <button type="submit" class="waves-effect waves-light btn">保存</button>
14
+ </form>
15
+ <form action="/carraway/files/<%= @file.uid %>" method="POST" class="col s12">
16
+ <input type="hidden" name="_method" value="DELETE">
17
+ <div class="col s6">
18
+ <button type="submit" class="waves-effect waves-light btn red">削除</button>
19
+ </div>
20
+ </form>
21
+ </div>
@@ -25,7 +25,11 @@
25
25
  <tbody>
26
26
  <% @files.each do |file| %>
27
27
  <tr>
28
- <td><%= file.title %></td>
28
+ <td>
29
+ <a href="/carraway/files/<%= file.uid%>">
30
+ <%= file.title %>
31
+ </a>
32
+ </td>
29
33
  <td><%= file.created_at %></td>
30
34
  <td><%= file.path %></td>
31
35
  </tr>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carraway
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - adorechic
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-02-11 00:00:00.000000000 Z
11
+ date: 2019-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -203,6 +203,7 @@ files:
203
203
  - ".gitignore"
204
204
  - ".rspec"
205
205
  - ".travis.yml"
206
+ - CHANGELOG.md
206
207
  - CODE_OF_CONDUCT.md
207
208
  - Gemfile
208
209
  - LICENSE.txt
@@ -224,6 +225,7 @@ files:
224
225
  - lib/carraway/server.rb
225
226
  - lib/carraway/version.rb
226
227
  - lib/carraway/views/edit.erb
228
+ - lib/carraway/views/file_edit.erb
227
229
  - lib/carraway/views/file_modal.erb
228
230
  - lib/carraway/views/files.erb
229
231
  - lib/carraway/views/layout.erb
@@ -248,8 +250,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
248
250
  - !ruby/object:Gem::Version
249
251
  version: '0'
250
252
  requirements: []
251
- rubyforge_project:
252
- rubygems_version: 2.7.7
253
+ rubygems_version: 3.0.2
253
254
  signing_key:
254
255
  specification_version: 4
255
256
  summary: GatsbyJS backend