jekyll-paspagon 1.0.2 → 1.0.3

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: 3473a67fa94697256aa751c4609966e8aecb4f17
4
- data.tar.gz: 185620c215cd94724abaa23b9ad366e234b4f837
3
+ metadata.gz: eaafe762fcedbd097542c0fa0290e5beb71da952
4
+ data.tar.gz: f03219074db63e2337a6f62f7ad022a1bd33437b
5
5
  SHA512:
6
- metadata.gz: bf302dad427027862b62b614a2ad63a49cf0fb74fdd4ac080cc1c5b6760526ba57410a60fa80222a01174b8fe80bbb24d56c911b83265ea22befc9f17cd4f8e4
7
- data.tar.gz: 9a9013a868676403ba42f401ce05fb8b440edf2889d0622a685b228c4dcbead937998c56e932f8e32f532e0561aedf7b48ba18d3a945626f43ed6804e4ca5039
6
+ metadata.gz: 729648696853240d580a7345758c19f501b10f69c37394077c0f3e506cb1bae529a72b5952d507fb0e13be9d1a3dfecd22bae6f671f2077e5f9568fb3358bfd9
7
+ data.tar.gz: 183710d63a62d988f63d06db6f134ebf47a106b4fcc130b17ef9f3061a5ae21c314e34da2d54e293a2bf835a17f662a46f0dc03b2631bf0820fb5d1122eb2cef
data/README.md CHANGED
@@ -18,10 +18,6 @@ group :jekyll_plugins do
18
18
  end
19
19
  ```
20
20
 
21
- ### Configure S3 bucket
22
-
23
- Create a S3 bucket in the `s3-us-west-2` region (Oregon) and [grant Paspagon read access to it](http://paspagon.com/terms-seller/#step-1-grant-us-read-access-to-your-bucket), as described in Paspagon’s terms of service.
24
-
25
21
  ### Configure Paspagon
26
22
 
27
23
  To your `_config.yml`, add a section adhering to the following example:
@@ -68,6 +64,9 @@ defaults:
68
64
  paid_after: 15 # HTML version will be paid 15 days after publication.
69
65
  pdf:
70
66
  content_disposition: attachment
67
+ # If you don’t provide content type, the plugin will try to set a
68
+ # reasonable default for some popular formats, falling back to
69
+ # application/octet-stream if necessary.
71
70
  content_type: application/pdf
72
71
  paid_before: 2 # PDF version will be paid for the first two days.
73
72
  epub: {} # EPUB version will be paid from the beginning.
@@ -123,7 +122,7 @@ After doing the steps above, paid versions of your posts will be generated autom
123
122
 
124
123
  If you specify thresholds like `paid_before`, you will need to run `jekyll build` again after reaching them.
125
124
 
126
- You may override formats, buckets, prices and payment addresses for each post by putting the relevant data in the YAML front matter:
125
+ You may override formats, assigned buckets, prices, payment addresses and link expiration times for each post by putting the relevant data in the YAML front matter:
127
126
 
128
127
  ```yaml
129
128
  layout: post
@@ -133,7 +132,7 @@ payment:
133
132
  USD: false
134
133
  XAU: 3
135
134
  address:
136
- bitcoin: 1Foo
135
+ BTC: 1Foo
137
136
  bucket: foo
138
137
  formats:
139
138
  epub:
@@ -157,7 +156,7 @@ This command uploads missing or updated paid files to S3 and removes ones which
157
156
 
158
157
  ## Markdown compatibility
159
158
 
160
- jekyll-paspagon uses Pandoc to generate formats other than HTML. The default input format is `markdown_github-hard_line_breaks`. It may be impacted by some site settings like Kramdown’s `hard_wrap`, but the most reliable it to set it explicitly in `_config.yml`:
159
+ jekyll-paspagon uses Pandoc to generate formats other than HTML. The default input format is `markdown_github-hard_line_breaks`. It may be impacted by some site settings like Kramdown’s `hard_wrap`, but the most reliable way of changing it is setting it explicitly in `_config.yml`:
161
160
 
162
161
  ```yaml
163
162
  pandoc:
@@ -62,13 +62,13 @@ Jekyll::Hooks.register :posts, :post_write do |post|
62
62
  unless post.data['excerpt_only']
63
63
  post.data['formats'].each do |format, format_config|
64
64
  puts("Generated #{format_config['path']}.") if maybe_generate_doc(post, format)
65
- attrs = format_xattrs(format_config)
65
+ attrs = format_xattrs(format, format_config)
66
66
  sync_payment_attributes(format_config['path'], attrs)
67
67
  end
68
68
  end
69
69
  end
70
70
 
71
- def format_xattrs(format_config)
71
+ def format_xattrs(format, format_config)
72
72
  attrs = {}
73
73
  format_config['prices'].each do |currency, price|
74
74
  attrs["user.x-amz-meta-price-#{currency}"] = price if price
@@ -78,10 +78,20 @@ def format_xattrs(format_config)
78
78
  end
79
79
  attrs['user.x-amz-meta-link-expiration-time'] = format_config['link_expiration_time'] if format_config['link_expiration_time']
80
80
  attrs['user.content-disposition'] = format_config['content_disposition'] if format_config['content_disposition']
81
- attrs['user.content-type'] = format_config['content_type'] if format_config['content_type']
81
+ attrs['user.content-type'] = format_config['content_type'] || default_content_type(format)
82
82
  attrs
83
83
  end
84
84
 
85
+ def default_content_type(format)
86
+ content_types =
87
+ {'epub' => 'application/epub+zip',
88
+ 'html' => 'text/html',
89
+ 'mobi' => 'application/x-mobipocket-ebook',
90
+ 'pdf' => 'application/pdf'}
91
+ content_types.default = 'application/octet-stream'
92
+ content_types[format]
93
+ end
94
+
85
95
  def sync_payment_attributes(path, attrs)
86
96
  xattr = Xattr.new(path)
87
97
  old = xattr.list.select { |a| a.start_with?('user.') }
@@ -103,10 +103,14 @@ module Jekyll
103
103
  to_upload.each do |p|
104
104
  puts("Uploading #{p} to bucket #{bucket_name}…")
105
105
  xattr = Xattr.new(p)
106
- metadata = xattr.as_json.select { |k, _| k.start_with?('user.') }.map { |k, v| [k.sub(/^user./, ''), v] }.to_h
107
- bucket.put_object(body: File.open(p),
108
- metadata: metadata,
109
- key: p)
106
+ user_metadata = xattr.as_json.select { |k, _| k.start_with?('user.x-amz-meta-') }.map { |k, v| [k.sub(/^user./, ''), v] }.to_h
107
+ options =
108
+ {body: File.open(p),
109
+ metadata: user_metadata,
110
+ key: p}
111
+ options[:content_disposition] = xattr['user.content-disposition'] if xattr['user.content-disposition']
112
+ options[:content_type] = xattr['user.content-type'] if xattr['user.content-type']
113
+ bucket.put_object(options)
110
114
  end
111
115
  end
112
116
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-paspagon
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Krzysztof Jurewicz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-22 00:00:00.000000000 Z
11
+ date: 2016-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi-xattr