Initial commit
This commit is contained in:
124
app/api/v2/management/currencies.rb
Normal file
124
app/api/v2/management/currencies.rb
Normal file
@@ -0,0 +1,124 @@
|
||||
# encoding: UTF-8
|
||||
# frozen_string_literal: true
|
||||
|
||||
module API
|
||||
module V2
|
||||
module Management
|
||||
class Currencies < Grape::API
|
||||
# POST: api/v2/management/currencies/list
|
||||
desc 'Return currencies list.' do
|
||||
@settings[:scope] = :read_currencies
|
||||
success API::V2::Management::Entities::Currency
|
||||
end
|
||||
params do
|
||||
optional :type,
|
||||
type: String,
|
||||
values: { value: %w[fiat coin], message: 'management.currency.invalid_type' },
|
||||
desc: -> { API::V2::Entities::Currency.documentation[:type][:desc] }
|
||||
end
|
||||
post '/currencies/list' do
|
||||
currencies = Currency.all
|
||||
currencies = currencies.where(type: params[:type]).includes(:blockchain) if params[:type] == 'coin'
|
||||
currencies = currencies.where(type: params[:type]) if params[:type] == 'fiat'
|
||||
present currencies.ordered, with: API::V2::Entities::Currency
|
||||
|
||||
status 200
|
||||
end
|
||||
|
||||
# POST: api/v2/management/currencies
|
||||
desc 'Returns currency by code.' do
|
||||
@settings[:scope] = :read_currencies
|
||||
success API::V2::Management::Entities::Currency
|
||||
end
|
||||
|
||||
params do
|
||||
requires :code, type: String, desc: 'The currency code.'
|
||||
end
|
||||
post '/currencies/:code', requirements: { code: /[\w\.\-]+/ } do
|
||||
present Currency.find_by!(params.slice(:code)), with: API::V2::Management::Entities::Currency
|
||||
end
|
||||
|
||||
desc 'Update currency.' do
|
||||
@settings[:scope] = :write_currencies
|
||||
success API::V2::Management::Entities::Currency
|
||||
end
|
||||
|
||||
params do
|
||||
requires :id,
|
||||
type: String,
|
||||
desc: -> { API::V2::Management::Entities::Currency.documentation[:id][:desc] }
|
||||
optional :name, desc: -> { API::V2::Management::Entities::Currency.documentation[:name][:desc] }
|
||||
optional :deposit_fee,
|
||||
type: { value: BigDecimal, message: 'management.currency.non_decimal_deposit_fee' },
|
||||
values: { value: -> (p){ p >= 0 }, message: 'management.currency.invalid_deposit_fee' },
|
||||
default: 0.0,
|
||||
desc: -> { API::V2::Management::Entities::Currency.documentation[:deposit_fee][:desc] }
|
||||
optional :min_deposit_amount,
|
||||
type: { value: BigDecimal, message: 'management.currency.min_deposit_amount' },
|
||||
values: { value: -> (p){ p >= 0 }, message: 'management.currency.invalid_min_deposit_amount' },
|
||||
default: 0.0,
|
||||
desc: -> { API::V2::Management::Entities::Currency.documentation[:min_deposit_amount][:desc] }
|
||||
optional :min_collection_amount,
|
||||
type: { value: BigDecimal, message: 'management.currency.non_decimal_min_collection_amount' },
|
||||
values: { value: -> (p){ p >= 0 }, message: 'management.currency.invalid_min_collection_amount' },
|
||||
default: 0.0,
|
||||
desc: -> { API::V2::Management::Entities::Currency.documentation[:min_collection_amount][:desc] }
|
||||
optional :withdraw_fee,
|
||||
type: { value: BigDecimal, message: 'management.currency.non_decimal_withdraw_fee' },
|
||||
values: { value: -> (p){ p >= 0 }, message: 'management.currency.invalid_withdraw_fee' },
|
||||
default: 0.0,
|
||||
desc: -> { API::V2::Management::Entities::Currency.documentation[:withdraw_fee][:desc] }
|
||||
optional :min_withdraw_amount,
|
||||
type: { value: BigDecimal, message: 'management.currency.non_decimal_min_withdraw_amount' },
|
||||
values: { value: -> (p){ p >= 0 }, message: 'management.currency.invalid_min_withdraw_amount' },
|
||||
default: 0.0,
|
||||
desc: -> { API::V2::Management::Entities::Currency.documentation[:min_withdraw_amount][:desc] }
|
||||
optional :withdraw_limit_24h,
|
||||
type: { value: BigDecimal, message: 'management.currency.non_decimal_withdraw_limit_24h' },
|
||||
values: { value: -> (p){ p >= 0 }, message: 'management.currency.invalid_withdraw_limit_24h' },
|
||||
default: 0.0,
|
||||
desc: -> { API::V2::Management::Entities::Currency.documentation[:withdraw_limit_24h][:desc] }
|
||||
optional :withdraw_limit_72h,
|
||||
type: { value: BigDecimal, message: 'management.currency.non_decimal_withdraw_limit_72h' },
|
||||
values: { value: -> (p){ p >= 0 }, message: 'management.currency.invalid_withdraw_limit_72h' },
|
||||
default: 0.0,
|
||||
desc: -> { API::V2::Management::Entities::Currency.documentation[:withdraw_limit_72h][:desc] }
|
||||
optional :position,
|
||||
type: { value: Integer, message: 'management.currency.non_integer_position' },
|
||||
values: { value: -> (p){ p >= ::Currency::TOP_POSITION }, message: 'management.currency.invalid_position' },
|
||||
desc: -> { API::V2::Management::Entities::Currency.documentation[:position][:desc] }
|
||||
optional :options,
|
||||
type: { value: JSON, message: 'management.currency.non_json_options' },
|
||||
default: {},
|
||||
desc: -> { API::V2::Management::Entities::Currency.documentation[:options][:desc] }
|
||||
optional :visible,
|
||||
type: { value: Boolean, message: 'management.currency.non_boolean_visible' },
|
||||
default: true,
|
||||
desc: -> { API::V2::Management::Entities::Currency.documentation[:visible][:desc] }
|
||||
optional :deposit_enabled,
|
||||
type: { value: Boolean, message: 'management.currency.non_boolean_deposit_enabled' },
|
||||
default: true,
|
||||
desc: -> { API::V2::Management::Entities::Currency.documentation[:deposit_enabled][:desc] }
|
||||
optional :withdrawal_enabled,
|
||||
type: { value: Boolean, message: 'management.currency.non_boolean_withdrawal_enabled' },
|
||||
default: true,
|
||||
desc: -> { API::V2::Management::Entities::Currency.documentation[:withdrawal_enabled][:desc] }
|
||||
optional :precision,
|
||||
type: { value: Integer, message: 'management.currency.non_integer_base_precision' },
|
||||
default: 8,
|
||||
desc: -> { API::V2::Management::Entities::Currency.documentation[:precision][:desc] }
|
||||
optional :icon_url, desc: -> { API::V2::Management::Entities::Currency.documentation[:icon_url][:desc] }
|
||||
end
|
||||
put '/currencies/update' do
|
||||
currency = ::Currency.find_by!(params.slice(:id))
|
||||
if currency.update(declared(params, include_missing: false))
|
||||
present currency, with: API::V2::Management::Entities::Currency
|
||||
else
|
||||
body errors: currency.errors.full_messages
|
||||
status 422
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user