lib/clever-ruby/util.rb in clever-ruby-0.6.2 vs lib/clever-ruby/util.rb in clever-ruby-0.7.0
- old
+ new
@@ -1,8 +1,16 @@
module Clever
# Library helper methods
module Util
+ # Check if a given word is singular
+ # @api private
+ # @param word [String] Word to check
+ # @return [Boolean] False if plural, true if singular
+ def self.singular?(word)
+ word.singularize == word
+ end
+
# Check if a given ID is a valid format (MongoDB BSON ObjectID)
# @api private
# @param id [String] ID to check
# @return [Boolean] Whether or not it was valid
def self.valid_id?(id)
@@ -25,36 +33,27 @@
else
h
end
end
- # Convert the name of a resource to its APIResource class
- # @api private
- # @return [APIResource]
- def self.types_to_clever_class(type)
- types = {
- 'students' => Student,
- 'sections' => Section,
- 'teachers' => Teacher,
- 'districts' => District,
- 'schools' => School,
- 'events' => Event
- }
- types.fetch type
- end
-
# Convert an object containing data from Clever into a CleverObject
# @api private
# @return [CleverObject]
def self.convert_to_clever_object(resp)
case resp
when Array
resp.map { |i| convert_to_clever_object i }
when Hash
# Try converting to a known object class. If none available, fall back to generic
# APIResource.
- klass_name = %r{/v1.1/([a-z]+)/\S+$}.match(resp[:uri])[1]
- klass = types_to_clever_class klass_name if klass_name
+ if resp.key? :uri
+ uri = resp[:uri]
+ else
+ uri = resp[:links].select { |l| l[:rel] == 'self' }[0][:uri]
+ end
+
+ klass_name = %r{/v1.1/([a-z]+)/\S+$}.match(uri)[1]
+ klass = APIResource.named klass_name if klass_name
klass ||= CleverObject
klass.construct_from resp[:data]
else
resp
end