mirror of
https://github.com/discourse/discourse.git
synced 2024-11-27 10:33:38 +08:00
47 lines
774 B
Ruby
47 lines
774 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module Onebox
|
||
|
class Movie
|
||
|
def initialize(json_ld_data)
|
||
|
@json_ld_data = json_ld_data
|
||
|
end
|
||
|
|
||
|
def name
|
||
|
@json_ld_data["name"]
|
||
|
end
|
||
|
|
||
|
def image
|
||
|
@json_ld_data["image"]
|
||
|
end
|
||
|
|
||
|
def description
|
||
|
@json_ld_data["description"]
|
||
|
end
|
||
|
|
||
|
def rating
|
||
|
@json_ld_data.dig("aggregateRating", "ratingValue")
|
||
|
end
|
||
|
|
||
|
def genres
|
||
|
@json_ld_data["genre"]
|
||
|
end
|
||
|
|
||
|
def duration
|
||
|
return nil unless @json_ld_data["duration"]
|
||
|
|
||
|
Time.parse(@json_ld_data["duration"]).strftime "%H:%M"
|
||
|
end
|
||
|
|
||
|
def to_h
|
||
|
{
|
||
|
name: name,
|
||
|
image: image,
|
||
|
description: description,
|
||
|
rating: rating,
|
||
|
genres: genres,
|
||
|
duration: duration,
|
||
|
}
|
||
|
end
|
||
|
end
|
||
|
end
|