wax_iiif 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 25b432a185e5f5ee4cd830eb7bb65ed7306ae44bc48d392efeba1b501425470a
4
- data.tar.gz: fbb6291fecd4e872ec20ac7471cf7078a7a4cd4772077d7f1a93368bf145133f
3
+ metadata.gz: 31844c9c4c8aa58c1e5e940fd0bc447c073e0b4e1e5bf8f7dc77970eeaac95b5
4
+ data.tar.gz: d17b64b8d0f9a6c69340128571128c74bb44c26fb119911aff496dd71a4abc5f
5
5
  SHA512:
6
- metadata.gz: 133ae808b98aa7d4ac1de14f266243f53e849ad81b355718faf5b0bde9bbac04e598475e1f00366a8acc96d2c85f3f170a7d576ee9a1c3fbfe62864f0985d7e2
7
- data.tar.gz: 2ff7691fde04e30fc5be5402aaa8b56cd64b0dcfecbe0cf3f0044b7a5de014821d48f3c39e5f213bd2935dddb0914eb16c5eba7e49d8c17b1c2058682418099c
6
+ metadata.gz: b8b751aaa0cc21122743f4a2a6f7d166cac8cc7bb36942c631cae2343d382973fe2400282dc1c9e884dc4b9b4902ef8b42fa50a214c69b315a0168c29390b334
7
+ data.tar.gz: 7ee23f85b57d3ee86abe9002220b73a5138a950dc94406499d2fa59bd7824c56cab91682cd6dc94d8aa311a185e28e774ea2c09e139269c9866324eb5ae0cc15
@@ -7,7 +7,7 @@ module IiifS3
7
7
  include Utilities::Helpers
8
8
 
9
9
  HEADER_VAL = 'filename'
10
-
10
+
11
11
  #
12
12
  # @!attribute [r] data
13
13
  # @return [Array<Hash>] The raw data computed for the given set of images
@@ -27,7 +27,7 @@ module IiifS3
27
27
  # @param [Hash] config an optional configuration object.
28
28
  # @see IiifS3::Config
29
29
  # @return [Void]
30
- #
30
+ #
31
31
  def initialize(config = {})
32
32
  @manifests = []
33
33
  @config = IiifS3::Config.new(config)
@@ -35,23 +35,23 @@ module IiifS3
35
35
 
36
36
 
37
37
  #
38
- # Load data into the IIIF builder.
39
- #
38
+ # Load data into the IIIF builder.
39
+ #
40
40
  # This will load the data, perform some basic verifications on it, and sort
41
41
  # it into proper order.
42
42
  #
43
- # @param [Array<ImageRecord>, ImageRecord] data
43
+ # @param [Array<ImageRecord>, ImageRecord] data
44
44
  # Either a single ImageRecord or an Array of ImageRecords.
45
- # @raise [IiifS3::Error::InvalidImageData] if any of the data does
45
+ # @raise [IiifS3::Error::InvalidImageData] if any of the data does
46
46
  # not pass the validation checks
47
- #
47
+ #
48
48
  # @return [Void]
49
- #
49
+ #
50
50
  def load(data)
51
51
  @data = [data].flatten # handle hashes and arrays of hashes
52
52
 
53
53
  # validate
54
- @data.each do |image_record|
54
+ @data.each do |image_record|
55
55
  raise IiifS3::Error::InvalidImageData, "Image record #{image_record.inspect} is not an ImageRecord" unless image_record.is_a? ImageRecord
56
56
  raise IiifS3::Error::InvalidImageData, "Image record #{image_record.inspect} does not have an ID and/or a page number" if image_record.id.nil? || image_record.page_number.nil?
57
57
  end
@@ -64,16 +64,16 @@ module IiifS3
64
64
  # @param [Boolean] force_image_generation Generate images even if they already exist
65
65
  #
66
66
  # @return [Void]
67
- #
67
+ #
68
68
  def process_data(force_image_generation=false)
69
69
  return nil if @data.nil? # do nothing without data.
70
70
  @manifests = []
71
71
 
72
72
  resources = {}
73
73
  @data.each do |image_record|
74
-
74
+
75
75
  # image generation
76
- #
76
+ #
77
77
  # It attempts to load the info files and skip generation — not currently working.
78
78
  info_file = image_info_file_name(image_record)
79
79
  if (File.exist?(info_file) && !force_image_generation)
@@ -91,11 +91,11 @@ module IiifS3
91
91
 
92
92
  # Generate the manifests
93
93
  resources.each do |key, val|
94
- manifests.push generate_manifest(val, @config)
94
+ manifests.push generate_manifest(val, @config)
95
95
  end
96
96
 
97
97
  generate_collection
98
- end
98
+ end
99
99
 
100
100
  def generate_collection(label="top")
101
101
  collection = Collection.new(label,@config)
@@ -119,14 +119,14 @@ module IiifS3
119
119
  #
120
120
  # @return [Void]
121
121
  # @todo Fix this to use the correct data format!
122
- #
122
+ #
123
123
  def load_csv(csv_path)
124
124
  raise Error::InvalidCSV unless File.exist? csv_path
125
125
  begin
126
126
  vals = CSV.read(csv_path)
127
127
  rescue CSV::MalformedCSVError
128
128
  raise Error::InvalidCSV
129
- end
129
+ end
130
130
 
131
131
  raise Error::BlankCSV if vals.length == 0
132
132
  raise Error::InvalidCSV if vals[0].length != 3
@@ -141,7 +141,7 @@ module IiifS3
141
141
  "label" => data[2]
142
142
  }
143
143
  end
144
- end
144
+ end
145
145
 
146
146
  protected
147
147
 
@@ -162,7 +162,7 @@ module IiifS3
162
162
  return {"full" => full, "thumbnail" => thumbnail}
163
163
  end
164
164
 
165
- def generate_tiles(data, config)
165
+ def generate_tiles(data, config)
166
166
  width = data.variants["full"].width
167
167
  tile_width = config.tile_width
168
168
  height = data.variants["full"].height
@@ -186,7 +186,7 @@ module IiifS3
186
186
  tile[:xSize] = (tile[:width]/(s*1.0)).ceil
187
187
  end
188
188
  if (tile[:y] + tile[:height] > height)
189
- tile[:height] = height - tile[:y]
189
+ tile[:height] = height - tile[:y]
190
190
  tile[:ySize] = (tile[:height]/(s*1.0)).ceil
191
191
  end
192
192
  tiles.push(tile)
@@ -202,14 +202,14 @@ module IiifS3
202
202
  "#{generate_image_location(data.id,data.page_number)}/info.json"
203
203
  end
204
204
 
205
- def generate_image_json(data, config)
205
+ def generate_image_json(data, config)
206
206
  filename = image_info_file_name(data)
207
207
  info = ImageInfo.new(data.variants["full"].id, data.variants ,config.tile_width, config.tile_scale_factors)
208
208
 
209
209
  puts "writing #{filename}" if config.verbose?
210
210
  Pathname.new(Pathname.new(filename).dirname).mkpath
211
211
  File.open(filename, "w") do |file|
212
- file.puts info.to_json
212
+ file.puts info.to_json
213
213
  end
214
214
  if @config.upload_to_s3
215
215
  add_file_to_s3(filename)
@@ -225,19 +225,6 @@ module IiifS3
225
225
  return m
226
226
  end
227
227
 
228
- def build_a_manifest
229
-
230
- manifest_uri = "@config.s3.bucket/#{generate_id(record)}/manifest.json"
231
- # response = Typhoeus.get(manifest_uri, followlocation: true)
232
- # if response.code == 200
233
- # puts "Skipping #{file}—Manifest already exists." if verbose
234
- # data = JSON.parse(response.body)
235
- # obj = IiifS3::FakeManifest.new(data["@id"], data["@type"], data["label"])
236
- # @iiif.manifests.push(obj)
237
- # next
238
- # end
239
- end
240
-
241
228
 
242
229
  def generate_variants(data, config)
243
230
  obj = {
@@ -246,9 +233,9 @@ module IiifS3
246
233
  }
247
234
 
248
235
  config.variants.each do |key,image_size|
249
- obj[key] = ImageVariant.new(data, config, image_size, image_size)
236
+ obj[key] = ImageVariant.new(data, config, image_size)
250
237
  end
251
238
  return obj
252
239
  end
253
240
  end
254
- end
241
+ end
@@ -1,7 +1,7 @@
1
1
  module IiifS3
2
-
2
+
3
3
  # Config provides a data structure for holding the configuration settings
4
- # for the IiifS3 class.
4
+ # for the IiifS3 class.
5
5
  #
6
6
  # @author David Newbury <david.newbury@gmail.com>
7
7
  #
@@ -9,7 +9,7 @@ module IiifS3
9
9
 
10
10
  # @return [String] The default URL to append to all IDs.
11
11
  DEFAULT_URL = "http://0.0.0.0"
12
- # @return [String] The name of the subdirectory where generated images live
12
+ # @return [String] The name of the subdirectory where generated images live
13
13
  DEFAULT_IMAGE_DIRECTORY_NAME = "images"
14
14
  # @return [String] The default path for writing generated image files
15
15
  DEFAULT_OUTPUT_DIRECTORY = "./build"
@@ -18,7 +18,7 @@ module IiifS3
18
18
  # @return [Array<Number>] The default tile scaling factors
19
19
  DEFAULT_TILE_SCALE_FACTORS = [1,2,4,8]
20
20
  # @return [Number] The default thumbnail size in pixels
21
- DEFAULT_THUMBNAIL_SIZE = 250
21
+ DEFAULT_THUMBNAIL_SIZE = 250
22
22
 
23
23
  #
24
24
  # @!attribute [r] base_url
@@ -87,7 +87,7 @@ module IiifS3
87
87
 
88
88
  # Initialize a new configuration option.
89
89
  #
90
- # @param [Hash] opts
90
+ # @param [Hash] opts
91
91
  # @option opts [Boolean] :upload_to_s3 if true, images and metadata will be
92
92
  # uploaded to Amazon S3. Defaults to False.
93
93
  # @option opts [Number] :tile_width The width in pixels for generated tiles.
@@ -99,11 +99,11 @@ module IiifS3
99
99
  # @option opts [String] :output_dir The name of the directory for generated files.
100
100
  # image data. Defaults to {DEFAULT_OUTPUT_DIRECTORY}
101
101
  # @option opts [String] :base_url The base URL for the generated URIs. Defaults to
102
- # {DEFAULT_URL} if not auto-uploading to S3 and to the s3 bucket if upload_to_s3 is enabled.
102
+ # {DEFAULT_URL} if not auto-uploading to S3 and to the s3 bucket if upload_to_s3 is enabled.
103
103
  # @option opts [Number] :thumbnail_size the size in pixels
104
104
  # for the largest side of the thumbnail images. Defaults to {DEFAULT_THUMBNAIL_SIZE}.
105
- # @option opts [Bool] :use_extensions (true) should files have exensions appended?
106
- # @option opts [Bool] :verbose (false) Should debug information be printed to the console?
105
+ # @option opts [Bool] :use_extensions (true) should files have exensions appended?
106
+ # @option opts [Bool] :verbose (false) Should debug information be printed to the console?
107
107
  # @option opts [String] :prefix ("") a prefix (read: subdirectory) for the generated URIs.
108
108
  # @option opts [Hash{String: String}] :variants
109
109
  def initialize(opts = {})
@@ -120,7 +120,7 @@ module IiifS3
120
120
  @verbose = opts.fetch(:verbose, false) ## false
121
121
  @prefix = opts[:prefix] || ""
122
122
  if @prefix.length > 0 && @prefix[0] != "/"
123
- @prefix = "/#{@prefix}"
123
+ @prefix = "/#{@prefix}"
124
124
  end
125
125
  end
126
126
 
@@ -130,7 +130,7 @@ module IiifS3
130
130
  # @param [IiifS3::Config] other_config The configuration file to compare
131
131
  #
132
132
  # @return [Bool] True if they are the same, false otherwise
133
- #
133
+ #
134
134
  def ==(other_config)
135
135
  valid = true
136
136
  self.instance_variables.each do |v|
@@ -139,4 +139,4 @@ module IiifS3
139
139
  valid
140
140
  end
141
141
  end
142
- end
142
+ end
@@ -9,12 +9,12 @@ module IiifS3
9
9
  class FullImage < ImageVariant
10
10
 
11
11
  protected
12
-
12
+
13
13
  def filestring
14
14
  "/full/full/0"
15
15
  end
16
16
 
17
- def resize(width, height); end
17
+ def resize(width); end
18
18
 
19
19
  end
20
- end
20
+ end
@@ -9,7 +9,7 @@ module IiifS3
9
9
 
10
10
  #
11
11
  # Class ImageVariant represents a single image file within a manifest.
12
- #
12
+ #
13
13
  #
14
14
  # @author David Newbury <david.newbury@gmail.com>
15
15
  #
@@ -18,10 +18,10 @@ module IiifS3
18
18
  include MiniMagick
19
19
 
20
20
  #
21
- # Initializing an ImageVariant will create the actual image file
22
- # on the file system.
23
- #
24
- # To initialize an image, you will need the
21
+ # Initializing an ImageVariant will create the actual image file
22
+ # on the file system.
23
+ #
24
+ # To initialize an image, you will need the
25
25
  # data hash to have an "id", a "image_path", and a "page_number".
26
26
  #
27
27
  # @param [Hash] data A Image Data object.
@@ -29,15 +29,15 @@ module IiifS3
29
29
  # @param [Number] width the desired width of this object in pixels
30
30
  # @param [Number] height the desired height of this object in pixels
31
31
  # @raise IiifS3::Error::InvalidImageData
32
- #
33
- def initialize(data, config, width = nil, height = nil)
32
+ #
33
+ def initialize(data, config, size = nil)
34
34
 
35
35
  @config = config
36
36
  # Validate input data
37
37
  if data.id.nil? || data.id.to_s.empty?
38
- raise IiifS3::Error::InvalidImageData, "Each image needs an ID"
38
+ raise IiifS3::Error::InvalidImageData, "Each image needs an ID"
39
39
  elsif data.image_path.nil? || data.image_path.to_s.empty?
40
- raise IiifS3::Error::InvalidImageData, "Each image needs an path."
40
+ raise IiifS3::Error::InvalidImageData, "Each image needs an path."
41
41
  end
42
42
 
43
43
  # open image
@@ -47,7 +47,8 @@ module IiifS3
47
47
  raise IiifS3::Error::InvalidImageData, "Cannot read this image file: #{data.image_path}. #{e}"
48
48
  end
49
49
 
50
- resize(width, height)
50
+ width = size.nil? ? width : size
51
+ resize(width)
51
52
  @image.format "jpg"
52
53
 
53
54
  @id = generate_image_id(data.id,data.page_number)
@@ -68,7 +69,7 @@ module IiifS3
68
69
 
69
70
  #
70
71
  # @!attribute [r] id
71
- # @return [String] The URI for the variant.
72
+ # @return [String] The URI for the variant.
72
73
  attr_reader :id
73
74
 
74
75
 
@@ -89,10 +90,10 @@ module IiifS3
89
90
  end
90
91
 
91
92
  #
92
- # Get the MIME Content-Type of the image.
93
+ # Get the MIME Content-Type of the image.
93
94
  #
94
95
  # @return [String] the MIME Content-Type (typically "image/jpeg")
95
- #
96
+ #
96
97
  def mime_type
97
98
  @image.mime_type
98
99
  end
@@ -103,7 +104,7 @@ module IiifS3
103
104
  # @param [String, Number] page_number The page number for this particular image.
104
105
  #
105
106
  # @return [<type>] <description>
106
- #
107
+ #
107
108
  def generate_image_id(id, page_number)
108
109
  "#{@config.base_url}#{@config.prefix}/#{@config.image_directory_name}/#{id}-#{page_number}"
109
110
  end
@@ -114,8 +115,8 @@ module IiifS3
114
115
  "full"
115
116
  end
116
117
 
117
- def resize(width, height)
118
- @image.resize "#{width}x#{height}"
118
+ def resize(width)
119
+ @image.resize "#{width}"
119
120
  end
120
121
 
121
122
  def filestring
@@ -123,4 +124,4 @@ module IiifS3
123
124
  end
124
125
 
125
126
  end
126
- end
127
+ end
@@ -12,24 +12,23 @@ module IiifS3
12
12
  #
13
13
  class Thumbnail < ImageVariant
14
14
 
15
- # Initialize a new thumbnail.
15
+ # Initialize a new thumbnail.
16
16
  #
17
17
  # @param [hash] data The image data object
18
18
  # @param [Hash] config The configuration hash
19
19
  # @param [Integer] max_width The maximum width of the thumbnail
20
20
  # @param [Integer] max_height The maximum height of the thumbnail
21
- #
22
- def initialize(data, config, max_width=nil, max_height = nil)
23
- @max_width = max_width || config.thumbnail_size
24
- @max_height = max_height || config.thumbnail_size
21
+ #
22
+ def initialize(data, config, width=nil)
23
+ @width = width || config.thumbnail_size
25
24
  super(data,config)
26
25
  end
27
26
 
28
27
  protected
29
28
 
30
- def resize(width, height)
31
- @image.resize "#{@max_width}x#{@max_height}"
29
+ def resize(width)
30
+ @image.resize "#{@width}"
32
31
  end
33
-
32
+
34
33
  end
35
- end
34
+ end
@@ -7,7 +7,7 @@ describe IiifS3::ImageVariant do
7
7
  "id" => 1,
8
8
  "page_number" => 1
9
9
  }) }
10
-
10
+
11
11
  context "initialization errors" do
12
12
  it "raises if the image does not have an ID" do
13
13
  data.id =nil
@@ -33,23 +33,20 @@ describe IiifS3::ImageVariant do
33
33
  "page_number" => 1
34
34
  })
35
35
  config = IiifS3::Config.new
36
- @img = IiifS3::ImageVariant.new(data, config, 100, 100)
36
+ @img = IiifS3::ImageVariant.new(data, config, 100)
37
37
  end
38
-
38
+
39
39
  it "has a uri" do
40
- expect(@img.uri).to eq("#{@img.generate_image_id(1,1)}/full/83,/0/default.jpg")
41
- end
40
+ expect(@img.uri).to eq("#{@img.generate_image_id(1,1)}/full/100,/0/default.jpg")
41
+ end
42
42
  it "has an id" do
43
43
  expect(@img.id).to eq("#{@img.generate_image_id(1,1)}")
44
- end
44
+ end
45
45
  it "has a width" do
46
- expect(@img.width).to eq(83)
47
- end
48
- it "has a height" do
49
- expect(@img.height).to eq(100)
50
- end
46
+ expect(@img.width).to eq(100)
47
+ end
51
48
  it "has a mime type" do
52
- expect(@img.mime_type).to eq("image/jpeg")
49
+ expect(@img.mime_type).to eq("image/jpeg")
53
50
  end
54
51
  end
55
52
 
@@ -68,4 +65,4 @@ describe IiifS3::ImageVariant do
68
65
  end
69
66
 
70
67
  end
71
- end
68
+ end
data/wax_iiif.gemspec CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "wax_iiif"
7
- spec.version = "0.0.1"
7
+ spec.version = "0.0.2"
8
8
  spec.authors = ["Marii Nyrop", "David Newbury"]
9
9
  spec.email = ["m.nyrop@columbia.edu"]
10
10
  spec.summary = "Minimal iiif level 0 generator – i.e. David Newbury's iiif_s3 minus s3."
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wax_iiif
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marii Nyrop
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-03-13 00:00:00.000000000 Z
12
+ date: 2018-04-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler