simplify grabbing of a xml base doc
authorSteve Coast <steve@asklater.com>
Sat, 7 Apr 2007 12:43:48 +0000 (12:43 +0000)
committerSteve Coast <steve@asklater.com>
Sat, 7 Apr 2007 12:43:48 +0000 (12:43 +0000)
13 files changed:
app/controllers/api_controller.rb
app/controllers/application.rb
app/controllers/old_node_controller.rb
app/controllers/old_segment_controller.rb
app/controllers/segment_controller.rb
app/controllers/user_controller.rb
app/controllers/way_controller.rb
app/models/node.rb
app/models/segment.rb
app/models/user.rb
app/models/way.rb
config/routes.rb
lib/osm.rb

index 73fd9aa8ccf02165f661b26416371819e86f8dcd..bfe26f542515decaafb710d94dfae5ee76183930 100644 (file)
@@ -40,7 +40,7 @@ class ApiController < ApplicationController
     # get missing nodes if there are any
     nodes += Node.find(missing_nodes) if missing_nodes.length > 0
 
-    doc = get_xml_doc
+    doc = OSM::API.get_xml_doc
 
     # get ways
     # find which ways are needed
index 6520e027bc8b5a35b127fe9c15667d4964215235..9d4749a0ddf5c04a9a48525ae4289e4fa8de415d 100644 (file)
@@ -38,16 +38,6 @@ class ApplicationController < ActionController::Base
     end 
   end 
 
-  def get_xml_doc
-    doc = XML::Document.new
-    doc.encoding = 'UTF-8' 
-    root = XML::Node.new 'osm'
-    root['version'] = API_VERSION
-    root['generator'] = 'OpenStreetMap server'
-    doc.root = root
-    return doc
-  end
-
   # extract authorisation credentials from headers, returns user = nil if none\r
   private 
   def get_auth_data 
index 99e0b5675497a09224044bedfd6433c4b4200f26..2c0cca9bbbddc86ad573c5893575da0bd702d234 100644 (file)
@@ -9,7 +9,7 @@ class OldNodeController < ApplicationController
       return
     end
 
-    doc = get_xml_doc
+    doc = OSM::API.new.get_xml_doc
 
     node.old_nodes.each do |old_node|
       doc.root << old_node.to_xml_node
index 1971e5dcadf72a745a4ecd1a76f16a40a02c0323..a35a622f975d846575c63e80012652d8d287e849 100644 (file)
@@ -9,7 +9,7 @@ class OldSegmentController < ApplicationController
       return
     end
 
-    doc = get_xml_doc
+    doc = OSM::API.new.get_xml_doc
 
     segment.old_segments.each do |old_segment|
       doc.root << old_segment.to_xml_node
@@ -17,9 +17,4 @@ class OldSegmentController < ApplicationController
 
     render :text => doc.to_s
   end
-
-
-
-
-
 end
index 950479ad7600f39e396fec92addd9a5613ba9bf8..76cb5cebb44e6fbea5e97c64135b92282b25b108 100644 (file)
@@ -85,7 +85,7 @@ class SegmentController < ApplicationController
     ids = params['segments'].split(',').collect {|s| s.to_i }
     if ids.length > 0
       segmentlist = Segment.find(ids)
-      doc = get_xml_doc
+      doc = OSM::API.get_xml_doc
       segmentlist.each do |segment|
         doc.root << segment.to_xml_node
       end 
index 6561d46fb1ee00952be9a1094da472ba25d789fb..761468b988ddd2bada99763052e51c936e7c98d5 100644 (file)
@@ -1,7 +1,7 @@
 class UserController < ApplicationController
   layout 'site'
 
-  before_filter :authorize, :only => :preferences
+  before_filter :authorize, :only => [:preferences, :api_details]
   before_filter :authorize_web, :only => [:rename, :account, :go_public]
   before_filter :require_user, :only => [:rename, :account, :go_public]
  
@@ -125,5 +125,9 @@ class UserController < ApplicationController
       render :status => 400, :nothing => true
     end
   end
+
+  def api_details
+    render :text => @user.to_xml.to_s
+  end
 end
 
index f9fd70af41443915e680ccd9f66c8b7a3fb8c000..8daac7cc2c543487a4015bbdd7c478d9ec3fee8e 100644 (file)
@@ -90,7 +90,7 @@ class WayController < ApplicationController
     ids = params['ways'].split(',').collect {|w| w.to_i }
     if ids.length > 0
       waylist = Way.find(ids)
-      doc = get_xml_doc
+      doc = OSM::API.new.get_xml_doc
       waylist.each do |way|
         doc.root << way.to_xml_node
       end 
index 230b0f9a779582ff2c4ebf68dd73144434abd63d..0df3689e274b0b13d4a00ad12114eac2c130fe80 100644 (file)
@@ -72,13 +72,8 @@ class Node < ActiveRecord::Base
   end
 
   def to_xml
-    doc = XML::Document.new
-    doc.encoding = 'UTF-8' 
-    root = XML::Node.new 'osm'
-    root['version'] = API_VERSION
-    root['generator'] = 'OpenStreetMap server'
-    doc.root = root
-    root << to_xml_node()
+    doc = OSM::API.new.get_xml_doc
+    doc.root << to_xml_node()
     return doc
   end
 
index f4909c7d2a52ed5821de3003bc42bce6eeb5f3fb..5c3c65e34ba190fd44769e9de1be211034515610 100644 (file)
@@ -67,13 +67,8 @@ class Segment < ActiveRecord::Base
   end
 
   def to_xml
-    doc = XML::Document.new
-    doc.encoding = 'UTF-8' 
-    root = XML::Node.new 'osm'
-    root['version'] = API_VERSION
-    root['generator'] = 'OpenStreetMap server'
-    doc.root = root
-    root << to_xml_node()
+    doc = OSM::API.new.get_xml_doc
+    doc.root << to_xml_node()
     return doc
   end
 
index a8bc396153a0960f2cde1e8a4cda600777ad972d..780e0caafb8f9ca6dbae2f7c4779eae6114a3d6d 100644 (file)
@@ -1,6 +1,7 @@
-require 'digest/md5'
-
 class User < ActiveRecord::Base
+  require 'xml/libxml'
+  require 'digest/md5'
+
   has_many :traces
 
   validates_confirmation_of :pass_crypt, :message => 'Password must match the confirmation password'
@@ -43,4 +44,16 @@ class User < ActiveRecord::Base
     return confirmstring
   end
 
+  def to_xml
+    doc = OSM::API.new.get_xml_doc
+    doc.root << to_xml_node()
+    return doc
+  end
+
+  def to_xml_node
+    el1 = XML::Node.new 'user'
+    el1['display_name'] = self.display_name.to_s
+    el1['account_created'] = self.creation_time.xmlschema
+    return el1
+  end
 end
index a6e0cecf968805958d1b36ff06601af2ad5672b8..7dffcfef1886bf456f1610d8bab944b347c36c67 100644 (file)
@@ -45,15 +45,8 @@ class Way < ActiveRecord::Base
   end
 
   def to_xml
-    doc = XML::Document.new
-    doc.encoding = 'UTF-8' 
-    root = XML::Node.new 'osm'
-    root['version'] = '0.4'
-    root['generator'] = 'OpenStreetMap server'
-
-    doc.root = root
-
-    root << to_xml_node()
+    doc = OSM::API.new.get_xml_doc
+    doc.root << to_xml_node()
     return doc
   end
 
index 59b8fba56895e949cbca2d2d500f3348ed054547..20bf02ce7b9da651ee9fb011b95a04d5163be64f 100644 (file)
@@ -18,6 +18,8 @@ ActionController::Routing::Routes.draw do |map|
 
   map.connect "api/#{API_VERSION}/map", :controller => 'api', :action => 'map'
   
+  map.connect "api/#{API_VERSION}/user/details", :controller => 'user', :action => 'api_details'
+  
   # web site
 
   map.connect '/', :controller => 'site', :action => 'index'
index c223f05809d54319491713dbb69b2ae30d60bb68..adf34684f09a6d08e43bf8bac3c54df85319c9fc 100644 (file)
@@ -307,4 +307,16 @@ module OSM
       return @doc.to_s
     end
   end
+
+  class API
+    def get_xml_doc
+      doc = XML::Document.new
+      doc.encoding = 'UTF-8' 
+      root = XML::Node.new 'osm'
+      root['version'] = API_VERSION
+      root['generator'] = 'OpenStreetMap server'
+      doc.root = root
+      return doc
+    end
+  end
 end