og_pilot_ruby 0.4.4 → 0.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 367bb4f8ea0c4a82c261f4403a42ae5bbf2afa25069bad87250c884ca343526b
4
- data.tar.gz: 753f95ace14cc5d6b1895a286174810457837ba9e7b0fdb2dcb646bfa9f8ea78
3
+ metadata.gz: ee4898069ea1b40ff62e9db35ca4d5c726aaa27cf7b658c233c9f5f9bcc70bb2
4
+ data.tar.gz: 4c38cee9d0e4753208e3b65c37c4b33a6b478fa1b34c9fd16cd98aca56836c56
5
5
  SHA512:
6
- metadata.gz: ec298c3d0d781c259aece2d385f1f53a0e26633295b0bc8b1624ab85123a6cb5840a0b4f81a4e303940c425b618d270b8f504e19cb7654466046c11dbbda666b
7
- data.tar.gz: 29008c57e899486428e21c2395e0f3cdfc2010d1bc533cd93102e0ba17a41cabc96c94295bf4b3a46247ebe8a6ff5e183a7981e6c8d540406cbea3e22e29eb9f
6
+ metadata.gz: 2c1772c79ca7847a027611e42869888017b53e2e829a1262c519fb708d7e30e9fd4bce3bb0eb1ccc997c022a250b314ceadc88d3db5bcdb6c415c6aa23d5a177
7
+ data.tar.gz: dced72f71149af6c1544bd11ff0803e10159d81e1f0039a58df025009e8527f7b4a1f4eca2bfe934d86e8d37f47a353bf9c6dfb1e32b4ba387d1ed8f4b01a66a
data/README.md CHANGED
@@ -566,6 +566,7 @@ The gem handles `iss` (domain) and `sub` (API key prefix) automatically.
566
566
  | `open_timeout` | `5` | Connection timeout in seconds |
567
567
  | `read_timeout` | `10` | Read timeout in seconds |
568
568
  | `strip_extensions` | `true` | When `true`, file extensions are stripped from resolved paths (see [Strip extensions](#strip-extensions)) |
569
+ | `strip_query_parameters` | `false` | When `true`, query strings are removed from resolved paths before signing (see [Strip query parameters](#strip-query-parameters)) |
569
570
  | `cache_store` | `nil` | Optional cache backend with `read`/`write` (for example `Rails.cache`) |
570
571
  | `cache_ttl` | `86400` | Cache TTL in seconds when `cache_store` is enabled |
571
572
 
@@ -679,6 +680,25 @@ OgPilotRuby.create_image(title: "Docs", path: "/docs.php")
679
680
  # Dotfiles are unchanged: /.hidden stays /.hidden
680
681
  ```
681
682
 
683
+ ### Strip query parameters
684
+
685
+ When `strip_query_parameters` is enabled, the client drops the query string from
686
+ every resolved path before it signs the payload. This keeps analytics grouped
687
+ under the canonical path even when links include tracking or pagination
688
+ parameters. It works alongside `strip_extensions`, so
689
+ `/archive.tar.gz?ref=campaign` resolves to `"/archive"` when both are enabled.
690
+
691
+ ```ruby
692
+ OgPilotRuby.configure do |config|
693
+ config.strip_query_parameters = true
694
+ end
695
+
696
+ # These resolve to "/docs":
697
+ OgPilotRuby.create_image(title: "Docs", path: "/docs")
698
+ OgPilotRuby.create_image(title: "Docs", path: "/docs?ref=main")
699
+ OgPilotRuby.create_image(title: "Docs", path: "https://example.com/docs?ref=campaign")
700
+ ```
701
+
682
702
  ## Development
683
703
 
684
704
  Run tests with:
@@ -9,4 +9,5 @@ OgPilotRuby.configure do |config|
9
9
  # config.open_timeout = 5
10
10
  # config.read_timeout = 10
11
11
  # config.strip_extensions = true
12
+ # config.strip_query_parameters = true
12
13
  end
@@ -253,6 +253,7 @@ module OgPilotRuby
253
253
  cleaned = extract_request_uri(cleaned)
254
254
  cleaned = "/#{cleaned}" unless cleaned.start_with?("/")
255
255
  cleaned = strip_extension(cleaned) if config.strip_extensions
256
+ cleaned = remove_query_parameters(cleaned) if config.strip_query_parameters
256
257
  cleaned
257
258
  end
258
259
 
@@ -278,6 +279,11 @@ module OgPilotRuby
278
279
  query ? "#{stripped}?#{query}" : stripped
279
280
  end
280
281
 
282
+ def remove_query_parameters(path)
283
+ stripped = path.split("?", 2).first
284
+ stripped.empty? ? "/" : stripped
285
+ end
286
+
281
287
  def extract_request_uri(value)
282
288
  return value unless value.start_with?("http://", "https://")
283
289
 
@@ -5,7 +5,7 @@ module OgPilotRuby
5
5
  DEFAULT_BASE_URL = "https://ogpilot.com"
6
6
  private_constant :DEFAULT_BASE_URL
7
7
 
8
- attr_accessor :api_key, :domain, :base_url, :open_timeout, :read_timeout, :strip_extensions, :cache_store, :cache_ttl
8
+ attr_accessor :api_key, :domain, :base_url, :open_timeout, :read_timeout, :strip_extensions, :strip_query_parameters, :cache_store, :cache_ttl
9
9
 
10
10
  def initialize
11
11
  @api_key = ENV.fetch("OG_PILOT_API_KEY", nil)
@@ -14,6 +14,7 @@ module OgPilotRuby
14
14
  @open_timeout = 5
15
15
  @read_timeout = 10
16
16
  @strip_extensions = true
17
+ @strip_query_parameters = false
17
18
  @cache_store = nil
18
19
  @cache_ttl = 86400
19
20
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OgPilotRuby
4
- VERSION = "0.4.4"
4
+ VERSION = "0.4.5"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: og_pilot_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sunergos IT LLC
@@ -97,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
97
97
  - !ruby/object:Gem::Version
98
98
  version: '0'
99
99
  requirements: []
100
- rubygems_version: 4.0.3
100
+ rubygems_version: 4.0.6
101
101
  specification_version: 4
102
102
  summary: Ruby client for the OG Pilot Open Graph image generator.
103
103
  test_files: []