class ET::API
Attributes
host[R]
token[R]
username[R]
Public Class Methods
new(options)
click to toggle source
# File lib/et/api.rb, line 11 def initialize(options) @host = options[:host] @username = options[:username] @token = options[:token] end
Public Instance Methods
download_file(url)
click to toggle source
# File lib/et/api.rb, line 33 def download_file(url) response = nil dest = random_filename download_client(url).open do |client| response = client.get(URI(url).path) end if response.status == 200 open(dest, 'wb') do |file| file.write(response.body) end dest else nil end end
get_lesson(slug)
click to toggle source
# File lib/et/api.rb, line 25 def get_lesson(slug) resp = nil api_client.open do |client| resp = client.get(lesson_url(slug), :submittable => 1) end resp.body['lesson'] end
list_lessons()
click to toggle source
# File lib/et/api.rb, line 17 def list_lessons response = nil api_client.open do |client| response = client.get('/lessons.json', :submittable => 1) end response.body['lessons'] end
submit_lesson(lesson)
click to toggle source
# File lib/et/api.rb, line 50 def submit_lesson(lesson) submission_file = lesson.archive! io = Faraday::UploadIO.new(submission_file, "application/x-tar") resp = nil api_client.open do |client| resp = client.post(submission_url(lesson.slug), "submission" => { "archive" => io}) end resp end
Private Instance Methods
api_client()
click to toggle source
# File lib/et/api.rb, line 74 def api_client @api_client ||= ET::FallbackConnection.new(:url => @host) do |client| client.request :multipart client.request :url_encoded client.request :basic_auth, username, token client.response :json, :content_type => /\bjson$/ client.adapter Faraday.default_adapter end end
download_client(url)
click to toggle source
# File lib/et/api.rb, line 87 def download_client(url) uri = URI(url) scheme_and_host = [uri.scheme, uri.host].join('://') ET::FallbackConnection.new(:url => scheme_and_host) do |client| client.adapter Faraday.default_adapter end end
lesson_url(slug)
click to toggle source
# File lib/et/api.rb, line 62 def lesson_url(slug) "/lessons/#{slug}.json" end
random_filename()
click to toggle source
# File lib/et/api.rb, line 70 def random_filename File.join(Dir.mktmpdir, SecureRandom.hex) end
submission_url(slug)
click to toggle source
# File lib/et/api.rb, line 66 def submission_url(slug) "/lessons/#{slug}/submissions.json" end