Class: JekyllBaserowHeadlessCMS::BaserowClient
- Inherits:
-
Object
- Object
- JekyllBaserowHeadlessCMS::BaserowClient
- Defined in:
- lib/jekyll_baserow_headless_cms/baserow_client.rb
Overview
Client for interacting with the Baserow REST API
Constant Summary collapse
- DEFAULT_API_BASE_URL =
'https://api.baserow.io'- ROW_PAGE_SIZE =
200
Instance Method Summary collapse
-
#get_row(table_id, row_id) ⇒ Hash
Retrieve a single row.
-
#initialize(token, base_url: nil) ⇒ BaserowClient
constructor
A new instance of BaserowClient.
-
#query_table(table_id, order_by: nil, filters: nil) ⇒ Hash
Query a Baserow table and return all rows.
Constructor Details
#initialize(token, base_url: nil) ⇒ BaserowClient
Returns a new instance of BaserowClient.
13 14 15 16 17 18 |
# File 'lib/jekyll_baserow_headless_cms/baserow_client.rb', line 13 def initialize(token, base_url: nil) @token = token raise ConfigurationError, 'Baserow token is required' if @token.nil? || @token.empty? @base_url = (base_url && !base_url.empty? ? base_url : DEFAULT_API_BASE_URL).chomp('/') end |
Instance Method Details
#get_row(table_id, row_id) ⇒ Hash
Retrieve a single row
45 46 47 48 49 50 |
# File 'lib/jekyll_baserow_headless_cms/baserow_client.rb', line 45 def get_row(table_id, row_id) uri = URI("#{@base_url}/api/database/rows/table/#{table_id}/#{row_id}/") uri.query = URI.encode_www_form({ user_field_names: true }) execute_request(uri, build_request(:get, uri)) end |
#query_table(table_id, order_by: nil, filters: nil) ⇒ Hash
Query a Baserow table and return all rows
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/jekyll_baserow_headless_cms/baserow_client.rb', line 25 def query_table(table_id, order_by: nil, filters: nil) all_results = [] uri = build_rows_uri(table_id, order_by: order_by, filters: filters) loop do response = execute_request(uri, build_request(:get, uri)) all_results.concat(response['results']) break unless response['next'] uri = URI(response['next']) end { 'results' => all_results } end |