class CkanClient::Client
Public Class Methods
new(url, key)
click to toggle source
# File lib/ckanclient/ckanclient.rb, line 8 def initialize(url, key) raise ArgumentError, "No URL provided" unless !url.nil? raise ArgumentError, "No API KEY provided" unless !key.nil? # remove trailig slashes @url = url.sub(/(\/)+$/,"") @key = key @headers = {} @headers[:Authorization] = @key end
Public Instance Methods
create_or_update_package(params = {}, resolve_delta = false, &block)
click to toggle source
# File lib/ckanclient/ckanclient.rb, line 99 def create_or_update_package(params = {}, resolve_delta = false, &block) if params["id"].nil? create_package(params, &block) else update_package(params["id"], params, resolve_delta, &block) end end
create_or_update_resource(params = {}, file = nil, resolve_delta = false, &block)
click to toggle source
# File lib/ckanclient/ckanclient.rb, line 57 def create_or_update_resource(params = {}, file = nil, resolve_delta = false, &block) if params["id"].nil? create_resource(params, file, &block) else update_resource(params["id"], params, file, resolve_delta, &block) end end
create_package(params = {}, &block)
click to toggle source
# File lib/ckanclient/ckanclient.rb, line 80 def create_package(params = {}, &block) post("package_create", params, nil, &block) end
create_resource(params = {}, file = nil, &block)
click to toggle source
# File lib/ckanclient/ckanclient.rb, line 34 def create_resource(params = {}, file = nil, &block) if params["name"].nil? && !file.nil? params["name"] = File.basename(file.path) end post("resource_create", params, file, &block) end
get_package(id, params = {}, &block)
click to toggle source
# File lib/ckanclient/ckanclient.rb, line 65 def get_package(id, params = {}, &block) raise ArgumentError, "No ID provided for package" unless !id.nil? result = nil params["id"] = id post("package_show", params, nil){ |response, status_ok| if status_ok result = JSON.parse(response.body)["result"] end } return result end
get_resource(id, params = {}, &block)
click to toggle source
# File lib/ckanclient/ckanclient.rb, line 19 def get_resource(id, params = {}, &block) raise ArgumentError, "No ID provided for resource" unless !id.nil? result = nil params["id"] = id post("resource_show", params, nil){ |response, status_ok| if status_ok result = JSON.parse(response.body)["result"] end } return result end
update_package(id, params = {}, resolve_delta = false, &block)
click to toggle source
# File lib/ckanclient/ckanclient.rb, line 84 def update_package(id, params = {}, resolve_delta = false, &block) raise ArgumentError, "No ID provided for package update" unless !id.nil? params["id"] = id if resolve_delta metadata = get_package(id) if !metadata.nil? params = metadata.merge(params) end end post("package_update", params, nil, &block) end
update_resource(id, params = {}, file = nil, resolve_delta = false, &block)
click to toggle source
# File lib/ckanclient/ckanclient.rb, line 42 def update_resource(id, params = {}, file = nil, resolve_delta = false, &block) raise ArgumentError, "No ID provided for resource update" unless !id.nil? params["id"] = id if resolve_delta metadata = get_resource(id) if !metadata.nil? params = metadata.merge(params) end end post("resource_update", params, file, &block) end
Private Instance Methods
post(action, params = {}, file = nil, &block)
click to toggle source
# File lib/ckanclient/ckanclient.rb, line 108 def post(action, params = {}, file = nil, &block) raise ArgumentError, "No action provided" unless !action.nil? payload = {} if !file.nil? payload[:upload] = file end payload = payload.merge(params) if file.nil? payload = payload.to_json @headers[:content_type] = :json else @headers.delete(:content_type) end RestClient.post("#{@url}/action/#{action}", payload, @headers){ |response, request, result| block.call(response, response.code == 200) } end