class RocketfuelApi::Service
Public Class Methods
new(connection)
click to toggle source
# File lib/rocketfuel_api/service.rb, line 6 def initialize(connection) @connection = connection end
Public Instance Methods
create(route_params = {}, body = {})
click to toggle source
# File lib/rocketfuel_api/service.rb, line 49 def create(route_params = {}, body = {}) body = { uri_name => body } route = @connection.build_url(uri_suffix, route_params) response = @connection.post(route, body) if response.status != 200 raise RocketfuelApi::BadRequest, response.inspect end parse_response(response.body) end
get(id, params = {})
click to toggle source
# File lib/rocketfuel_api/service.rb, line 35 def get(id, params = {}) params = params.merge("#{name}_id" => id) response = @connection.get(uri_suffix, params).body parse_response(response) end
get_all(params = {})
click to toggle source
# File lib/rocketfuel_api/service.rb, line 43 def get_all(params = {}) response = @connection.get(uri_suffix, params).body parse_response(response) end
name()
click to toggle source
# File lib/rocketfuel_api/service.rb, line 17 def name @name ||= begin str = self.class.name.split('::').last str.gsub(/(.)([A-Z])/, '\1_\2').downcase end end
parse_response(response)
click to toggle source
# File lib/rocketfuel_api/service.rb, line 73 def parse_response(response) case response when Array response.map do |json| resource_class.new(json, self) end when Hash resource_class.new(response, self) else raise(RocketfuelApi::NotImplemented, format('Unknown response type %s.', response.class)) end end
resource_class()
click to toggle source
# File lib/rocketfuel_api/service.rb, line 10 def resource_class @resource_class ||= begin resource_name = name.capitalize.gsub(/(_(.))/) { |_c| Regexp.last_match(2).upcase } RocketfuelApi::Resource.const_get(resource_name) end end
update(id, route_params = {}, body = {})
click to toggle source
# File lib/rocketfuel_api/service.rb, line 61 def update(id, route_params = {}, body = {}) body = { uri_name => body } route = @connection.build_url(uri_suffix, route_params.merge('id' => id)) response = @connection.put(route, body) if response.status != 200 raise RocketfuelApi::BadRequest, response.inspect end parse_response(response.body) end
uri_suffix()
click to toggle source
# File lib/rocketfuel_api/service.rb, line 24 def uri_suffix @@endpoints ||= YAML.load_file( RocketfuelApi.root.join('lib', 'config', 'endpoints_for_services.yaml') ) endpoint = @@endpoints['service'][name] endpoint || raise(RocketfuelApi::NotImplemented, format('No endpoint for service %s available.', name)) end