module Contentful::Management::Resource::Publisher

Wrapper for Resources with /published API

Public Instance Methods

publish() click to toggle source

Publishes a resource.

@return [Contentful::Management::Resource]

# File lib/contentful/management/resource/publisher.rb, line 9
def publish
  ResourceRequester.new(client, self.class).publish(
    self,
    {
      space_id: space.id,
      environment_id: environment_id,
      resource_id: id,
      suffix: '/published'
    },
    version: sys[:version]
  )
end
published?() click to toggle source

Checks if a resource is published.

@return [Boolean]

# File lib/contentful/management/resource/publisher.rb, line 41
def published?
  sys[:publishedAt] ? true : false
end
unpublish() click to toggle source

Unpublishes a resource.

@return [Contentful::Management::Resource]

# File lib/contentful/management/resource/publisher.rb, line 25
def unpublish
  ResourceRequester.new(client, self.class).unpublish(
    self,
    {
      space_id: space.id,
      environment_id: environment_id,
      resource_id: id,
      suffix: '/published'
    },
    version: sys[:version]
  )
end
updated?() click to toggle source

Checks if a resource has been updated since last publish. Returns false if resource has not been published before.

@return [Boolean]

# File lib/contentful/management/resource/publisher.rb, line 49
def updated?
  return false unless sys[:publishedAt]

  sanitize_date(sys[:publishedAt]) < sanitize_date(sys[:updatedAt])
end

Private Instance Methods

sanitize_date(date) click to toggle source

In order to have a more accurate comparison due to minimal delays upon publishing entries. We strip milliseconds from the dates we compare.

@param date [::DateTime] @return [::Time] without milliseconds.

# File lib/contentful/management/resource/publisher.rb, line 62
def sanitize_date(date)
  time = date.to_time

  ::Time.new(time.year, time.month, time.day, time.hour, time.min, time.sec, time.utc_offset)
end