class API42::Client

Attributes

token[RW]

Public Class Methods

new(token=nil) click to toggle source
# File lib/API42/client.rb, line 8
def initialize token=nil
  @host = RestClient::Resource.new('https://api.intrav2.42.fr')
  @token = token ||  ENV.fetch('API_42_KEY')
end

Public Instance Methods

cursus(options = {}) click to toggle source
# File lib/API42/client.rb, line 13
def cursus(options = {})
  cursus = @host['cursus']
  id = cursus[options[:id]]
  get id[options[:resource]]
end
groups(id = nil) click to toggle source
# File lib/API42/client.rb, line 19
def groups(id = nil)
  groups = @host['groups']
  get groups[id.to_s]
end
projects(options = {}) click to toggle source
# File lib/API42/client.rb, line 24
def projects(options = {})
  project = @host['projects']
  slug = project[(options[:slug] || options[:id]).to_s]
  get slug[options[:resource]]
end
scale_team(id) click to toggle source
# File lib/API42/client.rb, line 46
def scale_team id
  scale = @host['scale_teams']
  get scale[id.to_S]
end
team(id) click to toggle source
# File lib/API42/client.rb, line 30
def team id
  teams = @host['teams']
  get teams[id.to_s]
end
topic(id) click to toggle source
# File lib/API42/client.rb, line 41
def topic id
  topics = @host['topics']
  get topics[id.to_s]
end
user(login, options = {}) click to toggle source
# File lib/API42/client.rb, line 35
def user(login, options = {})
  users = @host['users']
  login = users[login]
  get login[options[:resource]]
end

Private Instance Methods

get(resource, params = {}) click to toggle source
# File lib/API42/client.rb, line 53
def get(resource, params = {})
  res = resource.get(params: {token: @token}, accept: 'application/json')
  parse_response res
rescue RestClient::ExceptionWithResponse => err
  err.response
end
http_error(code) click to toggle source
# File lib/API42/client.rb, line 75
def http_error code
  "HTTP Error code: #{res.code}."
end
parse_body(body) click to toggle source
# File lib/API42/client.rb, line 69
def parse_body body
  JSON.parse body
rescue
  raise JsonError, 'Bad content returned by server. Check your params.'
end
parse_response(res) click to toggle source
# File lib/API42/client.rb, line 60
def parse_response res
  case res.code
  when *[200..226]
    parse_body res.body
  else
    raise ServerError, http_error(res.code)
  end
end