Permalink
Browse files

Remove unnecessary comments. Stub out method that loads up video list

  • Loading branch information...
edgenard committed May 12, 2018
1 parent 3781117 commit 5a1e53792e0ad95b14350e24a043d1d36696349b
@@ -1,50 +1,37 @@
class VideoService
def video_list
# NOTE: External service/Maybe
video_list_json = File.read('videos.json')
# Read a json file and store the contents in an instance variable
@video_list = JSON.parse(video_list_json)
# Get all the ids of the stored in the contents and JSON file that was just
@video_list = get_current_video_list

This comment has been minimized.

@medwards1771

medwards1771 May 15, 2018

Collaborator

I wonder why @video_list is an instance variable?

ids = @video_list.map{|v| v['youtubeID']}
# Get authorized with Google to be allowed to make API calls
# NOTE: External Service
client = GoogleAuthorizer.new(
token_key: 'api-youtube',
application_name: 'Gateway Youtube Example',
application_version: '0.1'
).api_client
# Not sure what this does, but I think its a way to tell youtube what I'm asking for
# NOTE: External Service
youtube = client.discovered_api('youtube', 'v3')
# Send the request to Youtube passing in the ids of the videos from out Json file and telling which
# data we want from youtube. We want a video snippet, contentDetails(probably a description)
# and statistics about the video
request = {
api_method: youtube.videos.list,# NOTE: External Service # This looks like there are many api_methods and the one
# we are asking for is the one that returns a list of videos.
api_method: youtube.videos.list,# NOTE: External Service
parameters: {
id: ids.join(","),
part: 'snippet, contentDetails, statistics',
}
}
# Get the body of the response and parse it with JSON.parse to make into a Ruby hash
# NOTE: External Service
response = JSON.parse(client.execute!(request).body)
# Go through the array of ids
ids.each do |id|
# Find the video object that matches the this specific id
video = @video_list.find{|v| id == v['youtubeID']}
# Go through the items from the response and find one that matches the id
youtube_record = response['items'].find{|v| id == v['id']}
# Update the views key in the video object(the one we got from our JSON file)
# with the viewCount from the response we got from youtube.
video['views'] = youtube_record['statistics']['viewCount'].to_i
# Find out how many days the video has been live from the response from youtube
days_available = Date.today - Date.parse(youtube_record['snippet']['publishedAt'])
# Update the monthly views of the video
video['monthlyViews'] = video['views'] * 365.0 / days_available / 12
end
# return the updated video list in a JSON dump
return JSON.dump(@video_list)
end

private
def get_current_video_list
video_list_json = File.read('videos.json')
JSON.parse(video_list_json)
end
end
@@ -1,7 +1,16 @@
require 'minitest/autorun'
require './youtube_video_list'
require 'json'

class VideoServiceTest < Test::Unit::TestCase
class VideoServiceTest < MiniTest::Test

def test_video_list_returns_video_list
video_service = VideoService.new
video_array = [{'youtubeId': 'blahblahblah', 'views': 3, 'monthlyViews': 1}]
video_json = JSON.generate(video_array)
video_service.stub(:get_current_video_list, video_array) do
assert_equal(video_service.video_list, video_json)
end
end

end

0 comments on commit 5a1e537

Please sign in to comment.