class Piwigo::Images

Public Class Methods

getImages(session, album_id: nil, recursive: nil, per_page: 100, page: 0, order: nil, logger: nil) click to toggle source

Returns elements for the corresponding categories. order comma separated fields for sorting

@param [Session] session @param [Number] album_id - Can be empty if recursive is true. @param [Boolean] recursive - Include images from child albums @param [Number] per_page - Number of items to include per page @param [Number] page - Page to retrieve @param [String] order - One or more of id, file, name, hit, rating_score, date_creation, date_available or random @param [Logger] logger logger to output debug messages to (Optional)

@return [Hash] <description>

# File lib/piwigo/images.rb, line 96
def self.getImages(session, album_id: nil, recursive: nil, per_page: 100, page: 0, order: nil, logger: nil)
  raise 'Invalid session' if session.uri.nil?

  logger ||= Logger.new(STDOUT)

  begin
    http = Net::HTTP.new(session.uri.host, session.uri.port)
    request = Net::HTTP::Post.new(session.uri.request_uri)
    form = {
      method: 'pwg.categories.getImages'
    }
    form[:cat_id] = album_id unless album_id.nil?
    form[:recursive] = recursive unless recursive.nil?
    form[:per_page] = per_page unless per_page.nil?
    form[:order] = order unless order.nil?
    form[:page] = page unless page.nil?
    request.set_form_data(form)
    request['Cookie'] = [session.id]

    # Send the request
    response = http.request(request)
    if response.code == '200'
      data = JSON.parse(response.body)
      paging = Paging.new hash: data['result']['paging']
      images = data['result']['images'].map { |hash| Image.new(hash: hash) }
      logger.info "Image List succeeded: #{images.size} images retrieved."
      { paging: paging, images: images }
    end
  rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e
    logger.error "Image List failed: #{e.message}"
    nil
  end
end
lookup(session, file, logger: nil) click to toggle source

Checks existence of images

@param [Session] session @param [String] file to check @param [Logger] logger

@return [Number] Piwigo image_id if matched, nil if not present

# File lib/piwigo/images.rb, line 148
def self.lookup(session, file, logger: nil)
  raise 'Invalid session' if session.uri.nil?

  logger ||= Logger.new(STDOUT)
  image_content = File.binread(file)
  file_sum = Digest::MD5.hexdigest(image_content)

  begin
    http = Net::HTTP.new(session.uri.host, session.uri.port)
    request = Net::HTTP::Post.new(session.uri.request_uri)
    form = {
      method: 'pwg.images.exist',
      md5sum_list: file_sum,
      filename_list: file
    }
    request.set_form_data(form)
    request['Cookie'] = [session.id]

    # Send the request
    response = http.request(request)
    if response.code == '200'
      data = JSON.parse(response.body)
      logger.info "Image lookup succeeded: #{data['result']}"
      data['result'][file_sum]
    end
  rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e
    logger.error "Image lookup failed: #{e.message}"
    nil
  end
end
upload(session, file, name) click to toggle source

Add a photo to Piwigo

@param [<Type>] session @param [<Type>] filename of the file to upload @param [<Type>] name of the image

@return [Boolean] True if successful

# File lib/piwigo/images.rb, line 137
def self.upload(session, file, name)
  ImageUploader.new(session, file, name).upload
end