diff --git a/src/api.ml b/src/api.ml index 77a38f33..871454c7 100644 --- a/src/api.ml +++ b/src/api.ml @@ -1,4 +1,5 @@ (* TODO + ppx? normalized JSON-object @@ -21,10 +22,10 @@ option: correct use opt_mem or Jsont.option number - number is "float", but we probably want int everywhere instead - - numeric values capped at 2^53 -1 inclusive because json - *) + - numeric values capped at 2^53 -1 inclusive because json *) open Crypto open Bin_signature +open Jsont.Object let encode_exn jsont v = Jsont_bytesrw.encode_string jsont v |> Result.get_ok let encode jsont v = Jsont_bytesrw.encode_string jsont v @@ -160,7 +161,6 @@ module CurrencySpecification = struct in let alt_unit_names v = v.alt_unit_names in let common_amounts v = v.common_amounts in - let open Jsont.Object in map ~kind:"CurrencySpecification" make |> mem "name" Jsont.string ~enc:name |> mem "num_fractional_input_digits" Jsont.int @@ -210,7 +210,6 @@ module ExchangeVersionResponse = struct let currency_specification v = v.currency_specification in let supported_kyc_requirements v = v.supported_kyc_requirements in let aml_spa_dialect v = v.aml_spa_dialect in - let open Jsont.Object in map ~kind:"ExchangeVersionResponse" make |> mem "version" Jsont.string ~enc:version |> mem "implementation" (Jsont.option Jsont.string) ~enc:implementation @@ -272,7 +271,6 @@ module DenominationKey = struct let of_rsa v = Rsa v let jsont = - let open Jsont.Object in let rsa = Case.map "RSA" RsaDenominationKey.jsont ~dec:of_rsa in let cs = Case.map "CS" CSDenominationKey.jsont ~dec:of_cs in let enc_case = function Rsa v -> Case.value rsa v in @@ -300,7 +298,6 @@ module FutureSignKey = struct let stamp_expire v = v.stamp_expire in let stamp_end v = v.stamp_end in let signkey_secmod_sig v = v.signkey_secmod_sig in - let open Jsont.Object in map ~kind:"FutureSignKey" make |> mem "key" EddsaPublicKey.jsont ~enc:key |> mem "stamp_start" Timestamp.jsont ~enc:stamp_start @@ -358,7 +355,6 @@ module FutureDenom = struct let fee_refresh t = t.fee_refresh in let fee_refund t = t.fee_refund in let denom_secmod_sig t = t.denom_secmod_sig in - let open Jsont.Object in map ~kind:"FutureDenom" make |> mem "section_name" Jsont.string ~enc:section_name |> mem "value" Amount.jsont ~enc:value @@ -401,7 +397,6 @@ module FutureKeysResponse = struct let master_pub t = t.master_pub in let denom_secmod_public_key t = t.denom_secmod_public_key in let signkey_secmod_public_key t = t.signkey_secmod_public_key in - let open Jsont.Object in map ~kind:"FutureKeysResponse" make |> mem "future_denoms" (Jsont.list FutureDenom.jsont) ~enc:future_denoms |> mem "future_signkeys" @@ -425,7 +420,6 @@ module SignKeySignature = struct let make key master_sig = { key; master_sig } in let key v = v.key in let master_sig v = v.master_sig in - let open Jsont.Object in map ~kind:"SignKeySignature" make |> mem "key" EddsaPublicKey.jsont ~enc:key |> mem "master_sig" ExchangeSigningKeyValidityPS.jsont ~enc:master_sig @@ -442,7 +436,6 @@ module DenomSignature = struct let make h_denom_pub master_sig = { h_denom_pub; master_sig } in let h_denom_pub v = v.h_denom_pub in let master_sig v = v.master_sig in - let open Jsont.Object in map ~kind:"DenomSignature" make |> mem "h_denom_pub" HashCode.jsont ~enc:h_denom_pub |> mem "master_sig" DenominationKeyValidityPS.jsont ~enc:master_sig @@ -459,7 +452,6 @@ module MasterSignatures = struct let make denom_sigs signkey_sigs = { denom_sigs; signkey_sigs } in let denom_sigs v = v.denom_sigs in let signkey_sigs v = v.signkey_sigs in - let open Jsont.Object in map ~kind:"MasterSignatures" make |> mem "denom_sigs" (Jsont.list DenomSignature.jsont) ~enc:denom_sigs |> mem "signkey_sigs" (Jsont.list SignKeySignature.jsont) ~enc:signkey_sigs @@ -472,7 +464,6 @@ module DenomRevocationSignature = struct let jsont = let make master_sig = { master_sig } in let enc v = v.master_sig in - let open Jsont.Object in map ~kind:"DenomRevocationSignature" make |> mem "master_sig" MasterDenominationKeyRevocationPS.jsont ~enc |> finish @@ -484,7 +475,6 @@ module SignkeyRevocationSignature = struct let jsont = let make master_sig = { master_sig } in let enc v = v.master_sig in - let open Jsont.Object in map ~kind:"SignkeyRevocationSignature" make |> mem "master_sig" MasterSigningKeyRevocationPS.jsont ~enc |> finish @@ -510,7 +500,6 @@ module AuditorSetupMessage = struct let auditor_pub v = v.auditor_pub in let master_sig v = v.master_sig in let validity_start v = v.validity_start in - let open Jsont.Object in map ~kind:"AuditorSetupMessage" make |> mem "auditor_url" Jsont.string ~enc:auditor_url |> mem "auditor_name" Jsont.string ~enc:auditor_name @@ -531,7 +520,6 @@ module AuditorTeardownMessage = struct let make master_sig validity_end = { master_sig; validity_end } in let master_sig v = v.master_sig in let validity_end v = v.validity_end in - let open Jsont.Object in map ~kind:"AuditorTeardownMessage" make |> mem "master_sig" MasterDelAuditorPS.jsont ~enc:master_sig |> mem "validity_end" Timestamp.jsont ~enc:validity_end @@ -569,7 +557,6 @@ module WireFeeSetupMessage = struct let fee_end v = v.fee_end in let closing_fee v = v.closing_fee in let wire_fee v = v.wire_fee in - let open Jsont.Object in map ~kind:"WireFeeSetupMessage" make |> mem "wire_method" Jsont.string ~enc:wire_method |> mem "master_sig_wire" MasterWireFeePS.jsont ~enc:master_sig_wire @@ -618,7 +605,6 @@ module GlobalFees = struct let purse_account_limit v = v.purse_account_limit in let purse_timeout v = v.purse_timeout in let master_sig v = v.master_sig in - let open Jsont.Object in map ~kind:"GlobalFees" make |> mem "start_date" Timestamp.jsont ~enc:start_date |> mem "end_date" Timestamp.jsont ~enc:end_date @@ -661,7 +647,6 @@ module WireSetupMessage = struct let validity_start v = v.validity_start in let bank_label v = v.bank_label in let priority v = v.priority in - let open Jsont.Object in map ~kind:"WireSetupMessage" make |> mem "payto_uri" Jsont.string ~enc:payto_uri |> mem "master_sig_wire" MasterWireDetailsPS.jsont ~enc:master_sig_wire @@ -687,7 +672,6 @@ module WireTeardownMessage = struct let payto_uri v = v.payto_uri in let master_sig_del v = v.master_sig_del in let validity_end v = v.validity_end in - let open Jsont.Object in map ~kind:"WireTeardownMessage" make |> mem "payto_uri" Jsont.string ~enc:payto_uri |> mem "master_sig_del" MasterDelWirePS.jsont ~enc:master_sig_del @@ -723,7 +707,6 @@ module DrainProfitsMessage = struct let master_sig v = v.master_sig in let date v = v.date in let amount v = v.amount in - let open Jsont.Object in map ~kind:"DrainProfitsMessage" make |> mem "debit_account_section" Jsont.string ~enc:debit_account_section |> mem "credit_payto_uri" Jsont.string ~enc:credit_payto_uri @@ -762,7 +745,6 @@ module AmlOfficerSetup = struct let read_only v = v.read_only in let master_sig v = v.master_sig in let change_date v = v.change_date in - let open Jsont.Object in map ~kind:"AmlOfficerSetup" make |> mem "officer_pub" EddsaPublicKey.jsont ~enc:officer_pub |> mem "officer_name" Jsont.string ~enc:officer_name @@ -804,7 +786,6 @@ module ExchangePartnerSetupRequest = struct let start_date v = v.start_date in let end_date v = v.end_date in let wad_fee v = v.wad_fee in - let open Jsont.Object in map ~kind:"ExchangePartnerSetupRequest" make |> mem "partner_base_url" Jsont.string ~enc:partner_base_url |> mem "partner_pub" EddsaPublicKey.jsont ~enc:partner_pub @@ -849,7 +830,6 @@ module ExchangePartnerListEntry = struct let start_date v = v.start_date in let end_date v = v.end_date in let master_sig v = v.master_sig in - let open Jsont.Object in map ~kind:"ExchangePartnerListEntry" make |> mem "partner_base_url" Jsont.string ~enc:partner_base_url |> mem "partner_master_pub" EddsaPublicKey.jsont ~enc:partner_master_pub @@ -879,7 +859,6 @@ module AggregateTransferFee = struct let start_date v = v.start_date in let end_date v = v.end_date in let sig_ v = v.sig_ in - let open Jsont.Object in map ~kind:"AggregateTransferFee" make |> mem "wire_fee" Amount.jsont ~enc:wire_fee |> mem "closing_fee" Amount.jsont ~enc:closing_fee @@ -899,7 +878,6 @@ module AuditorDenominationKey = struct let make denom_pub_h auditor_sig = { denom_pub_h; auditor_sig } in let denom_pub_h v = v.denom_pub_h in let auditor_sig v = v.auditor_sig in - let open Jsont.Object in map ~kind:"AuditorDenominationKey" make |> mem "denom_pub_h" HashCode.jsont ~enc:denom_pub_h |> mem "auditor_sig" ExchangeKeyValidityPS.jsont ~enc:auditor_sig @@ -922,7 +900,6 @@ module AuditorKeys = struct let auditor_url v = v.auditor_url in let auditor_name v = v.auditor_name in let denomination_keys v = v.denomination_keys in - let open Jsont.Object in map ~kind:"AuditorKeys" make |> mem "auditor_pub" EddsaPublicKey.jsont ~enc:auditor_pub |> mem "auditor_url" Jsont.string ~enc:auditor_url @@ -951,7 +928,6 @@ module SignKey = struct let stamp_expire v = v.stamp_expire in let stamp_end v = v.stamp_end in let master_sig v = v.master_sig in - let open Jsont.Object in map ~kind:"SignKey" make |> mem "key" EddsaPublicKey.jsont ~enc:key |> mem "stamp_start" Timestamp.jsont ~enc:stamp_start @@ -967,7 +943,6 @@ module RecoupDenoms = struct let jsont = let make h_denom_pub = { h_denom_pub } in let h_denom_pub v = v.h_denom_pub in - let open Jsont.Object in map ~kind:"RecoupDenoms" make |> mem "h_denom_pub" HashCode.jsont ~enc:h_denom_pub |> finish @@ -1005,7 +980,6 @@ module RsaDenom = struct let stamp_expire_deposit v = v.stamp_expire_deposit in let stamp_expire_legal v = v.stamp_expire_legal in let lost v = v.lost in - let open Jsont.Object in map ~kind:"RsaDenom" make |> mem "rsa_pub" RsaPublicKey.jsont ~enc:rsa_pub |> mem "master_sig" DenominationKeyValidityPS.jsont ~enc:master_sig @@ -1037,7 +1011,6 @@ module RsaDenomGroup = struct let fee_deposit v = v.fee_deposit in let fee_refresh v = v.fee_refresh in let fee_refund v = v.fee_refund in - let open Jsont.Object in map ~kind:"RsaDenomGroup" make |> mem "denoms" (Jsont.list RsaDenom.jsont) ~enc:denoms |> mem "value" Amount.jsont ~enc:value @@ -1054,7 +1027,6 @@ module DenomGroup = struct let of_rsa v = Rsa v let jsont = - let open Jsont.Object in let rsa = Case.map "RSA" RsaDenomGroup.jsont ~dec:of_rsa in let enc_case = function Rsa v -> Case.value rsa v in let cases = Case.[ make rsa ] in @@ -1079,7 +1051,6 @@ module AccountLimit = struct let timeframe v = v.timeframe in let threshold v = v.threshold in let soft_limit v = v.soft_limit in - let open Jsont.Object in map ~kind:"AccountLimit" make |> mem "operation_type" Account_operation.jsont ~enc:operation_type |> mem "timeframe" RelativeTime.jsont ~enc:timeframe @@ -1094,7 +1065,6 @@ module ZeroLimitedOperation = struct let jsont = let make operation_type = { operation_type } in let operation_type v = v.operation_type in - let open Jsont.Object in map ~kind:"ZeroLimitedOperation" make |> mem "operation_type" Account_operation.jsont ~enc:operation_type |> finish @@ -1115,7 +1085,6 @@ module RegexAccountRestriction = struct let payto_regex v = v.payto_regex in let human_hint v = v.human_hint in let human_hint_i18n v = v.human_hint_i18n in - let open Jsont.Object in map ~kind:"RegexAccountRestriction" make |> mem "payto_regex" Jsont.string ~enc:payto_regex |> mem "human_hint" Jsont.string ~enc:human_hint @@ -1132,7 +1101,6 @@ module AccountRestriction = struct let of_deny () = Deny let jsont = - let open Jsont.Object in let regex = Case.map "regex" RegexAccountRestriction.jsont ~dec:of_regex in let deny = Case.map "deny" Jsont.ignore ~dec:of_deny in let enc_case = function @@ -1176,7 +1144,6 @@ module ExchangeWireAccount = struct let master_sig v = v.master_sig in let bank_label v = v.bank_label in let priority v = v.priority in - let open Jsont.Object in map ~kind:"ExchangeWireAccount" make |> mem "payto_uri" Jsont.string ~enc:payto_uri |> opt_mem "conversion_url" Jsont.string ~enc:conversion_url @@ -1204,7 +1171,6 @@ module ExtensionManifest = struct let critical v = v.critical in let version v = v.version in let config v = v.config in - let open Jsont.Object in map ~kind:"ExtensionManifest" make |> mem "critical" Jsont.bool ~enc:critical |> mem "version" Jsont.string ~enc:version @@ -1338,8 +1304,6 @@ module ExchangeKeysResponse = struct let signkeys v = v.signkeys in let extensions v = v.extensions in let extensions_sig v = v.extensions_sig in - - let open Jsont.Object in map ~kind:"ExchangeKeysResponse" make |> mem "version" Jsont.string ~enc:version |> mem "base_url" Jsont.string ~enc:base_url