Sha256: 77c1a81c87cc4fa95256adf6d9de91228ffbc51414af9c0e3f7e829c4ad92531

Contents?: true

Size: 928 Bytes

Versions: 4

Compression:

Stored size: 928 Bytes

Contents

require 'open-uri'
require 'json'
require 'date'

module Daigaku
  module GithubClient

    # Returns the url to the master zip file of the Github repo.
    def self.master_zip_url(user_and_repo)
      "https://github.com/#{user_and_repo}/archive/master.zip"
    end

    # Returns the timestamp of updated_at for the repo from the Github API.
    def self.updated_at(user_and_repo)
      url = "https://api.github.com/repos/#{user_and_repo}"
      JSON.parse(open(url).read)['updated_at']
    end

    # Returns whether the pushed_at time from Github API is newer than the
    # stored one.
    def self.updated?(user_and_repo)
      return false unless user_and_repo

      course = Course.new(user_and_repo.split('/').last)
      stored_time = QuickStore.store.get(course.key(:updated_at))
      current_time = self.updated_at(user_and_repo)
      DateTime.parse(stored_time) < DateTime.parse(current_time)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
daigaku-0.3.0 lib/daigaku/github_client.rb
daigaku-0.2.0 lib/daigaku/github_client.rb
daigaku-0.1.1 lib/daigaku/github_client.rb
daigaku-0.1.0 lib/daigaku/github_client.rb