MikeRogers0/MikeRogersIO

View on GitHub
lib/video.rb

Summary

Maintainability
A
0 mins
Test Coverage
require "yaml"

class Video
  def initialize(title:, youtube_id:, description:, published_at:)
    @title = title
    @youtube_id = youtube_id
    @description = description
    @published_at = published_at
  end

  def save
    # Don't override existing files as I'd like to add code snippets to new code
    return if File.exist?(file_path)

    File.open(file_path, (File::CREAT | File::TRUNC | File::WRONLY)) do |file|
      file.write(YAML.dump({
        "layout" => "video",
        "title" => @title,
        "youtube_id" => @youtube_id,
        "published_at" => @published_at.iso8601
      }))
      file.write("---\n")
      file.write(@description)
    end
  end

  private

  def slug
    @title.parameterize
  end

  def date
    @published_at.to_date
  end

  def file_path
    @file_path ||= File.join(File.dirname(__FILE__), "../src/_videos/", "#{date}-#{slug}.md")
  end
end