-
Notifications
You must be signed in to change notification settings - Fork 7
/
federation.rb
69 lines (52 loc) · 1.63 KB
/
federation.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
require File.join(File.dirname(__FILE__), "transport")
require File.join(File.dirname(__FILE__), "proxy", "statements")
require File.join(File.dirname(__FILE__), "proxy", "query")
require File.join(File.dirname(__FILE__), "proxy", "geo")
module AllegroGraph
class Federation
attr_reader :server
attr_accessor :name
attr_accessor :repository_names
attr_accessor :repository_urls
attr_reader :statements
attr_reader :query
attr_reader :geo
def initialize(server, name, options = { })
@server, @name = server, name
@repository_names = options[:repository_names]
@repository_urls = options[:repository_urls]
@statements = Proxy::Statements.new self
@query = Proxy::Query.new self
@geo = Proxy::Geo.new self
end
def ==(other)
other.is_a?(self.class) && @server == other.server && @name == other.name
end
def path
"/federated/#{@name}"
end
def request(http_method, path, options = { })
@server.request http_method, path, options
end
def exists?
@server.federations.include? self
end
def create!
parameters = { }
parameters.merge! :repo => @repository_names if @repository_names
parameters.merge! :url => @repository_urls if @repository_urls
@server.request :put, self.path, :parameters => parameters, :expected_status_code => 204
true
end
def create_if_missing!
create! unless exists?
end
def delete!
@server.request :delete, self.path, :expected_status_code => 204
true
end
def delete_if_exists!
delete! if exists?
end
end
end