class Bazil::Client

Public Class Methods

new(options={}) click to toggle source
# File lib/bazil/client.rb, line 124
def initialize(options={})
  opt = Options.new(options)
  http = Net::HTTP.new(opt.host, opt.port)
  set_ssl_options(http,opt)

  @http_cli = REST.new(http, api_root: opt.api_root)
  set_api_keys(opt.api_key, opt.secret_key)
end

Public Instance Methods

api_version() click to toggle source

TODO: make this changable

# File lib/bazil/client.rb, line 189
def api_version
  'v2'
end
create_config(model_id, config) click to toggle source
# File lib/bazil/client.rb, line 164
def create_config(model_id, config)
  data = config.to_json
  res, body = @http_cli.post(gen_uri("models/#{model_id}/configs"), data, {'Content-Type' => 'application/json; charset=UTF-8', 'Content-Length' => data.length.to_s})
  raise_error("Failed to create new configuration", res) unless res.code =~ /2[0-9][0-9]/ # TODO: return detailed error information
  js = JSON.parse(res.body)
  Model.new(self, model_id, js['config_id'].to_i)
end
create_model(config) click to toggle source
# File lib/bazil/client.rb, line 150
def create_model(config)
  data = config.to_json
  res, body = @http_cli.post(gen_uri('models'), data, {'Content-Type' => 'application/json; charset=UTF-8', 'Content-Length' => data.length.to_s})
  raise_error("Failed to create model", res) unless res.code =~ /2[0-9][0-9]/ # TODO: return detailed error information
  js = JSON.parse(res.body)
  Model.new(self, js['model_id'].to_i, js['config_id'].to_i)
end
delete_config(model_id, config_id) click to toggle source
# File lib/bazil/client.rb, line 172
def delete_config(model_id, config_id)
  res, body = @http_cli.delete(gen_uri("models/#{model_id}/configs/#{config_id}"))
  raise_error("Failed to delete configuration", res) unless res.code =~ /2[0-9][0-9]/ # TODO: return detailed error information
  JSON.parse(res.body)
end
delete_model(model_id) click to toggle source
# File lib/bazil/client.rb, line 158
def delete_model(model_id)
  res, body = @http_cli.delete(gen_uri("models/#{model_id}"))
  raise_error("Failed to delete model", res) unless res.code =~ /2[0-9][0-9]/ # TODO: return detailed error information
  JSON.parse(res.body)
end
http_client() click to toggle source
# File lib/bazil/client.rb, line 184
def http_client
  @http_cli
end
model(model_id, config_id) click to toggle source
# File lib/bazil/client.rb, line 178
def model(model_id, config_id)
  model = Model.new(self, model_id, config_id)
  model.status
  model
end
models(options = {}) click to toggle source
# File lib/bazil/client.rb, line 135
def models(options = {})
  queries = {}
  queries[:tag_id] = options[:tag_id].to_i if options.has_key? :tag_id
  queries[:page] = options[:page].to_i if options.has_key? :page
  queries[:per_page] = options[:per_page].to_i if options.has_key? :per_page

  res, body = @http_cli.get(gen_uri("models",queries))
  raise_error("Failed to get models", res) unless res.code =~ /2[0-9][0-9]/
  JSON.parse(res.body)["models"].map{|model|
    model["config_ids"].map{|config_id|
      Model.new(self, model["id"].to_i, config_id.to_i)
    }
  }.flatten
end
set_ssl_options(http, options) click to toggle source
# File lib/bazil/client.rb, line 117
def set_ssl_options(http, options)
  http.use_ssl = options.scheme == 'https'
  http.ca_file = options.ca_file
  http.ssl_version = options.ssl_version
  http.verify_mode = options.verify_mode
end

Private Instance Methods

gen_uri(path, queries = {}) click to toggle source
# File lib/bazil/client.rb, line 195
def gen_uri(path, queries = {})
  if queries.empty?
    "/#{api_version}/#{path}"
  else
    "/#{api_version}/#{path}?#{queries.map{|k,v| "#{k}=#{v}"}.join('&')}"
  end
end
raise_error(message, res) click to toggle source
# File lib/bazil/client.rb, line 203
def raise_error(message, res)
  raise APIError.new(message, res.code, JSON.parse(res.body))
end