module Filepreviews

@author Jonah Ruiz <jonah@pixelhipsters.com> Main module for FilePreviews.io library

@author Jonah Ruiz <jonah@pixelhipsters.com> Contains the version namespaced

Constants

VERSION

Public Class Methods

generate(url, options = {}) click to toggle source

Facade method to call API response @param url [String] image url to convert @param options [Hash<Symbol>] :metada and :image options @return [Filepreviews::Response] api response object

# File lib/filepreviews.rb, line 20
def self.generate(url, options = {})
  request_hash = prepare_options(url, options)
  Filepreviews::HTTP.fetch(request_hash)
end

Protected Class Methods

default_options() click to toggle source

Default options to be used in API request @return [Hash<symbol>] default options

# File lib/filepreviews.rb, line 40
def self.default_options
  { debug: false, pages: '1' }
end
image_formats() click to toggle source

Supported extracted (image) thumbnail formats @return [Array] thumbnail image file extensions

# File lib/filepreviews.rb, line 70
def self.image_formats
  %w(jpg jpeg png)
end
merge_options(options) click to toggle source

Merges metadata options with supported formats @param options [Hash<symbol>] metadata and optional size

# File lib/filepreviews.rb, line 46
def self.merge_options(options)
  options.delete(:metadata) if options[:metadata] && options[:metadata].empty?

  if metadata_formats.include?(options[:metadata])
    options.store(:metadata, options[:metadata])
  end

  image = (options.fetch(:format) if image_formats.include?(options[:format]))
  options.store(:format, image)

  pages = (options.fetch(:pages, '1'))
  options.store(:pages, validate_pages(pages))

  default_options.merge(options)
end
metadata_formats() click to toggle source

Supported (image) formats in metadata @return [Array] image file extensions

# File lib/filepreviews.rb, line 64
def self.metadata_formats
  %w(exif ocr psd checksum multimedia)
end
prepare_options(url, params) click to toggle source

Prepares url and parameters for request

it calls defaults if nothing is provided

@param url [String] url @param params [Hash<symbol>] options @return [OpenStruct] all options as methods

# File lib/filepreviews.rb, line 32
def self.prepare_options(url, params)
  params = merge_options(params.fetch(:options) { default_options })
  params.merge!(url: url)
  OpenStruct.new(params)
end