betfair_api_ng_rails 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +12 -1
- data/Rakefile +8 -8
- data/lib/betfair_api_ng_rails/api/connection.rb +3 -0
- data/lib/betfair_api_ng_rails/api/connection_ext/error_handling.rb +31 -0
- data/lib/betfair_api_ng_rails/api/connection_ext/formatting.rb +0 -1
- data/lib/betfair_api_ng_rails/api/connection_ext/parsing.rb +0 -1
- data/lib/betfair_api_ng_rails/api/data/base.rb +2 -1
- data/lib/betfair_api_ng_rails/api/data/competition.rb +7 -6
- data/lib/betfair_api_ng_rails/api/data/competition_result.rb +6 -10
- data/lib/betfair_api_ng_rails/api/data/concerns/attributable.rb +51 -0
- data/lib/betfair_api_ng_rails/api/data/concerns/hashable.rb +7 -2
- data/lib/betfair_api_ng_rails/api/data/concerns/jsonable.rb +46 -0
- data/lib/betfair_api_ng_rails/api/data/constants.rb +1 -1
- data/lib/betfair_api_ng_rails/api/data/country_code_result.rb +5 -8
- data/lib/betfair_api_ng_rails/api/data/event.rb +9 -4
- data/lib/betfair_api_ng_rails/api/data/event_result.rb +5 -8
- data/lib/betfair_api_ng_rails/api/data/event_type.rb +5 -4
- data/lib/betfair_api_ng_rails/api/data/event_type_result.rb +5 -8
- data/lib/betfair_api_ng_rails/api/data/ex_best_offers_overrides.rb +24 -0
- data/lib/betfair_api_ng_rails/api/data/exchange_prices.rb +16 -0
- data/lib/betfair_api_ng_rails/api/data/market_book.rb +31 -0
- data/lib/betfair_api_ng_rails/api/data/market_catalogue.rb +23 -0
- data/lib/betfair_api_ng_rails/api/data/market_description.rb +29 -0
- data/lib/betfair_api_ng_rails/api/data/market_filter.rb +18 -1
- data/lib/betfair_api_ng_rails/api/data/market_type_result.rb +5 -8
- data/lib/betfair_api_ng_rails/api/data/match.rb +19 -0
- data/lib/betfair_api_ng_rails/api/data/order.rb +29 -0
- data/lib/betfair_api_ng_rails/api/data/price_projection.rb +23 -0
- data/lib/betfair_api_ng_rails/api/data/price_size.rb +15 -0
- data/lib/betfair_api_ng_rails/api/data/runner.rb +24 -0
- data/lib/betfair_api_ng_rails/api/data/runner_catalog.rb +19 -0
- data/lib/betfair_api_ng_rails/api/data/starting_prices.rb +18 -0
- data/lib/betfair_api_ng_rails/api/data/time_range.rb +5 -4
- data/lib/betfair_api_ng_rails/api/data/time_range_result.rb +5 -8
- data/lib/betfair_api_ng_rails/api/data/venue_result.rb +5 -8
- data/lib/betfair_api_ng_rails/api/hashalator.rb +2 -1
- data/lib/betfair_api_ng_rails/api/parsers/base.rb +0 -2
- data/lib/betfair_api_ng_rails/api/parsers/list_market_book.rb +15 -0
- data/lib/betfair_api_ng_rails/api/parsers/list_market_catalogue.rb +15 -0
- data/lib/betfair_api_ng_rails/api/request_methods.rb +9 -1
- data/lib/betfair_api_ng_rails/errors.rb +7 -0
- data/lib/betfair_api_ng_rails/version.rb +1 -1
- data/lib/betfair_api_ng_rails.rb +41 -25
- data/spec/betfair_api_ng_rails/api/connection_spec.rb +3 -1
- data/spec/betfair_api_ng_rails/api/data/competition_result_spec.rb +15 -0
- data/spec/betfair_api_ng_rails/api/data/competition_spec.rb +7 -0
- data/spec/betfair_api_ng_rails/api/data/concerns/attributable_spec.rb +156 -0
- data/spec/betfair_api_ng_rails/api/data/concerns/hashable_spec.rb +44 -0
- data/spec/betfair_api_ng_rails/api/data/concerns/jsonable_spec.rb +170 -0
- data/spec/betfair_api_ng_rails/api/data/country_code_result_spec.rb +7 -0
- data/spec/betfair_api_ng_rails/api/data/event_result_spec.rb +16 -0
- data/spec/betfair_api_ng_rails/api/data/event_spec.rb +7 -0
- data/spec/betfair_api_ng_rails/api/data/event_type_result_spec.rb +16 -0
- data/spec/betfair_api_ng_rails/api/data/event_type_spec.rb +7 -0
- data/spec/betfair_api_ng_rails/api/data/ex_best_offers_overrides_spec.rb +7 -0
- data/spec/betfair_api_ng_rails/api/data/exchange_prices_spec.rb +15 -0
- data/spec/betfair_api_ng_rails/api/data/market_book_spec.rb +15 -0
- data/spec/betfair_api_ng_rails/api/data/market_catalogue_spec.rb +39 -0
- data/spec/betfair_api_ng_rails/api/data/market_description_spec.rb +7 -0
- data/spec/betfair_api_ng_rails/api/data/market_filter_spec.rb +7 -0
- data/spec/betfair_api_ng_rails/api/data/market_type_result_spec.rb +7 -0
- data/spec/betfair_api_ng_rails/api/data/match_spec.rb +7 -0
- data/spec/betfair_api_ng_rails/api/data/order_spec.rb +7 -0
- data/spec/betfair_api_ng_rails/api/data/price_projection_spec.rb +15 -0
- data/spec/betfair_api_ng_rails/api/data/price_size_spec.rb +7 -0
- data/spec/betfair_api_ng_rails/api/data/runner_catalog_spec.rb +7 -0
- data/spec/betfair_api_ng_rails/api/data/runner_spec.rb +33 -0
- data/spec/betfair_api_ng_rails/api/data/starting_prices_spec.rb +7 -0
- data/spec/betfair_api_ng_rails/api/data/time_range_result_spec.rb +17 -0
- data/spec/betfair_api_ng_rails/api/data/time_range_spec.rb +7 -0
- data/spec/betfair_api_ng_rails/api/data/venue_result_spec.rb +7 -0
- data/spec/betfair_api_ng_rails/api/hashalator_spec.rb +34 -4
- data/spec/betfair_api_ng_rails/api/request_methods_spec.rb +20 -0
- data/spec/betfair_api_ng_rails/integration/list_market_book_spec.rb +19 -0
- data/spec/betfair_api_ng_rails/integration/list_market_catalogue_spec.rb +36 -0
- data/spec/support/base_yaml_loader.rb +21 -0
- data/spec/support/data/models.yml +205 -0
- data/spec/support/data_models_yaml_loader.rb +7 -0
- data/spec/support/helper.rb +9 -0
- data/spec/support/shared_examples/data_model.rb +35 -0
- data/spec/support/shared_examples/simple_list_filtering_request.rb +3 -1
- metadata +100 -18
- data/lib/betfair_api_ng_rails/api/data/attributes.rb +0 -50
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3a846cee18d46f60c19a677111624b07cb5673ce
|
4
|
+
data.tar.gz: 5bbef065b3ef31d43d789d1daef6e347aa4d4678
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8be49808b5673fc0dfd9aebfb786743d2749703d07adbd5de2ae171c518a1bd825c2d5a1af971e675a1e5af7f2d27034d96d7248022b13e1bceedb9b275d1bed
|
7
|
+
data.tar.gz: ed938a79784a41ddb3fff8dd18550d6b98c7b21bed9af4922eb2e67c1be180cd3c544559b789d13c893728a92fe0a65558e1349d4a989da9ef2a3f635f0468aa
|
data/README.md
CHANGED
@@ -35,7 +35,14 @@ In this files you must specify credentials to API-NG. Also you should notice tha
|
|
35
35
|
|
36
36
|
## Usage
|
37
37
|
|
38
|
-
Please check [wiki pages](https://github.com/alterego-labs/betfair_api_ng_rails/wiki).
|
38
|
+
Please check [wiki pages](https://github.com/alterego-labs/betfair_api_ng_rails/wiki).
|
39
|
+
|
40
|
+
## CHANGES IN 1.1.0
|
41
|
+
|
42
|
+
1. Supporting all [Simple listing filtered requests](https://github.com/alterego-labs/betfair_api_ng_rails/wiki/Simple-listing-filtered-requests)
|
43
|
+
2. Supporting **listMarketCatalogue** and **listMarketBook** methods
|
44
|
+
3. Raising APINGException if error occurred similar official API-NG
|
45
|
+
4. Refactoring and testing
|
39
46
|
|
40
47
|
## CHANGES IN 1.0.0
|
41
48
|
|
@@ -51,6 +58,10 @@ Please check [wiki pages](https://github.com/alterego-labs/betfair_api_ng_rails/
|
|
51
58
|
4. Added shortcuts for models
|
52
59
|
5. Refactoring
|
53
60
|
|
61
|
+
## Specs
|
62
|
+
|
63
|
+
You may running all specs by `rspec spec --color` to be sure that all is alright.
|
64
|
+
|
54
65
|
## Contributing
|
55
66
|
|
56
67
|
1. Fork it
|
data/Rakefile
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
require "rubygems"
|
2
|
-
require 'rspec/core/rake_task'
|
3
|
-
require 'rubygems/specification'
|
2
|
+
# require 'rspec/core/rake_task'
|
3
|
+
# require 'rubygems/specification'
|
4
4
|
|
5
|
-
task default: :spec
|
6
|
-
desc "Run specs"
|
7
|
-
RSpec::Core::RakeTask.new do |t|
|
8
|
-
|
9
|
-
|
10
|
-
end
|
5
|
+
# task default: :spec
|
6
|
+
# desc "Run specs"
|
7
|
+
# RSpec::Core::RakeTask.new do |t|
|
8
|
+
# t.pattern = FileList['spec/**/*_spec.rb']
|
9
|
+
# t.rspec_opts = %w(--color)
|
10
|
+
# end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require "betfair_api_ng_rails/errors"
|
2
|
+
|
1
3
|
module BetfairApiNgRails
|
2
4
|
module Api
|
3
5
|
class Connection
|
@@ -12,6 +14,7 @@ module BetfairApiNgRails
|
|
12
14
|
provider.fetch method: method, params: hashing(params)
|
13
15
|
end
|
14
16
|
|
17
|
+
include Api::ConnectionExt::ErrorHandling
|
15
18
|
include Api::ConnectionExt::Parsing
|
16
19
|
include Api::ConnectionExt::Formatting
|
17
20
|
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'active_support/inflector'
|
2
|
+
require "betfair_api_ng_rails/errors"
|
3
|
+
|
4
|
+
module BetfairApiNgRails
|
5
|
+
module Api
|
6
|
+
module ConnectionExt
|
7
|
+
module ErrorHandling
|
8
|
+
include BetfairApiNgRails::Api::Constants
|
9
|
+
|
10
|
+
def self.included(base)
|
11
|
+
base.send :class_eval, <<-CODE
|
12
|
+
def request_with_error_handling(method, params = {})
|
13
|
+
res = request_without_error_handling(method, params)
|
14
|
+
raise_exception(res.error_info) if res.has_error?
|
15
|
+
res
|
16
|
+
end
|
17
|
+
alias_method :request_without_error_handling, :request
|
18
|
+
alias_method :request, :request_with_error_handling
|
19
|
+
CODE
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def raise_exception(error)
|
25
|
+
raise BetfairApiNgRails::APINGException.new(error), "Error in #{error[:type]} section"
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -4,7 +4,8 @@ module BetfairApiNgRails
|
|
4
4
|
module Api
|
5
5
|
module Data
|
6
6
|
class Base
|
7
|
-
include Api::Data::
|
7
|
+
include Api::Data::Concerns::Attributable
|
8
|
+
include Api::Data::Concerns::Jsonable
|
8
9
|
|
9
10
|
def initialize(args = {})
|
10
11
|
args.each { |attribute, value| self.send("#{attribute}=", value) }
|
@@ -4,12 +4,13 @@ module BetfairApiNgRails
|
|
4
4
|
class Competition < Api::Data::Base
|
5
5
|
include Api::Data::Concerns::Hashable
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
7
|
+
COMPETITION_ATTRS = [
|
8
|
+
:id,
|
9
|
+
:name
|
10
|
+
]
|
11
|
+
|
12
|
+
attributes COMPETITION_ATTRS
|
13
|
+
|
13
14
|
def self.to_hash_attrs
|
14
15
|
COMPETITION_ATTRS
|
15
16
|
end
|
@@ -3,17 +3,13 @@ module BetfairApiNgRails
|
|
3
3
|
module Data
|
4
4
|
class CompetitionResult < Api::Data::Base
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
COMPETITION_RESULT_ATTRS = [
|
7
|
+
:market_count,
|
8
|
+
:competition_region,
|
9
|
+
{competition: {type: BetfairApiNgRails::Competition} }
|
10
|
+
]
|
9
11
|
|
10
|
-
|
11
|
-
new(
|
12
|
-
competition: Api::Data::Competition.from_json(json_row['competition']),
|
13
|
-
market_count: json_row['marketCount'],
|
14
|
-
competition_region: json_row['competitionRegion']
|
15
|
-
)
|
16
|
-
end
|
12
|
+
attributes COMPETITION_RESULT_ATTRS
|
17
13
|
|
18
14
|
end
|
19
15
|
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module BetfairApiNgRails
|
2
|
+
module Api
|
3
|
+
module Data
|
4
|
+
module Concerns
|
5
|
+
module Attributable
|
6
|
+
|
7
|
+
DEFAULT_OPTIONS = { type: String, array: false }
|
8
|
+
|
9
|
+
def self.included(base)
|
10
|
+
base.send :extend, ClassMethods
|
11
|
+
end
|
12
|
+
|
13
|
+
module ClassMethods
|
14
|
+
|
15
|
+
def attributes(attrs)
|
16
|
+
define_class_attrs attrs
|
17
|
+
define_attr_accessors
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def define_class_attrs(attrs)
|
23
|
+
class << self; attr_accessor :class_attrs; end
|
24
|
+
self.class_attrs = process_attributes(attrs)
|
25
|
+
end
|
26
|
+
|
27
|
+
def process_attributes(attrs)
|
28
|
+
attrs.each_with_object({}) do |a, h|
|
29
|
+
h[fetch_attr_name(a)] = fetch_attr_options(a)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def define_attr_accessors
|
34
|
+
self.class_attrs.each { |name, options| class_eval("attr_accessor :#{name}") }
|
35
|
+
end
|
36
|
+
|
37
|
+
def fetch_attr_name(attrib)
|
38
|
+
attrib.is_a?(Hash) ? attrib.keys.first : attrib
|
39
|
+
end
|
40
|
+
|
41
|
+
def fetch_attr_options(attrib)
|
42
|
+
attrib.is_a?(Hash) ? DEFAULT_OPTIONS.merge(attrib.values.first) : DEFAULT_OPTIONS
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -13,8 +13,9 @@ module BetfairApiNgRails
|
|
13
13
|
|
14
14
|
def attributes_hash
|
15
15
|
self.class.to_hash_attrs.each_with_object({}) do |a, h|
|
16
|
-
|
17
|
-
|
16
|
+
key = get_attr_key(a)
|
17
|
+
val = get_attr_value(key)
|
18
|
+
h[get_attr_key(key)] = val unless val.nil?
|
18
19
|
end
|
19
20
|
end
|
20
21
|
|
@@ -22,6 +23,10 @@ module BetfairApiNgRails
|
|
22
23
|
self.send attrib
|
23
24
|
end
|
24
25
|
|
26
|
+
def get_attr_key(attrib)
|
27
|
+
attrib.is_a?(Hash) ? attrib.keys.first : attrib
|
28
|
+
end
|
29
|
+
|
25
30
|
end
|
26
31
|
end
|
27
32
|
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module BetfairApiNgRails
|
2
|
+
module Api
|
3
|
+
module Data
|
4
|
+
module Concerns
|
5
|
+
module Jsonable
|
6
|
+
|
7
|
+
def self.included(base)
|
8
|
+
base.send :extend, ClassMethods
|
9
|
+
end
|
10
|
+
|
11
|
+
module ClassMethods
|
12
|
+
|
13
|
+
def from_json(data = {})
|
14
|
+
return nil unless self.respond_to?(:class_attrs)
|
15
|
+
self.new set_attributes(data)
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def set_attributes(data)
|
21
|
+
self.class_attrs.each_with_object({}) do |(name, options), h|
|
22
|
+
h[name] = get_attr_value(data, name, options)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def json_key(attrib)
|
27
|
+
attrib.to_s.camelize(:lower)
|
28
|
+
end
|
29
|
+
|
30
|
+
def get_attr_value(data, name, options)
|
31
|
+
j_data = data[json_key(name)]
|
32
|
+
return nil unless j_data
|
33
|
+
options[:array] ? j_data.map { |r| prepare_value(options[:type], r) } : prepare_value(options[:type], j_data)
|
34
|
+
end
|
35
|
+
|
36
|
+
def prepare_value(type, data)
|
37
|
+
type == String ? data : type.from_json(data)
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -3,15 +3,12 @@ module BetfairApiNgRails
|
|
3
3
|
module Data
|
4
4
|
class CountryCodeResult < Api::Data::Base
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
COUNTRY_CODE_RESULT_ATTRS = [
|
7
|
+
:market_count,
|
8
|
+
:country_code
|
9
|
+
]
|
8
10
|
|
9
|
-
|
10
|
-
new(
|
11
|
-
country_code: json_row['countryCode'],
|
12
|
-
market_count: json_row['marketCount']
|
13
|
-
)
|
14
|
-
end
|
11
|
+
attributes COUNTRY_CODE_RESULT_ATTRS
|
15
12
|
|
16
13
|
end
|
17
14
|
end
|
@@ -4,11 +4,16 @@ module BetfairApiNgRails
|
|
4
4
|
class Event < Api::Data::Base
|
5
5
|
include Api::Data::Concerns::Hashable
|
6
6
|
|
7
|
-
|
7
|
+
EVENT_ATTRS = [
|
8
|
+
:id,
|
9
|
+
:name,
|
10
|
+
:timezone,
|
11
|
+
:country_code,
|
12
|
+
:venue,
|
13
|
+
:open_date
|
14
|
+
]
|
8
15
|
|
9
|
-
|
10
|
-
new EVENT_ATTRS.inject({}) { |h, a| h[a] = json_row[a.to_s.camelize(:lower)]; h }
|
11
|
-
end
|
16
|
+
attributes EVENT_ATTRS
|
12
17
|
|
13
18
|
def self.to_hash_attrs
|
14
19
|
EVENT_ATTRS
|
@@ -3,15 +3,12 @@ module BetfairApiNgRails
|
|
3
3
|
module Data
|
4
4
|
class EventResult < Api::Data::Base
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
EVENT_RESULT_ATTRS = [
|
7
|
+
:market_count,
|
8
|
+
{event: { type: BetfairApiNgRails::Event }}
|
9
|
+
]
|
8
10
|
|
9
|
-
|
10
|
-
new(
|
11
|
-
event: Api::Data::Event.from_json(json_row['event']),
|
12
|
-
market_count: json_row['marketCount']
|
13
|
-
)
|
14
|
-
end
|
11
|
+
attributes EVENT_RESULT_ATTRS
|
15
12
|
|
16
13
|
end
|
17
14
|
end
|
@@ -4,11 +4,12 @@ module BetfairApiNgRails
|
|
4
4
|
class EventType < Api::Data::Base
|
5
5
|
include Api::Data::Concerns::Hashable
|
6
6
|
|
7
|
-
|
7
|
+
EVENT_TYPE_ATTRS = [
|
8
|
+
:id,
|
9
|
+
:name
|
10
|
+
]
|
8
11
|
|
9
|
-
|
10
|
-
new EVENT_TYPE_ATTRS.inject({}) { |h, a| h[a] = json_row[a.to_s.camelize(:lower)]; h }
|
11
|
-
end
|
12
|
+
attributes EVENT_TYPE_ATTRS
|
12
13
|
|
13
14
|
def self.to_hash_attrs
|
14
15
|
EVENT_TYPE_ATTRS
|
@@ -3,15 +3,12 @@ module BetfairApiNgRails
|
|
3
3
|
module Data
|
4
4
|
class EventTypeResult < Api::Data::Base
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
EVENT_TYPE_RESULT_ATTRS = [
|
7
|
+
:market_count,
|
8
|
+
{event_type: {type: BetfairApiNgRails::EventType}}
|
9
|
+
]
|
8
10
|
|
9
|
-
|
10
|
-
new(
|
11
|
-
event_type: Api::Data::EventType.from_json(json_row['eventType']),
|
12
|
-
market_count: json_row['marketCount']
|
13
|
-
)
|
14
|
-
end
|
11
|
+
attributes EVENT_TYPE_RESULT_ATTRS
|
15
12
|
|
16
13
|
end
|
17
14
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module BetfairApiNgRails
|
2
|
+
module Api
|
3
|
+
module Data
|
4
|
+
class ExBestOffersOverrides < Api::Data::Base
|
5
|
+
include Api::Data::Concerns::Hashable
|
6
|
+
|
7
|
+
EX_BEST_OFFERS_OVERRIDES_ATTRS = [
|
8
|
+
:best_prices_depth,
|
9
|
+
:rollup_model,
|
10
|
+
:rollup_limit,
|
11
|
+
:rollup_liability_threshold,
|
12
|
+
:rollup_liability_factor
|
13
|
+
]
|
14
|
+
|
15
|
+
attributes EX_BEST_OFFERS_OVERRIDES_ATTRS
|
16
|
+
|
17
|
+
def self.to_hash_attrs
|
18
|
+
EX_BEST_OFFERS_OVERRIDES_ATTRS
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module BetfairApiNgRails
|
2
|
+
module Api
|
3
|
+
module Data
|
4
|
+
class ExchangePrices < Api::Data::Base
|
5
|
+
|
6
|
+
EXCHANGE_PRICES_ATTRS = [
|
7
|
+
{available_to_back: { type: BetfairApiNgRails::PriceSize, array: true }},
|
8
|
+
{available_to_lay: { type: BetfairApiNgRails::PriceSize, array: true }},
|
9
|
+
{traded_volume: { type: BetfairApiNgRails::PriceSize, array: true }}
|
10
|
+
]
|
11
|
+
|
12
|
+
attributes EXCHANGE_PRICES_ATTRS
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module BetfairApiNgRails
|
2
|
+
module Api
|
3
|
+
module Data
|
4
|
+
class MarketBook < Api::Data::Base
|
5
|
+
|
6
|
+
MARKET_BOOK_ATTRS = [
|
7
|
+
:market_id,
|
8
|
+
:is_market_data_delayed,
|
9
|
+
:status,
|
10
|
+
:bet_delay,
|
11
|
+
:bsp_reconciled,
|
12
|
+
:complete,
|
13
|
+
:inplay,
|
14
|
+
:number_of_runners,
|
15
|
+
:number_of_winners,
|
16
|
+
:number_of_active_runners,
|
17
|
+
:last_match_time,
|
18
|
+
:total_matched,
|
19
|
+
:total_available,
|
20
|
+
:cross_matching,
|
21
|
+
:runners_voidable,
|
22
|
+
:version,
|
23
|
+
{runners: { type: BetfairApiNgRails::Runner, array: true }}
|
24
|
+
]
|
25
|
+
|
26
|
+
attributes MARKET_BOOK_ATTRS
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module BetfairApiNgRails
|
2
|
+
module Api
|
3
|
+
module Data
|
4
|
+
class MarketCatalogue < Api::Data::Base
|
5
|
+
|
6
|
+
MARKET_CATALOGUE_ATTRS = [
|
7
|
+
:market_id,
|
8
|
+
:market_name,
|
9
|
+
:market_start_time,
|
10
|
+
:total_matched,
|
11
|
+
{description: { type: BetfairApiNgRails::MarketDescription }},
|
12
|
+
{runners: { type: BetfairApiNgRails::RunnerCatalog, array: true }},
|
13
|
+
{event_type: { type: BetfairApiNgRails::EventType }},
|
14
|
+
{competition: { type: BetfairApiNgRails::Competition }},
|
15
|
+
{event: { type: BetfairApiNgRails::Event }}
|
16
|
+
]
|
17
|
+
|
18
|
+
attributes MARKET_CATALOGUE_ATTRS
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module BetfairApiNgRails
|
2
|
+
module Api
|
3
|
+
module Data
|
4
|
+
class MarketDescription < Api::Data::Base
|
5
|
+
|
6
|
+
MARKET_DESCRIPTION_ATTRS = [
|
7
|
+
:persistence_enabled,
|
8
|
+
:bsp_market,
|
9
|
+
:market_time,
|
10
|
+
:suspend_time,
|
11
|
+
:settle_time,
|
12
|
+
:betting_type,
|
13
|
+
:turn_in_play_enabled,
|
14
|
+
:market_type,
|
15
|
+
:regulator,
|
16
|
+
:market_base_rate,
|
17
|
+
:discount_allowed,
|
18
|
+
:wallet,
|
19
|
+
:rules,
|
20
|
+
:rules_has_date,
|
21
|
+
:clarifications
|
22
|
+
]
|
23
|
+
|
24
|
+
attributes MARKET_DESCRIPTION_ATTRS
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -4,7 +4,24 @@ module BetfairApiNgRails
|
|
4
4
|
class MarketFilter < Api::Data::Base
|
5
5
|
include Api::Data::Concerns::Hashable
|
6
6
|
|
7
|
-
|
7
|
+
MARKET_FILTER_ATTRS = [
|
8
|
+
:text_query,
|
9
|
+
:exchange_ids,
|
10
|
+
:event_type_ids,
|
11
|
+
:event_ids,
|
12
|
+
:competition_ids,
|
13
|
+
:venues,
|
14
|
+
:bsp_only,
|
15
|
+
:turn_in_play_enabled,
|
16
|
+
:in_play_only,
|
17
|
+
:market_betting_types,
|
18
|
+
:market_countries,
|
19
|
+
:market_type_codes,
|
20
|
+
:market_start_time,
|
21
|
+
:with_orders
|
22
|
+
]
|
23
|
+
|
24
|
+
attributes MARKET_FILTER_ATTRS
|
8
25
|
|
9
26
|
def self.to_hash_attrs
|
10
27
|
MARKET_FILTER_ATTRS
|
@@ -3,15 +3,12 @@ module BetfairApiNgRails
|
|
3
3
|
module Data
|
4
4
|
class MarketTypeResult < Api::Data::Base
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
MARKET_TYPE_RESULT_ATTRS = [
|
7
|
+
:market_count,
|
8
|
+
:market_type
|
9
|
+
]
|
8
10
|
|
9
|
-
|
10
|
-
new(
|
11
|
-
market_type: json_row['marketType'],
|
12
|
-
market_count: json_row['marketCount']
|
13
|
-
)
|
14
|
-
end
|
11
|
+
attributes MARKET_TYPE_RESULT_ATTRS
|
15
12
|
|
16
13
|
end
|
17
14
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module BetfairApiNgRails
|
2
|
+
module Api
|
3
|
+
module Data
|
4
|
+
class Order < Api::Data::Base
|
5
|
+
|
6
|
+
ORDER_ATTRS = [
|
7
|
+
:bet_id,
|
8
|
+
:order_type,
|
9
|
+
:status,
|
10
|
+
:persistence_type,
|
11
|
+
:side,
|
12
|
+
:price,
|
13
|
+
:size,
|
14
|
+
:bsp_liability,
|
15
|
+
:placed_date,
|
16
|
+
:avg_price_matched,
|
17
|
+
:size_matched,
|
18
|
+
:size_remaining,
|
19
|
+
:size_lapsed,
|
20
|
+
:size_cancelled,
|
21
|
+
:size_voided
|
22
|
+
]
|
23
|
+
|
24
|
+
attributes ORDER_ATTRS
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module BetfairApiNgRails
|
2
|
+
module Api
|
3
|
+
module Data
|
4
|
+
class PriceProjection < Api::Data::Base
|
5
|
+
include Api::Data::Concerns::Hashable
|
6
|
+
|
7
|
+
PRICE_PROJECTION_ATTRS = [
|
8
|
+
:price_data,
|
9
|
+
{ex_best_offers_overrides: { type: BetfairApiNgRails::ExBestOffersOverrides }},
|
10
|
+
:virtualise,
|
11
|
+
:rollover_stakes
|
12
|
+
]
|
13
|
+
|
14
|
+
attributes PRICE_PROJECTION_ATTRS
|
15
|
+
|
16
|
+
def self.to_hash_attrs
|
17
|
+
PRICE_PROJECTION_ATTRS
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|