47 lines
773 B
Ruby
47 lines
773 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
|