module JsonApiQueryParser
Constants
- PARSE_PARAM
- VERSION
Public Class Methods
delegate_to_parser(query, request_data)
click to toggle source
# File lib/json_api_query_parser.rb, line 52 def self.delegate_to_parser(query, request_data) PARSE_PARAM.each do |function_name, _value| if query =~ PARSE_PARAM[function_name.to_sym] request_data = send(function_name, query, request_data) end end end
parse_endpoint(endpoint_string, request_data)
click to toggle source
# File lib/json_api_query_parser.rb, line 43 def self.parse_endpoint(endpoint_string, request_data) request_split = endpoint_string.split("/") request_data[:resource_type] = request_split[0] request_data[:identifier] = request_split.length >= 2 ? request_split[1] : nil request_data end
parse_fields(fields_string, request_data)
click to toggle source
# File lib/json_api_query_parser.rb, line 67 def self.parse_fields(fields_string, request_data) target_resource, target_fields, target_fields_string = "" field_name_regex = /^fields.*?\=(.*?)$/i target_resource = fields_string.scan(PARSE_PARAM[:parse_fields]) target_fields_string = fields_string.scan(field_name_regex) request_data[:fields][target_resource[0][0]] = !request_data[:fields][target_resource[0][0]] ? [] : target_resource[0][0] target_fields = target_fields_string[0][0].split(",") target_fields.each do |targetField| request_data[:fields][target_resource[0][0]] << targetField end request_data end
parse_include(include_string, request_data)
click to toggle source
# File lib/json_api_query_parser.rb, line 60 def self.parse_include(include_string, request_data) target_string = include_string.split("=")[1] request_data[:include] = target_string.split(",") request_data end
parse_page(page_string, request_data)
click to toggle source
# File lib/json_api_query_parser.rb, line 85 def self.parse_page (page_string, request_data) page_setting_key, page_setting_value = "" page_value_regex = /^page.*?\=(.*?)$/i page_setting_key = page_string.scan(PARSE_PARAM[:parse_page]) page_setting_value = page_string.scan(page_value_regex) request_data[:page][page_setting_key[0][0]] = page_setting_value[0][0] request_data end
parse_query_parameters(query_string, request_data)
click to toggle source
# File lib/json_api_query_parser.rb, line 33 def self.parse_query_parameters(query_string, request_data) query_split = query_string.split("&") query_split.each do |query| delegate_to_parser(query, request_data) end request_data end
parse_request(url)
click to toggle source
# File lib/json_api_query_parser.rb, line 12 def self.parse_request(url) request_data = { resource_type: nil, identifier: nil, query_data: { include: [], fields: {}, page: {} } } url_split = url.split("?") request_data = parse_endpoint(url_split[0], request_data) if url_split[0] if url_split[1] request_data[:query_data] = parse_query_parameters(url_split[1], request_data[:query_data]) end request_data end