{"id":23175806,"url":"https://github.com/blakegearin/folding_at_home_client","last_synced_at":"2026-03-06T17:36:29.932Z","repository":{"id":220713738,"uuid":"747544300","full_name":"blakegearin/folding_at_home_client","owner":"blakegearin","description":"Ruby client for the Folding@home API","archived":false,"fork":false,"pushed_at":"2025-07-22T05:43:51.000Z","size":72,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-01T19:20:39.373Z","etag":null,"topics":["folding-at-home","foldingathome","ruby-client","ruby-gem"],"latest_commit_sha":null,"homepage":"https://rubygems.org/gems/folding_at_home_client","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/blakegearin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-01-24T06:25:13.000Z","updated_at":"2025-07-22T05:43:55.000Z","dependencies_parsed_at":"2024-08-29T07:28:02.454Z","dependency_job_id":"59defd22-5c0f-48fc-a917-efd380bd09f3","html_url":"https://github.com/blakegearin/folding_at_home_client","commit_stats":null,"previous_names":["blakegearin/folding_at_home_client"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/blakegearin/folding_at_home_client","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blakegearin%2Ffolding_at_home_client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blakegearin%2Ffolding_at_home_client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blakegearin%2Ffolding_at_home_client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blakegearin%2Ffolding_at_home_client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blakegearin","download_url":"https://codeload.github.com/blakegearin/folding_at_home_client/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blakegearin%2Ffolding_at_home_client/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30188400,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T17:33:53.563Z","status":"ssl_error","status_checked_at":"2026-03-06T17:33:51.678Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["folding-at-home","foldingathome","ruby-client","ruby-gem"],"created_at":"2024-12-18T06:09:36.704Z","updated_at":"2026-03-06T17:36:29.900Z","avatar_url":"https://github.com/blakegearin.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# folding_at_home_client\n\nRuby client for the [Folding@home API](https://api.foldingathome.org)\n\nNeed more historical data? Try out [`extreme_overclocking_client`](https://github.com/blakegearin/extreme_overclocking_client)\n\n## Getting Started\n\nInstall and add to Gemfile:\n\n```bash\nbundle add folding_at_home_client\n```\n\nInstall without bundler:\n\n```bash\ngem install folding_at_home_client\n```\n\n## Usage\n\n- [Users](#users)\n- [User](#user)\n- [Teams](#teams)\n- [Team](#team)\n- [Projects](#projects)\n- [Project](#project)\n- [Descriptions](#descriptions)\n- [Description](#description)\n- [Managers](#managers)\n- [Manager](#manager)\n- [Causes](#causes)\n- [GPUs](#gpus)\n- [GPU](#gpu)\n\n### Users\n\n```ruby\n# Fetch count of users\nFoldingAtHomeClient::Users.count\n\n# Fetch top users of all-time\nFoldingAtHomeClient::Users.top\n\n# Fetch top users from a specific month\nFoldingAtHomeClient::Users.top(month: 1, year: 2018)\n\n# Fetch daily users (unique based on name and team_id, not user id)\n# Caches the TXT file and limits fetching to every 3 hours\n# Optional: filepath, limit, name, order, page, per_page, position, sort_by, team_id\nFoldingAtHomeClient::Users.daily\nFoldingAtHomeClient::Users.daily(sort_by: :name, order: :desc)\nFoldingAtHomeClient::Users.daily(limit: 5)\nFoldingAtHomeClient::Users.daily(page: 1, per_page: 5)\nFoldingAtHomeClient::Users.daily(name: 'Anonymous')\nFoldingAtHomeClient::Users.daily(team_id: 0)\nFoldingAtHomeClient::Users.daily(name: 'Anonymous', team_id: 0)\nFoldingAtHomeClient::Users.daily(position: 10)\nFoldingAtHomeClient::Users.daily(filepath: 'my_daily_user_summary.txt')\n```\n\n### User\n\n```ruby\nid = 2\nname = \"name\"\npasskey = \"passkey\"\nteam_id = 0\n\n# Create a user\n# Required: id or name\nuser = FoldingAtHomeClient::User.new(id: id)\nuser = FoldingAtHomeClient::User.new(name: name)\nuser = FoldingAtHomeClient::User.new(id: id, name: name)\n\n# Fetch a user's stats, including teams\n# Required: id or name\n# Optional: passkey, team_id\nuser = user.find_by(id: id)\nuser = user.find_by(name: name)\nuser = user.find_by(id: id, name: name)\nuser = user.find_by(id: id, passkey: passkey)\nuser = user.find_by(id: id, team_id: team_id)\nuser = user.find_by(id: id, passkey: passkey, team_id: team_id)\n\n# Fetch a user's list of teams\n# Note: Suffixed with \"_lookup\" since teams is a class attribute\n# Required: id or name\n# Optional: passkey\nteams = user.teams_lookup\nteams = user.teams_lookup(passkey: passkey)\n\n# Fetch a user's list of contributed projects\n# Required: name\nprojects = user.projects\n\n# Fetch a user's bonus stats\n# Required: name\n# Optional: passkey\nbonuses = user.bonuses\nbonuses = user.bonuses(passkey: passkey)\n```\n\n### Teams\n\n```ruby\n# Fetch count of teams\nFoldingAtHomeClient::Teams.count\n\n# Fetch top teams from a specific month\nFoldingAtHomeClient::Teams.top(month: 1, year: 2018)\n```\n\n### Team\n\n```ruby\nid = 1\n\n# Fetch a team\n# Required: id or name\nteam = FoldingAtHomeClient::Team.find_by(id: id)\n\n# Fetch a teams's members\n# Required: id\nmembers = FoldingAtHomeClient::Team.new(id: id).members\n```\n\n### Projects\n\n```ruby\n# Fetch all projects\nFoldingAtHomeClient::Projects.all\n```\n\n### Project\n\n```ruby\nid = 2968\n\nproject = FoldingAtHomeClient::Project.new(id: id)\n\n# Fetch a project\n# Required: id\nproject = project.lookup\n\n# Fetch a project's contributors\n# Required: id\ncontributors = project.contributors\n\n# Fetch a project's description\n# Required: description_id\ndescription = project.description\n```\n\n### Descriptions\n\n```ruby\n# Fetch all descriptions\ndescriptions = FoldingAtHomeClient::Descriptions.all\n```\n\n### Description\n\n```ruby\nid = 195\n\n# Fetch a description\n# Required: id\ndescription = FoldingAtHomeClient::Description.new(id: id).lookup\n```\n\n### Managers\n\n```ruby\n# Fetch all managers\nmanagers = FoldingAtHomeClient::Managers.all\n```\n\n### Manager\n\n```ruby\nid = 326\n\n# Fetch a manager\n# Required: id\nmanager = FoldingAtHomeClient::Manager.new(id: id).lookup\n```\n\n### Causes\n\n```ruby\n# Fetch all causes\ncauses = FoldingAtHomeClient::Causes.all\n```\n\n### GPUs\n\n```ruby\n# Fetch all GPUs\ngpus = FoldingAtHomeClient::GPUs.all\n```\n\n### GPU\n\n```ruby\nvendor = 4318\ndevice = 5\n\n# Fetch a GPUs\n# Required: device, vendor\ngpu = FoldingAtHomeClient::GPU.find_by(vendor: vendor, device: device)\n```\n\n### Notes\n\nCurrently only `GET` endpoints are supported. It's not exhaustive because some endpoints aren't particularly useful in terms of what they return compared to other endpoints.\n\n## Development\n\nAfter 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.\n\nTo 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](https://rubygems.org).\n\n## Contributing\n\nBug reports, feature requests, and pull requests are welcome.\n\n## Links\n\n- [Folding@home](https://foldingathome.org)\n\n- [Folding@home Download](https://foldingathome.org/start-folding)\n\n- [Folding@home Stats](https://stats.foldingathome.org)\n\n- [EXTREME Overclocking (EOC) Stats](https://folding.extremeoverclocking.com/aggregate_summary.php)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblakegearin%2Ffolding_at_home_client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblakegearin%2Ffolding_at_home_client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblakegearin%2Ffolding_at_home_client/lists"}