{"id":24264594,"url":"https://github.com/lukehackett/tfl_api_client","last_synced_at":"2025-09-24T01:30:59.470Z","repository":{"id":35263714,"uuid":"39523742","full_name":"LukeHackett/tfl_api_client","owner":"LukeHackett","description":"This gem aims to provide a simple, programmatic ruby client that allows native ruby applications to seamlessly interact with the Transport for London's live APIs.","archived":false,"fork":false,"pushed_at":"2018-02-13T17:38:19.000Z","size":1397,"stargazers_count":0,"open_issues_count":9,"forks_count":4,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-08-26T02:53:05.142Z","etag":null,"topics":["ruby","ruby-gem","tfl","tfl-api"],"latest_commit_sha":null,"homepage":"https://rubygems.org/gems/tfl_api_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/LukeHackett.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-07-22T18:40:02.000Z","updated_at":"2017-04-18T16:40:18.000Z","dependencies_parsed_at":"2022-09-05T16:50:15.142Z","dependency_job_id":null,"html_url":"https://github.com/LukeHackett/tfl_api_client","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/LukeHackett/tfl_api_client","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LukeHackett%2Ftfl_api_client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LukeHackett%2Ftfl_api_client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LukeHackett%2Ftfl_api_client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LukeHackett%2Ftfl_api_client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LukeHackett","download_url":"https://codeload.github.com/LukeHackett/tfl_api_client/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LukeHackett%2Ftfl_api_client/sbom","scorecard":{"id":86696,"data":{"date":"2025-08-11","repo":{"name":"github.com/LukeHackett/tfl_api_client","commit":"e5aaadaa2a8bd637885e78004dd8ca8d3a3a638f"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 1 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-15T07:04:51.201Z","repository_id":35263714,"created_at":"2025-08-15T07:04:51.202Z","updated_at":"2025-08-15T07:04:51.202Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276678844,"owners_count":25684803,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-23T02:00:09.130Z","response_time":73,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["ruby","ruby-gem","tfl","tfl-api"],"created_at":"2025-01-15T09:32:24.069Z","updated_at":"2025-09-24T01:30:58.835Z","avatar_url":"https://github.com/LukeHackett.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Transport for London API Client\n\nThis gem aims to provide a simple, programmatic ruby client that allows\nnative ruby applications to seamlessly interact with Transport for\nLondon's live APIs.\n\n[![Build Status](https://travis-ci.org/LukeHackett/tfl_api_client.svg?branch=master)](https://travis-ci.org/LukeHackett/tfl_api_client)\n[![Dependency Status](https://gemnasium.com/LukeHackett/tfl_api_client.svg)](https://gemnasium.com/LukeHackett/tfl_api_client)\n[![Code Climate](https://codeclimate.com/github/LukeHackett/tfl_api_client/badges/gpa.svg)](https://codeclimate.com/github/LukeHackett/tfl_api_client)\n[![Coverage Status](https://coveralls.io/repos/LukeHackett/tfl_api_client/badge.svg?branch=master\u0026service=github)](https://coveralls.io/github/LukeHackett/tfl_api_client?branch=master)\n\n\n## Installation\n\nAdd this line to your application's Gemfile:\n\n```ruby\ngem 'tfl_api_client'\n```\n\nAnd then install via bundler:\n\n    $ bundle install\n\nOr install it yourself as:\n\n    $ gem install tfl_api_client\n\n\n### Supported Ruby Versions\n\nThe TFL API Client supports Ruby 2.0.0 or higher. \n\n\n## Usage\n\nTFL API Client has been designed to be as simple as possible to work with.\n\nTo use the TFL API, developers should [register][tfl_registration] for a set\nof API credentials (an Application ID and Application Key).\n\nOnce valid API credentials have been obtained, you will need to pass the \nApplication ID and Application Key upon initialisation of the client:\n\n```ruby\n@client = TflApi::Client.new(app_id: TFL_APP_ID, app_key: TFL_APP_KEY)\n````\n\nIn addition to the above mandatory parameters, a number of optional parameters\ncan be passed:\n\n| Option       | Default Value          | Description                                         |\n| ------------ | ---------------------- | --------------------------------------------------- |\n| host         | https://api.tfl.gov.uk | TFL API's host url                                  |\n| logger       | a new Logger instance  | Logger object to log into                           |\n| log_level    | INFO                   | The log level to logging at                         |\n| log_location | STDOUT                 | Location to send all logs (can be a file or STDOUT) |\n\nFull documentation can be found on the project's [ruby docs][ruby_docs].\n\n[tfl_registration]: https://api-portal.tfl.gov.uk/signup\n[ruby_docs]: http://www.rubydoc.info/github/LukeHackett/tfl_api_client\n\n## Changelog\n\nSee the [CHANGELOG][changelog] for a list of changes.\n\n[changelog]: CHANGELOG.md\n\n\n## Contributing\n\nThis project started in order to fill a gap in the current offers for \ngems that provide a programmatic interface to TFL's API. \n\nThe TFL API Client gem was originally developed by [Luke Hackett][luke_hackett], \nand is not an official TFL client.\n\nIn the spirit of [free software][free-sw], **everyone** is encouraged to \nhelp improve this project.\n\nHere are some ways in which *you* can contribute:\n\n* by using prerelease versions\n* by reporting [bugs][issues]\n* by suggesting [new features][issues]\n* by writing or editing documentation\n* by writing code ( **no patch is too small** : fix typos, add comments, clean up inconsistent whitespace )\n* by refactoring code\n* by reviewing code\n\n[luke_hackett]: http://www.lukehackett.com\n[free-sw]: http://www.fsf.org/licensing/essays/free-sw.html\n[issues]: https://github.com/LukeHackett/tfl_api_client/issues\n\n### Submitting an Issue\n\nI utilise the [GitHub issue tracking][issues] to track bugs and features.\nBefore submitting a bug report or feature request, check to make sure it\nhasn't already been submitted.\n\nWhen submitting a bug report, please include a [Gist][gist] that includes\na stack trace and any details that may be necessary to reproduce the bug,\nincluding your gem version, Ruby version, and operating system. \n\nIdeally, a bug report should include a pull request with failing specs.\n\n[gist]: https://gist.github.com/\n\n### Submitting a Pull Request\n\n1. [Fork][fork] the [repository][repo].\n2. [Create a feature branch][branch] using the [gitflow][gitflow] naming convention e.g. `feature/my-new-feature`.\n3. Implement your feature or bug fix.\n4. Add, commit, and push your changes.\n5. [Submit a pull request][pr].\n\n[repo]: https://github.com/LukeHackett/tfl_api_client/tree/master\n[fork]: https://help.github.com/articles/fork-a-repo/\n[branch]: https://help.github.com/articles/creating-and-deleting-branches-within-your-repository/\n[pr]: https://help.github.com/articles/using-pull-requests/\n[gitflow]: http://danielkummer.github.io/git-flow-cheatsheet/#features\n\n### Notes\n\n* Please add tests if you changed code - contributions without tests won't be accepted.\n* Please don't update the Gem version.\n\nThe contributing guidelines was inspired by [Middleman-Heroku][middleman] \nand [Factory Girl][factory_girl]. \n\n[middleman]: https://github.com/middleman/middleman-heroku/blob/master/CONTRIBUTING.md\n[factory_girl]: https://github.com/thoughtbot/factory_girl/blob/master/CONTRIBUTING.md\n\n\n## License\n\nCopyright (c) 2015 - 2018 Luke Hackett. MIT Licensed, see [LICENSE][license] for details.\n\n[license]: LICENSE\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flukehackett%2Ftfl_api_client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flukehackett%2Ftfl_api_client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flukehackett%2Ftfl_api_client/lists"}