class Socialfred::Publications

Constants

ENDPOINT

Attributes

api_key[R]
api_url[R]

Public Class Methods

new(api_key, api_url:) click to toggle source
# File lib/socialfred/publications.rb, line 12
def initialize(api_key, api_url:)
  @api_key = api_key
  @api_url = api_url
end

Public Instance Methods

all(page: 1, per_page: 10) click to toggle source
# File lib/socialfred/publications.rb, line 17
def all(page: 1, per_page: 10)
  response = requester.get(ENDPOINT, page: page, per_page: per_page)

  raise Socialfred::Error, response.body unless response.status == 200

  JSON.parse(response.body)
end
create(publish_at: nil, text:, images: nil, options: nil) click to toggle source
# File lib/socialfred/publications.rb, line 33
def create(publish_at: nil, text:, images: nil, options: nil)
  check_images(images) if images

  publish_at = Time.parse(publish_at.to_s).iso8601 if publish_at
  parameters = { publication: { published_at: publish_at, text: text, images: images, options: options }.compact }
  response = requester.post(ENDPOINT, parameters)

  raise Socialfred::Error, response.body unless response.status == 200

  JSON.parse(response.body)
end
destroy(publication_id) click to toggle source
# File lib/socialfred/publications.rb, line 57
def destroy(publication_id)
  response = requester.delete(ENDPOINT + "/#{publication_id}")

  raise Socialfred::Error, response.body unless response.status == 200

  JSON.parse(response.body)
end
find(publication_id) click to toggle source
# File lib/socialfred/publications.rb, line 25
def find(publication_id)
  response = requester.get(ENDPOINT + "/#{publication_id}")

  raise Socialfred::Error, response.body unless response.status == 200

  JSON.parse(response.body)
end
update(publication_id, publish_at: nil, text: nil, images: nil, options: nil) click to toggle source
# File lib/socialfred/publications.rb, line 45
def update(publication_id, publish_at: nil, text: nil, images: nil, options: nil)
  check_images(images) if images

  publish_at = Time.parse(publish_at.to_s).iso8601 if publish_at
  parameters = { publication: { published_at: publish_at, text: text, images: images, options: options }.compact }
  response = requester.put(ENDPOINT + "/#{publication_id}", parameters)

  raise Socialfred::Error, response.body unless response.status == 200

  JSON.parse(response.body)
end

Private Instance Methods

check_images(images) click to toggle source
# File lib/socialfred/publications.rb, line 67
def check_images(images)
  raise(Socialfred::Error, 'images must be array') unless images.is_a?(Array)
  return if images.all? { |image| image.key?(:data) && image.key?(:filename) && image.key?(:content_type) }

  raise(
    Socialfred::Error,
    'images must contain the following attributes: data (base64 encoded image), filename and content_type'
  )
end
requester() click to toggle source
# File lib/socialfred/publications.rb, line 77
def requester
  @requester ||= Requester.new(api_key, api_url)
end