Latest Threat Research:SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains.Details
Socket
Book a DemoInstallSign in
Socket

mini_api

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mini_api - npm Package Compare versions

Comparing version
0.1.2
to
0.1.3
+33
lib/mini_api/case_transform.rb
# frozen_string_literal: true
require 'mini_api/config'
require 'mini_api/exceptions/case_transform_option_invalid'
module MiniApi
module CaseTransform
module_function
def transform(object, transform_to = :snake_case)
object.deep_transform_keys do |key|
case transform_to
when :camel_case
key.to_s.camelize
when :camel_lower
key.to_s.camelize(:lower)
when :snake_case
key.to_s.underscore
else
raise CaseTransformOptionInvalid, "option #{transform_to} is not supported."
end
end
end
def request_params_keys(params)
transform(params, Config.transform_params_keys_to)
end
def response_keys(response)
transform(response, Config.transform_response_keys_to)
end
end
end
# frozen_string_literal: true
module MiniApi
class Config
include ActiveSupport::Configurable
# permitted values are: [:camel_case, :camel_lower, snake_case]
config_accessor :transform_params_keys_to, instance_accessor: false, default: :snake_case
config_accessor :transform_response_keys_to, instance_accessor: false, default: :snake_case
end
end
# frozen_string_literal: true
module MiniApi
class CaseTransformOptionInvalid < StandardError; end
end
+14
-0

@@ -5,5 +5,19 @@ # frozen_string_literal: true

require 'mini_api/responder'
require 'mini_api/case_transform'
# Entrypoint module
module MiniApi
extend ActiveSupport::Concern
included do
include CaseTransform
before_action :transform_params
def transform_params
self.params =
ActionController::Parameters.new(CaseTransform.request_params_keys(request.parameters))
end
end
def render_json(resource, options = {})

@@ -10,0 +24,0 @@ responder = Responder.new(self, resource, options)

+21
-1
# frozen_string_literal: true
require 'mini_api/case_transform'
module MiniApi

@@ -14,6 +16,8 @@ class DefaultResponder

data = transform_keys
@controller.render(
json: {
success: success,
data: @resource,
data: data,
message: @options[:message] || nil

@@ -24,3 +28,19 @@ },

end
private
def transform_keys
return CaseTransform.response_keys(@resource) if @resource.is_a?(Hash)
return @resource unless @resource.is_a?(Array)
@resource.map do |item|
if item.is_a?(Hash)
CaseTransform.response_keys(item)
else
item
end
end
end
end
end
# frozen_string_literal: true
require 'mini_api/serialization'
require 'mini_api/case_transform'

@@ -33,2 +34,4 @@ module MiniApi

body = CaseTransform.response_keys(body)
@controller.render json: body, status: status_code

@@ -35,0 +38,0 @@ end

@@ -5,2 +5,3 @@ # frozen_string_literal: true

require 'mini_api/serialization'
require 'mini_api/case_transform'

@@ -20,2 +21,6 @@ module MiniApi

meta = CaseTransform.response_keys(meta)
collection = transform_case(collection.as_json)
@controller.render json: {

@@ -45,2 +50,6 @@ success: @options[:success] || true,

def transform_case(collection)
collection.map { |item| CaseTransform.response_keys(item) }
end
def transform_resource_to_collection

@@ -47,0 +56,0 @@ unless defined?(Kaminari)

+1
-1
# frozen_string_literal: true
module MiniApi
VERSION = '0.1.2'
VERSION = '0.1.3'
end

@@ -12,2 +12,3 @@ ![](https://github.com/leoncruz/api-responder/actions/workflows/tests.yml/badge.svg)

- [Success and failure actions](#success-and-failure-actions)
- [Transform keys](#transform-keys)
- [Overriding response](#overriding-response)

@@ -145,2 +146,16 @@ - [Pagination](#pagination)

### Transform keys
It is possible to transform the keys of request and response. By default, will transform to `snake_case`, but the possible values are `snake_case`, `camel_lower` and `camel_case`
To change the transform operation, simply adds a initializer on initilizations folder with content:
```ruby
MiniApi::Config.configure do |config|
config.transform_params_keys_to = :snake_case
config.transform_response_keys_to = :camel_lower
end
```
The option `transform_params_keys_to` will transform request params.
The option `transform_response_keys_to` will transform responses.
## Overriding response

@@ -147,0 +162,0 @@