From 32cb28ca125df080e0bdba4ad27dd783bc97af7a Mon Sep 17 00:00:00 2001 From: Puneet Khushwani Date: Mon, 25 Jun 2018 23:11:18 +0530 Subject: [PATCH 1/7] moving ledger and balance API's to v1.1 --- lib/ost-sdk-ruby/saas.rb | 6 ++- lib/ost-sdk-ruby/saas/services.rb | 42 +++++++++++++++---- .../saas/{v1 => v1.1}/balances.rb | 2 +- lib/ost-sdk-ruby/saas/{v1 => v1.1}/ledger.rb | 2 +- lib/ost-sdk-ruby/saas/v1.1/services.rb | 41 ++++++++++++++++++ lib/ost-sdk-ruby/saas/v1/services.rb | 4 +- 6 files changed, 83 insertions(+), 14 deletions(-) rename lib/ost-sdk-ruby/saas/{v1 => v1.1}/balances.rb (97%) rename lib/ost-sdk-ruby/saas/{v1 => v1.1}/ledger.rb (97%) create mode 100644 lib/ost-sdk-ruby/saas/v1.1/services.rb diff --git a/lib/ost-sdk-ruby/saas.rb b/lib/ost-sdk-ruby/saas.rb index edde4f0..f051c4a 100644 --- a/lib/ost-sdk-ruby/saas.rb +++ b/lib/ost-sdk-ruby/saas.rb @@ -13,8 +13,10 @@ require_relative 'saas/v1/airdrops' require_relative 'saas/v1/transfers' require_relative 'saas/v1/transactions' -require_relative 'saas/v1/balances' -require_relative 'saas/v1/ledger' + +require_relative 'saas/v1.1/services' +require_relative 'saas/v1.1/balances' +require_relative 'saas/v1.1/ledger' module OSTSdk diff --git a/lib/ost-sdk-ruby/saas/services.rb b/lib/ost-sdk-ruby/saas/services.rb index 0711b50..2e94bb4 100644 --- a/lib/ost-sdk-ruby/saas/services.rb +++ b/lib/ost-sdk-ruby/saas/services.rb @@ -20,7 +20,7 @@ def initialize(params) fail 'missing API Key' if params[:api_key].nil? fail 'missing API Secret' if params[:api_secret].nil? - params[:api_base_url].gsub!(/\/$/, '') # remove trailing slash + params[:api_base_url] = params[:api_base_url].gsub(/\/$/, '') # remove trailing slash params[:api_spec] = false if params[:api_spec].nil? set_manifest(params) @@ -31,27 +31,55 @@ def initialize(params) def set_manifest(params) - api_version = extract_api_version(params[:api_base_url]) + int_api_version = extract_integer_api_version(params[:api_base_url]) # Provide access to version specific API endpoints - if api_version == '' + if int_api_version == v0_int_api_version # puts("You are using an deprecated version of OST API. Please update to the latest version.") @services = OSTSdk::Saas::V0::Services.new(params) - elsif api_version == 'v1' + elsif int_api_version == v1_int_api_version @services = OSTSdk::Saas::V1::Services.new(params) + elsif int_api_version < v2_int_api_version + @services = OSTSdk::Saas::V1Dot1::Services.new(params) else fail 'Api endpoint is invalid' end end - def extract_api_version(api_base_url) + def extract_integer_api_version(api_base_url) api_version = ((api_base_url || '').split("/")[3] || '').downcase - api_major_version = (api_version.split('.')[0] || '') + return v0_int_api_version if api_version == '' - return api_major_version + # version if passed should always start with 'v' + fail "invalid version string #{api_version}" if api_version[0] != 'v' + # exclude 'v' + str_api_version = api_version[1..-1] + + # if str_api_version doesn't start with a integer value fail + fail "invalid version string #{api_version}" if str_api_version.to_i == 0 + + buffer = str_api_version.split('.') + + # version can not have more than 2 '.' ie 1.1.1.2 is not allowed + fail "invalid version string #{api_version}" if buffer.length > 3 + + buffer[0].to_i * 100 + (buffer[1] || 0).to_i * 10 + (buffer[2] || 0).to_i + + end + + def v0_int_api_version + 0 + end + + def v1_int_api_version + 100 + end + + def v2_int_api_version + 200 end end diff --git a/lib/ost-sdk-ruby/saas/v1/balances.rb b/lib/ost-sdk-ruby/saas/v1.1/balances.rb similarity index 97% rename from lib/ost-sdk-ruby/saas/v1/balances.rb rename to lib/ost-sdk-ruby/saas/v1.1/balances.rb index 197d8ac..fe2b11d 100644 --- a/lib/ost-sdk-ruby/saas/v1/balances.rb +++ b/lib/ost-sdk-ruby/saas/v1.1/balances.rb @@ -2,7 +2,7 @@ module OSTSdk module Saas - module V1 + module V1Dot1 class Balances < OSTSdk::Saas::Base diff --git a/lib/ost-sdk-ruby/saas/v1/ledger.rb b/lib/ost-sdk-ruby/saas/v1.1/ledger.rb similarity index 97% rename from lib/ost-sdk-ruby/saas/v1/ledger.rb rename to lib/ost-sdk-ruby/saas/v1.1/ledger.rb index b40a3cb..02381d6 100644 --- a/lib/ost-sdk-ruby/saas/v1/ledger.rb +++ b/lib/ost-sdk-ruby/saas/v1.1/ledger.rb @@ -2,7 +2,7 @@ module OSTSdk module Saas - module V1 + module V1Dot1 class Ledger < OSTSdk::Saas::Base diff --git a/lib/ost-sdk-ruby/saas/v1.1/services.rb b/lib/ost-sdk-ruby/saas/v1.1/services.rb new file mode 100644 index 0000000..7324a05 --- /dev/null +++ b/lib/ost-sdk-ruby/saas/v1.1/services.rb @@ -0,0 +1,41 @@ +module OSTSdk + + module Saas + + module V1Dot1 + + class Services + + attr_reader :users, :token, :actions, :airdrops, :transactions, :transfers, :balances, :ledger + + # Initialize + # + # Arguments: + # api_base_url: (String) + # api_key: (String) + # api_secret: (String) + # api_spec: (Boolean) + # + def initialize(params) + + # Modules which were implemented with V1.0 + @users = OSTSdk::Saas::V1::Users.new(params) + @token = OSTSdk::Saas::V1::Token.new(params) + @actions = OSTSdk::Saas::V1::Actions.new(params) + @airdrops = OSTSdk::Saas::V1::Airdrops.new(params) + @transactions = OSTSdk::Saas::V1::Transactions.new(params) + @transfers = OSTSdk::Saas::V1::Transfers.new(params) + + # Modules which were implemented with V1.1 + @balances = OSTSdk::Saas::V1Dot1::Balances.new(params) + @ledger = OSTSdk::Saas::V1Dot1::Ledger.new(params) + + end + + end + + end + + end + +end diff --git a/lib/ost-sdk-ruby/saas/v1/services.rb b/lib/ost-sdk-ruby/saas/v1/services.rb index 112bb97..815c41a 100644 --- a/lib/ost-sdk-ruby/saas/v1/services.rb +++ b/lib/ost-sdk-ruby/saas/v1/services.rb @@ -6,7 +6,7 @@ module V1 class Services - attr_reader :users, :token, :actions, :airdrops, :transactions, :transfers, :balances, :ledger + attr_reader :users, :token, :actions, :airdrops, :transactions, :transfers # Initialize # @@ -24,8 +24,6 @@ def initialize(params) @airdrops = OSTSdk::Saas::V1::Airdrops.new(params) @transactions = OSTSdk::Saas::V1::Transactions.new(params) @transfers = OSTSdk::Saas::V1::Transfers.new(params) - @balances = OSTSdk::Saas::V1::Balances.new(params) - @ledger = OSTSdk::Saas::V1::Ledger.new(params) end From 6f5299f0b284060265dac50880e86ed1f060b239 Mon Sep 17 00:00:00 2001 From: Puneet Khushwani Date: Tue, 26 Jun 2018 12:42:43 +0530 Subject: [PATCH 2/7] added checks for supported API versions. --- lib/ost-sdk-ruby/saas/services.rb | 42 +++++++++++++++++++------------ 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/lib/ost-sdk-ruby/saas/services.rb b/lib/ost-sdk-ruby/saas/services.rb index 2e94bb4..b8dc821 100644 --- a/lib/ost-sdk-ruby/saas/services.rb +++ b/lib/ost-sdk-ruby/saas/services.rb @@ -34,15 +34,15 @@ def set_manifest(params) int_api_version = extract_integer_api_version(params[:api_base_url]) # Provide access to version specific API endpoints - if int_api_version == v0_int_api_version - # puts("You are using an deprecated version of OST API. Please update to the latest version.") - @services = OSTSdk::Saas::V0::Services.new(params) - elsif int_api_version == v1_int_api_version - @services = OSTSdk::Saas::V1::Services.new(params) - elsif int_api_version < v2_int_api_version + if int_api_version >= v1dot2_int_api_version + fail 'Unsupported API Version. Please check for new versions of SDK.' + elsif int_api_version >= v1dot1_int_api_version @services = OSTSdk::Saas::V1Dot1::Services.new(params) + elsif int_api_version >= v1_int_api_version + @services = OSTSdk::Saas::V1::Services.new(params) else - fail 'Api endpoint is invalid' + # puts("You are using an deprecated version of OST API. Please update to the latest version.") + @services = OSTSdk::Saas::V0::Services.new(params) end end @@ -58,15 +58,21 @@ def extract_integer_api_version(api_base_url) # exclude 'v' str_api_version = api_version[1..-1] - # if str_api_version doesn't start with a integer value fail - fail "invalid version string #{api_version}" if str_api_version.to_i == 0 + regex_match_rsp = /^(\d{1,3})\.?(\d{0,3})\.?(\*|\d{0,3})$/.match(str_api_version) + fail "invalid version string #{api_version}" if regex_match_rsp.nil? + + int_api_version = 0 + + # add API major version + int_api_version += regex_match_rsp[1].to_i * 1000000 - buffer = str_api_version.split('.') + # add API minor version + int_api_version += (regex_match_rsp[2] == '' ? 0 : regex_match_rsp[2].to_i * 1000) - # version can not have more than 2 '.' ie 1.1.1.2 is not allowed - fail "invalid version string #{api_version}" if buffer.length > 3 + # add API Patch Version + int_api_version += (regex_match_rsp[3] == '' ? 0 : regex_match_rsp[3].to_i) - buffer[0].to_i * 100 + (buffer[1] || 0).to_i * 10 + (buffer[2] || 0).to_i + return int_api_version end @@ -75,11 +81,15 @@ def v0_int_api_version end def v1_int_api_version - 100 + 1000000 + end + + def v1dot1_int_api_version + 1001000 end - def v2_int_api_version - 200 + def v1dot2_int_api_version + 1002000 end end From f6fb287aaf5c2b4cf64759142073e2ebb4f8fc15 Mon Sep 17 00:00:00 2001 From: Puneet Khushwani Date: Tue, 26 Jun 2018 14:45:59 +0530 Subject: [PATCH 3/7] added check of 'v' in api version in regex --- lib/ost-sdk-ruby/saas/services.rb | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/lib/ost-sdk-ruby/saas/services.rb b/lib/ost-sdk-ruby/saas/services.rb index b8dc821..91d4299 100644 --- a/lib/ost-sdk-ruby/saas/services.rb +++ b/lib/ost-sdk-ruby/saas/services.rb @@ -52,13 +52,7 @@ def extract_integer_api_version(api_base_url) api_version = ((api_base_url || '').split("/")[3] || '').downcase return v0_int_api_version if api_version == '' - # version if passed should always start with 'v' - fail "invalid version string #{api_version}" if api_version[0] != 'v' - - # exclude 'v' - str_api_version = api_version[1..-1] - - regex_match_rsp = /^(\d{1,3})\.?(\d{0,3})\.?(\*|\d{0,3})$/.match(str_api_version) + regex_match_rsp = /^v(\d{1,3})\.?(\d{0,3})\.?(\*|\d{0,3})$/.match(api_version) fail "invalid version string #{api_version}" if regex_match_rsp.nil? int_api_version = 0 From 4362da797d7cc83e964fdc274ed746f064e146b6 Mon Sep 17 00:00:00 2001 From: Puneet Khushwani Date: Tue, 26 Jun 2018 17:33:02 +0530 Subject: [PATCH 4/7] fix to have patch versions hit minor version API endpoints --- lib/ost-sdk-ruby/saas/base.rb | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/ost-sdk-ruby/saas/base.rb b/lib/ost-sdk-ruby/saas/base.rb index 9485149..5c31413 100644 --- a/lib/ost-sdk-ruby/saas/base.rb +++ b/lib/ost-sdk-ruby/saas/base.rb @@ -22,7 +22,7 @@ def initialize(params) fail 'missing API Key' if params[:api_key].nil? fail 'missing API Secret' if params[:api_secret].nil? - params[:api_base_url].gsub!(/\/$/, '') # remove trailing slash + params[:api_base_url] = sanitize_api_base_url(params[:api_base_url]) @http_helper = OSTSdk::Util::HTTPHelper.new(params) @@ -51,6 +51,32 @@ def get_id!(params) id end + # Sanitize API Base URL + # + # Arguments: + # params: (String) + # + # Returns: + # api_base_url: (String) + # + def sanitize_api_base_url(api_base_url) + + api_base_url = api_base_url.gsub(/\/$/, '') # remove trailing slash + + version_str = api_base_url.split('/')[-1] + + return api_base_url unless version_str.include?('v') + + buffer = version_str.split('.') + if buffer.length == 3 # dot count in version == 2 ie. version had a patch version ex. v1.0.0 + regex_match_rsp = /^(.+)(\.\d{1,3})(\/{0,1})$/.match(api_base_url) + api_base_url = regex_match_rsp[1] + end + + return api_base_url + + end + end end From 24f47b1e83d3ebafc3cab524b0640aca6efb009d Mon Sep 17 00:00:00 2001 From: Puneet Khushwani Date: Tue, 26 Jun 2018 18:39:36 +0530 Subject: [PATCH 5/7] removed support for patch API versions and added hard checks on API versions --- lib/ost-sdk-ruby/saas/base.rb | 10 ------ lib/ost-sdk-ruby/saas/services.rb | 52 +++++++------------------------ 2 files changed, 11 insertions(+), 51 deletions(-) diff --git a/lib/ost-sdk-ruby/saas/base.rb b/lib/ost-sdk-ruby/saas/base.rb index 5c31413..bc3020d 100644 --- a/lib/ost-sdk-ruby/saas/base.rb +++ b/lib/ost-sdk-ruby/saas/base.rb @@ -63,16 +63,6 @@ def sanitize_api_base_url(api_base_url) api_base_url = api_base_url.gsub(/\/$/, '') # remove trailing slash - version_str = api_base_url.split('/')[-1] - - return api_base_url unless version_str.include?('v') - - buffer = version_str.split('.') - if buffer.length == 3 # dot count in version == 2 ie. version had a patch version ex. v1.0.0 - regex_match_rsp = /^(.+)(\.\d{1,3})(\/{0,1})$/.match(api_base_url) - api_base_url = regex_match_rsp[1] - end - return api_base_url end diff --git a/lib/ost-sdk-ruby/saas/services.rb b/lib/ost-sdk-ruby/saas/services.rb index 91d4299..5cdeec9 100644 --- a/lib/ost-sdk-ruby/saas/services.rb +++ b/lib/ost-sdk-ruby/saas/services.rb @@ -31,59 +31,29 @@ def initialize(params) def set_manifest(params) - int_api_version = extract_integer_api_version(params[:api_base_url]) + api_version = extract_api_version(params[:api_base_url]) # Provide access to version specific API endpoints - if int_api_version >= v1dot2_int_api_version - fail 'Unsupported API Version. Please check for new versions of SDK.' - elsif int_api_version >= v1dot1_int_api_version - @services = OSTSdk::Saas::V1Dot1::Services.new(params) - elsif int_api_version >= v1_int_api_version - @services = OSTSdk::Saas::V1::Services.new(params) - else + if api_version == '' # puts("You are using an deprecated version of OST API. Please update to the latest version.") @services = OSTSdk::Saas::V0::Services.new(params) + elsif api_version == 'v1' + @services = OSTSdk::Saas::V1::Services.new(params) + elsif api_version == 'v1.1' + @services = OSTSdk::Saas::V1Dot1::Services.new(params) + else + fail 'Api endpoint is invalid' end end - def extract_integer_api_version(api_base_url) + def extract_api_version(api_base_url) api_version = ((api_base_url || '').split("/")[3] || '').downcase - return v0_int_api_version if api_version == '' - - regex_match_rsp = /^v(\d{1,3})\.?(\d{0,3})\.?(\*|\d{0,3})$/.match(api_version) - fail "invalid version string #{api_version}" if regex_match_rsp.nil? - - int_api_version = 0 - - # add API major version - int_api_version += regex_match_rsp[1].to_i * 1000000 - - # add API minor version - int_api_version += (regex_match_rsp[2] == '' ? 0 : regex_match_rsp[2].to_i * 1000) + api_major_version = (api_version.split('.')[0] || '') - # add API Patch Version - int_api_version += (regex_match_rsp[3] == '' ? 0 : regex_match_rsp[3].to_i) - - return int_api_version - - end - - def v0_int_api_version - 0 - end - - def v1_int_api_version - 1000000 - end - - def v1dot1_int_api_version - 1001000 - end + return api_major_version - def v1dot2_int_api_version - 1002000 end end From eaaf007b63af0d7eb75ab51979765ef4c48967c4 Mon Sep 17 00:00:00 2001 From: AnaghaMurtarkar Date: Wed, 27 Jun 2018 12:57:08 +0530 Subject: [PATCH 6/7] handle v1.1 version of API --- lib/ost-sdk-ruby/saas/services.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/ost-sdk-ruby/saas/services.rb b/lib/ost-sdk-ruby/saas/services.rb index 5cdeec9..195e85a 100644 --- a/lib/ost-sdk-ruby/saas/services.rb +++ b/lib/ost-sdk-ruby/saas/services.rb @@ -50,9 +50,8 @@ def set_manifest(params) def extract_api_version(api_base_url) api_version = ((api_base_url || '').split("/")[3] || '').downcase - api_major_version = (api_version.split('.')[0] || '') - return api_major_version + return api_version end From 47ba0e4e72e1bc04292b644e53e8342b54c2b281 Mon Sep 17 00:00:00 2001 From: Puneet Khushwani Date: Fri, 29 Jun 2018 16:21:10 +0530 Subject: [PATCH 7/7] change log changes --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c8cf090..54fe1d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -[OST Ruby SDK v1.0.1](https://github.com/OpenSTFoundation/ost-sdk-ruby/tree/v1.0.1) June 20 2018 +[OST Ruby SDK v1.1.0](https://github.com/OpenSTFoundation/ost-sdk-ruby/tree/v1.1.0) July 2 2018 --- * Added user balances module to V1 API's