]> git.openstreetmap.org Git - rails.git/blobdiff - lib/osm.rb
Use SecureRandom to generate user tokens
[rails.git] / lib / osm.rb
index 4241ad700a575c0bc9b6e088b97c1cf5137467fe..c7f8bef2f9a07d39e19ae3233f59c386fa93cb34 100644 (file)
@@ -353,6 +353,17 @@ module OSM
     end
   end
 
+  # Raised when a rate limit is exceeded
+  class APIRateLimitExceeded < APIError
+    def initialize
+      super "Rate limit exceeded"
+    end
+
+    def status
+      :too_many_requests
+    end
+  end
+
   # Helper methods for going to/from mercator and lat/lng.
   class Mercator
     include Math
@@ -491,15 +502,8 @@ module OSM
   end
 
   # Construct a random token of a given length
-  def self.make_token(length = 30)
-    chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
-    token = ""
-
-    length.times do
-      token += chars[(rand * chars.length).to_i].chr
-    end
-
-    token
+  def self.make_token(length = 24)
+    SecureRandom.urlsafe_base64(length)
   end
 
   # Return an SQL fragment to select a given area of the globe