Class: RoadForest::Model

Inherits:
Object
  • Object
show all
Defined in:
lib/roadforest/model.rb

Direct Known Subclasses

BlobModel, RDFModel

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(route_name, params, services) ⇒ Model

Returns a new instance of Model.



11
12
13
14
15
16
17
# File 'lib/roadforest/model.rb', line 11

def initialize(route_name, params, services)
  @route_name = route_name
  @params = params
  @services = services
  @data = nil
  @response_values = {}
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



18
19
20
# File 'lib/roadforest/model.rb', line 18

def data
  @data
end

#paramsObject (readonly)

Returns the value of attribute params.



18
19
20
# File 'lib/roadforest/model.rb', line 18

def params
  @params
end

#response_valuesObject (readonly)

Returns the value of attribute response_values.



19
20
21
# File 'lib/roadforest/model.rb', line 19

def response_values
  @response_values
end

#route_nameObject (readonly)

Returns the value of attribute route_name.



18
19
20
# File 'lib/roadforest/model.rb', line 18

def route_name
  @route_name
end

#servicesObject (readonly)

Returns the value of attribute services.



18
19
20
# File 'lib/roadforest/model.rb', line 18

def services
  @services
end

Instance Method Details

#add_child(results) ⇒ Object

Raises:

  • (NotImplementedError)


123
124
125
# File 'lib/roadforest/model.rb', line 123

def add_child(results)
  raise NotImplementedError
end

#authentication_challengeObject



48
49
50
# File 'lib/roadforest/model.rb', line 48

def authentication_challenge
  services.authz.challenge(:realm => "Roadforest")
end

#authorization(method, header) ⇒ Object



39
40
41
42
43
44
45
46
# File 'lib/roadforest/model.rb', line 39

def authorization(method, header)
  required = required_grants(method)
  if required.empty?
    :public
  else
    services.authz.authorization(header, required_grants(method))
  end
end

#canonical_hostObject



52
53
54
# File 'lib/roadforest/model.rb', line 52

def canonical_host
  services.canonical_host
end

#canonical_uriObject



56
57
58
# File 'lib/roadforest/model.rb', line 56

def canonical_uri
  url_for(route_name, params)
end

#deleteObject



132
133
134
# File 'lib/roadforest/model.rb', line 132

def delete
  false
end

#etagObject



79
80
81
# File 'lib/roadforest/model.rb', line 79

def etag
  nil
end

#exists?Boolean

Returns:

  • (Boolean)


75
76
77
# File 'lib/roadforest/model.rb', line 75

def exists?
  !data.nil?
end

#expiresObject



115
116
117
# File 'lib/roadforest/model.rb', line 115

def expires
  nil
end

#last_modifiedObject



83
84
85
# File 'lib/roadforest/model.rb', line 83

def last_modified
  nil
end

#model_for(route_name = nil, params = nil) ⇒ Object



29
30
31
# File 'lib/roadforest/model.rb', line 29

def model_for(route_name = nil, params = nil)
  services.router.model_for(route_name, params || self.params)
end

#my_pathObject



64
65
66
# File 'lib/roadforest/model.rb', line 64

def my_path
  path_for(route_name, params)
end

#my_urlObject



68
69
70
# File 'lib/roadforest/model.rb', line 68

def my_url
  canonical_uri.to_s
end

#path_for(route_name = nil, params = nil) ⇒ Object



21
22
23
# File 'lib/roadforest/model.rb', line 21

def path_for(route_name = nil, params = nil)
  services.router.path_for(route_name, params || self.params)
end

#processedObject



107
108
109
110
111
112
113
# File 'lib/roadforest/model.rb', line 107

def processed
  [:location, :data].each do |key|
    unless @response_values.has_key?(key)
      @response_values[key] = nil
    end
  end
end

#required_grants(method) ⇒ Object



33
34
35
36
37
# File 'lib/roadforest/model.rb', line 33

def required_grants(method)
  services.authz.build_grants do |grants|
    grants.add(:admin)
  end
end

#resetObject



72
73
# File 'lib/roadforest/model.rb', line 72

def reset
end

#response_dataObject



97
98
99
100
101
# File 'lib/roadforest/model.rb', line 97

def response_data
  @response_values.fetch(:data) do
    raise ProcessingSequenceError, "Location not available until request processed"
  end
end

#response_data=(data) ⇒ Object



103
104
105
# File 'lib/roadforest/model.rb', line 103

def response_data=(data)
  @response_values[:data] = data
end

#response_locationObject



87
88
89
90
91
# File 'lib/roadforest/model.rb', line 87

def response_location
  @response_values.fetch(:location) do
    raise ProcessingSequenceError, "Location not available until request processed"
  end
end

#response_location=(location) ⇒ Object



93
94
95
# File 'lib/roadforest/model.rb', line 93

def response_location=(location)
  @response_values[:location] = location
end

#retrieveObject Also known as: retreive

Raises:

  • (NotImplementedError)


127
128
129
# File 'lib/roadforest/model.rb', line 127

def retrieve
  raise NotImplementedError
end

#type_handlingObject



60
61
62
# File 'lib/roadforest/model.rb', line 60

def type_handling
  services.type_handling
end

#update(data) ⇒ Object

Raises:

  • (NotImplementedError)


119
120
121
# File 'lib/roadforest/model.rb', line 119

def update(data)
  raise NotImplementedError
end

#url_for(route_name, params = nil) ⇒ Object



25
26
27
# File 'lib/roadforest/model.rb', line 25

def url_for(route_name, params = nil)
  Addressable::URI.parse(canonical_host.to_s).join(path_for(route_name, params))
end