5 unstable releases
0.3.1 | Oct 29, 2019 |
---|---|
0.3.0 | Oct 27, 2019 |
0.2.1 | Oct 27, 2019 |
0.2.0 | Oct 27, 2019 |
0.1.0 | Oct 26, 2019 |
#4 in #betting
135KB
3K
SLoC
botfair
0.3.1
The botfair
crate provides Rust bindings for the Betfair SportsAPING.
Documentation for the crate may be found at https://docs.rs, or alternatively in the file lib.rs.
Main git repository: https://git.esotericnonsense.com/pub/botfair.git
Sourcehut: https://git.sr.ht/~esotericnonsense/botfair
GitLab: https://gitlab.com/esotericnonsense/botfair.git
GitHub: https://github.com/esotericnonsense/botfair.git
Contact
Daniel Edgecumbe (esotericnonsense)
lib.rs
:
botfair
0.3.1
The botfair
crate provides Rust bindings for the Betfair SportsAPING.
Login and keep-alive are handled automatically by the BFClient.
See the BFClient
documentation for methods.
BFClient
implements Sync and so can safely be wrapped in an
Arc for multithreaded use with the same session token.
Warranty
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Paid support, consulting, and contracting services are available.
For more information, contact Daniel Edgecumbe at botfair@esotericnonsense.com.
Example
Note that botfair
requires your certificate to be in pfx
format.
In order to achieve this given a key and crt file, you can use the
following openssl command:
openssl pkcs12 -export -out client.pfx \
-inkey client.key -in client.crt
botfair
assumes no password protection for the pfx
file.
use botfair::generated_types::{MarketBook, MarketCatalogue};
use botfair::generated_types::{MarketFilter, MarketId};
use botfair::result::Result;
use botfair::{BFClient, BFCredentials};
fn main() -> Result<()> {
let bf_creds = BFCredentials::new(
"my_username".to_owned(),
"my_password".to_owned(),
"/path/to/pfx/file".to_owned(),
"my_appkey".to_owned()
).unwrap();
let bf_client = BFClient::new(
bf_creds,
None
).unwrap();
// This is all rather verbose at the moment.
// What will the future bring?
let market_filter = MarketFilter {
textQuery: None,
exchangeIds: None,
eventTypeIds: None,
eventIds: None,
competitionIds: None,
marketIds: None,
venues: None,
bspOnly: None,
turnInPlayEnabled: None,
inPlayOnly: None,
marketBettingTypes: None,
marketCountries: None,
marketTypeCodes: None,
marketStartTime: None,
withOrders: None,
raceTypes: None,
};
// List ten arbitrary markets
let catalogues: Vec<MarketCatalogue> =
bf_client.listMarketCatalogue(market_filter, None, None, 10, None)?;
println!("{:?}", catalogues);
Ok(())
}
Generating the bindings
If you just want to use the crate, you can skip this section as the bindings are already present.
To re-generate the bindings from the Betfair XML documentation, you will
need to cd genapi; ./main.sh
which fetches the documentation from
Betfair's servers and runs a python script on them to generate the Rust
bindings.
License
For open source software, botfair
is subject to the GNU AGPLv3, contained
in the document LICENSE.AGPLv3 which should be distributed with the
software.
This means that you need to licence your software under the same terms. In particular, this means that software that makes use of this library must make available its' source code to the users of said software, whether that software is interacted with over a network or by the end users directly.
For closed source software, exceptions may be made at the discretion of the author.
Dependencies
~33MB
~741K SLoC