router_constraints.rb revision 80021fb6bde14c39046950cdbaaadf767d173f94
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen params = request.send(:env)["action_dispatch.request.path_parameters"]
f16c114c20bbd7d292d93415d1e56c8dd6abd3e7Timo Sirainen return false if Repository.find_by_path(request.params[:repository_id]).nil?
f16c114c20bbd7d292d93415d1e56c8dd6abd3e7Timo Sirainen set_params_path_without_format(request) if result
f16c114c20bbd7d292d93415d1e56c8dd6abd3e7Timo Sirainen @params = request.send(:env)["action_dispatch.request.path_parameters"]
f16c114c20bbd7d292d93415d1e56c8dd6abd3e7Timo Sirainen @path += ".#{@params[:format]}" if @params[:format]
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen @params.merge({ path: @path }).except(:format)
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen @params.merge!({ path: @path }).except!(:format)
8fcff4c5b52f24d9c681805fdf06b486f1d0fcbeTimo Sirainen # retrieves the hierarchy and member portions of loc/id's
9aa52288a4b53186d81b0ec9afa7d9e0a8ee8753Timo Sirainen hierarchy_member = path.split('?', 2).first.split('///', 2).first
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen element = @find_in_klass.find_with_locid(hierarchy_member)
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen ontology = element.respond_to?(:ontology) ? element.ontology : element
8fcff4c5b52f24d9c681805fdf06b486f1d0fcbeTimo Sirainen path_params = {repository_id: ontology.repository.to_param}
8fcff4c5b52f24d9c681805fdf06b486f1d0fcbeTimo Sirainen path_params[@map[:ontology]] = ontology.id if @map[:ontology]
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen path_params[@map[:element]] = element.id if @map[:element]
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen ontology = Ontology.find_with_locid(path.split('?', 2).first)
1d2b188f0eedc3cab6e27ceac5425a037f38042eTimo Sirainen repository_id: ontology.repository.to_param, id: ontology.id)
ca98892a6b8a30ffc1fe26fcf02c7d59e3204e7eTimo Sirainenclass RefIRIRouterConstraint < IRIRouterConstraint
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen # remove the ref/:version_number portion from path
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen path = request.original_fullpath.sub(%r{\A/ref/\d+}, '')
02b79f9c2636da1829eee5b92753602bba8b67edTimo Sirainen self.mime_types = mime_types.flatten.map { |m| Mime::Type.lookup(m) }
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen # In some cases request.accepts == [nil] (e.g. cucumber tests),
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen highest_mime ? mime_types.any? { |m| highest_mime == m } : true