Skip to content

blakegearin/extreme_overclocking_client

Repository files navigation

extreme_overclocking_client

Ruby client for Extreme Overclocking's Folding@home Data Export

Getting Started

Install and add to Gemfile:

bundle add extreme_overclocking_client

Install without bundler:

gem install extreme_overclocking_client

Usage

Please read the full usage statement from Extreme Overclocking before using. This client has some simplistic rate limiting built-in, but ultimately it's up to consumers of the gem to prevent excessive queries and abuse. Neglecting to do so may result in your IP being blocked.

Data can be retrieved via the Service class or individual classes with a configuration parameter.

Service

service = ExtremeOverclockingClient::Service.new(
  project_url: "https://github.com/blakegearin/extreme_overclocking_client",
  project_name: "ExtremeOverclockingClientTesting",
  project_version: "0.0.1",
)

user_id = 32334
name = "EOC_Jason"
team_id = 11314

# User

user = service.user(id: user_id)
user = service.user(name: name, team_id: team_id)

# Users

users = service.users(ids: [32334, 811139])
hashes = [
  { name: name, team_id: team_id},
  { name: name, team_id: team_id},
]
users = service.users(hashes: hashes)

# Team

team = service.team(id: team_id)

# Teams

teams = service.teams(ids: [11314, 223518])

Config

Provide a project_url and project_name to let Extreme Overclocking know what your project is. These values populate referer and user-agent metadata sent with each request.

config = ExtremeOverclockingClient::Config.new(
  project_url: "https://github.com/blakegearin/extreme_overclocking_client",
  project_name: "ExtremeOverclockingClientTesting",
  project_version: "0.0.1",
)

User

user_id = 32334
name = "EOC_Jason"
team_id = 11314
config = ExtremeOverclockingClient::Config.new(
  project_url: "https://github.com/blakegearin/extreme_overclocking_client",
  project_name: "ExtremeOverclockingClientTesting",
  project_version: "0.0.1",
)

# Fetch a user by id
# Required: config, id
user = ExtremeOverclockingClient::User.new(config: config, id: user_id)

# Fetch a user with a name and team_id
# Required: config, name, team_id
user = ExtremeOverclockingClient::User.new(config: config, name: name, team_id: team_id)

## Update a user with the latest stats
user.refresh

Team

id = 11314
config = ExtremeOverclockingClient::Config.new(
  project_url: "https://github.com/blakegearin/extreme_overclocking_client",
  project_name: "ExtremeOverclockingClientTesting",
  project_version: "0.0.1",
)

# Fetch a team by id
team = ExtremeOverclockingClient::Team.new(config: config, id: id)

## Update a team with the latest stats
team.refresh

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and the created tag, and push the .gem file to rubygems.org.

Contributing

Bug reports, feature requests, and pull requests are welcome.

Links