diff --git a/lib/betfair_api_ng_rails.rb b/lib/betfair_api_ng_rails.rb index 8ed564ddae227e6c31c10d4c732286f6deb2dd34..2dc261c3d4787defefe474ef596bba1cc2573410 100644 --- a/lib/betfair_api_ng_rails.rb +++ b/lib/betfair_api_ng_rails.rb @@ -15,8 +15,10 @@ module BetfairApiNgRails autoload :Provider, 'betfair_api_ng_rails/api/provider' autoload :SessionManager, 'betfair_api_ng_rails/api/session_manager' - autoload :Connection, 'betfair_api_ng_rails/api/connection' - autoload :Hashalator, 'betfair_api_ng_rails/api/hashalator' + autoload :Connection, 'betfair_api_ng_rails/api/connection' + autoload :Hashalator, 'betfair_api_ng_rails/api/hashalator' + + autoload :RequestMethod, 'betfair_api_ng_rails/api/request_method' module Caching autoload :Helper, 'betfair_api_ng_rails/api/caching/helper' diff --git a/lib/betfair_api_ng_rails/api/constants.rb b/lib/betfair_api_ng_rails/api/constants.rb index 21c9c68f1efcb3d97d6dc237ba46e5e722fb88aa..96d3ecf0922f89f50da5397febf8c2301d93ff11 100644 --- a/lib/betfair_api_ng_rails/api/constants.rb +++ b/lib/betfair_api_ng_rails/api/constants.rb @@ -58,6 +58,11 @@ module BetfairApiNgRails LOGIN_URL = "https://identitysso.betfair.com/api/certlogin" KEEP_ALIVE_URL = "https://identitysso.betfair.com/api/keepAlive" + + API_URL = { + betting: 'https://api-ng.betstores.com/betting/betfair/services/api.betfair.com/exchange/betting/json-rpc/v1', + account: 'https://developer.betfair.com/api.betfair.com/exchange/account/json-rpc/v1' + } end end end diff --git a/lib/betfair_api_ng_rails/api/request_method.rb b/lib/betfair_api_ng_rails/api/request_method.rb new file mode 100644 index 0000000000000000000000000000000000000000..2c869a2091712bcc15423b331178b98523bac78d --- /dev/null +++ b/lib/betfair_api_ng_rails/api/request_method.rb @@ -0,0 +1,35 @@ +module BetfairApiNgRails + module Api + class RequestMethod + include Api::Constants + + attr_reader :name + + def initialize(name) + @name = name + end + + def allowed? + allow_data.any? + end + + def type + return :no_type unless allowed? + allow_data.keys.first + end + + def api_url + return :no_api_url unless allowed? + API_URL[type] + end + + private + + def allow_data + @_allow_data ||= ALLOWED_RESOURCES.keep_if do |k, v| + v.include? name + end + end + end + end +end diff --git a/spec/betfair_api_ng_rails/api/request_method_spec.rb b/spec/betfair_api_ng_rails/api/request_method_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..3182319537c05a2327669917c8fa8bf5d9d018e8 --- /dev/null +++ b/spec/betfair_api_ng_rails/api/request_method_spec.rb @@ -0,0 +1,33 @@ +require 'spec_helper' + +describe BetfairApiNgRails::Api::RequestMethod do + let(:method_name) { 'someMethod' } + + subject(:method) { described_class.new(method_name) } + + context 'has attributes' do + its(:name) { is_expected.to eq(method_name) } + end + + context 'when method is exists in allowed' do + before do + stub_const('BetfairApiNgRails::Api::Constants::ALLOWED_RESOURCES', {betting: [method_name]}) + stub_const('BetfairApiNgRails::Api::Constants::API_URL', {betting: 'api_url'}) + end + + its(:type) { is_expected.to eq(:betting) } + its(:allowed?) { is_expected.to be_truthy } + its(:api_url) { is_expected.to eq('api_url') } + end + + context 'when method is not exists in allowed' do + before do + stub_const('BetfairApiNgRails::Api::Constants::ALLOWED_RESOURCES', {betting: ['someMethod1']}) + stub_const('BetfairApiNgRails::Api::Constants::API_URL', {betting: 'api_url'}) + end + + its(:type) { is_expected.to eq(:no_type) } + its(:allowed?) { is_expected.to be_falsey } + its(:api_url) { is_expected.to eq(:no_api_url) } + end +end