diff --git a/.gitignore b/.gitignore index 063233c..dc9d84f 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,5 @@ # Ignore master key for decrypting credentials and more. /config/master.key + +.mise.toml diff --git a/Gemfile b/Gemfile index c7f32fe..e4ba509 100644 --- a/Gemfile +++ b/Gemfile @@ -18,3 +18,5 @@ group :development, :test do gem "debug", platforms: %i[ mri windows ], require: "debug/prelude" gem "rspec-rails", "~> 8.0" end + +gem "faraday", "~> 2.14" diff --git a/Gemfile.lock b/Gemfile.lock index e9475e7..65ffb62 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -87,6 +87,12 @@ GEM drb (2.2.3) erb (5.0.3) erubi (1.13.1) + faraday (2.14.0) + faraday-net_http (>= 2.0, < 3.5) + json + logger + faraday-net_http (3.4.1) + net-http (>= 0.5.0) globalid (1.3.0) activesupport (>= 6.1) i18n (1.14.7) @@ -96,6 +102,7 @@ GEM pp (>= 0.6.0) rdoc (>= 4.0.0) reline (>= 0.4.2) + json (2.15.1) logger (1.7.0) loofah (2.24.1) crass (~> 1.0.2) @@ -108,6 +115,8 @@ GEM marcel (1.1.0) mini_mime (1.1.5) minitest (5.26.0) + net-http (0.6.0) + uri net-imap (0.5.12) date net-protocol @@ -242,6 +251,7 @@ PLATFORMS DEPENDENCIES debug + faraday (~> 2.14) puma (>= 5.0) rails (~> 8.0.3) rspec-rails (~> 8.0) diff --git a/README.md b/README.md index 48742cc..aa0ff22 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ - Ruby 3.4.7 - Bundler +- Set `NPS_API_KEY` env var ### Deps diff --git a/app/lib/nps_client.rb b/app/lib/nps_client.rb new file mode 100644 index 0000000..a2e5f9e --- /dev/null +++ b/app/lib/nps_client.rb @@ -0,0 +1,21 @@ +class NpsClient + def self.current + @current ||= new + end + + def parks(offset: 0) + conn.get('parks', { start: offset }) + end + + private + + def conn + @conn ||= Faraday.new( + url: 'https://developer.nps.gov/api/v1', + headers: { 'X-Api-Key': ENV.fetch('NPS_API_KEY') } + ) do |builder| + builder.response :json + builder.response :raise_error + end + end +end