brand.dev 0.21.0 → 0.23.0

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: 11f1f35e06b0194753dff02bf2e8575c1546c118f385b5c0c3c697fdaaa1a3f6
4
- data.tar.gz: 1507ba4818bb1bc5c6ddbc75ceaabc9552a4e22422d768d23a13ea3e1717726e
3
+ metadata.gz: 4d62936819f843f3b39b44d3e7ee2dcdb37d8bab316c6dff544032989d4c579e
4
+ data.tar.gz: 0f5406cd25c0db18f69e9b41687c83582274a5aa6954fd776143b3cf2e127707
5
5
  SHA512:
6
- metadata.gz: cd0e28af31b9db038d2552ada9c70740ccc1ed201a87a18c1d078e1cb2429deb2992fdfaeeb3a1dcbe235291338bba960b0e7673147abfdb1eceed0c68dc3629
7
- data.tar.gz: 79fbd2becf76b76a4039cdcab3f39a4475fda8c8abf03ab8f4e0e9beea85031a66d18c4a621cfe5d902cb414d62a2b9f61265c5812766707d74d5704a24b725b
6
+ metadata.gz: f90ff68d81d283086db18cdc24be921b97f2fb753049a716599a2a2b908537c45d88fbac9e9909b7824a28557fc34954e41acb4cef8edae0c140033fcc4c266b
7
+ data.tar.gz: 40607397b880852fc184119bae74815d997a88c30d9d07b420ad0e4171e272b4a4f177dcaa2106e4b55cf446ee6a14e804406ecea613ef66b940f1565aa53b29
data/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.23.0 (2026-02-07)
4
+
5
+ Full Changelog: [v0.22.0...v0.23.0](https://github.com/brand-dot-dev/ruby-sdk/compare/v0.22.0...v0.23.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** api update ([c1d523e](https://github.com/brand-dot-dev/ruby-sdk/commit/c1d523ebcc0e29a2a3231a2df3f755e2e02b4616))
10
+
11
+ ## 0.22.0 (2026-02-07)
12
+
13
+ Full Changelog: [v0.21.0...v0.22.0](https://github.com/brand-dot-dev/ruby-sdk/compare/v0.21.0...v0.22.0)
14
+
15
+ ### Features
16
+
17
+ * **api:** api update ([f61453c](https://github.com/brand-dot-dev/ruby-sdk/commit/f61453cacff28784915b193547f730b8eb76cf92))
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * **client:** always add content-length to post body, even when empty ([6d12b11](https://github.com/brand-dot-dev/ruby-sdk/commit/6d12b114daabfd7ca3afc167a18adbe1fe347a36))
23
+ * **client:** loosen json header parsing ([3739920](https://github.com/brand-dot-dev/ruby-sdk/commit/37399200e8e055ed11e83489cdf2674a2a9e6aa8))
24
+
25
+
26
+ ### Chores
27
+
28
+ * **docs:** remove www prefix ([5b8d2c8](https://github.com/brand-dot-dev/ruby-sdk/commit/5b8d2c8b141d6bc47c5ac75aa640d620bfd3ada2))
29
+
3
30
  ## 0.21.0 (2026-02-02)
4
31
 
5
32
  Full Changelog: [v0.20.0...v0.21.0](https://github.com/brand-dot-dev/ruby-sdk/compare/v0.20.0...v0.21.0)
data/README.md CHANGED
@@ -26,7 +26,7 @@ To use this gem, install via Bundler by adding the following to your application
26
26
  <!-- x-release-please-start-version -->
27
27
 
28
28
  ```ruby
29
- gem "brand.dev", "~> 0.21.0"
29
+ gem "brand.dev", "~> 0.23.0"
30
30
  ```
31
31
 
32
32
  <!-- x-release-please-end -->
@@ -75,7 +75,7 @@ module BrandDev
75
75
 
76
76
  case body
77
77
  in nil
78
- nil
78
+ req["content-length"] ||= 0 unless req["transfer-encoding"]
79
79
  in String
80
80
  req["content-length"] ||= body.bytesize.to_s unless req["transfer-encoding"]
81
81
  req.body_stream = BrandDev::Internal::Util::ReadIOAdapter.new(body, &blk)
@@ -485,7 +485,7 @@ module BrandDev
485
485
  end
486
486
 
487
487
  # @type [Regexp]
488
- JSON_CONTENT = %r{^application/(?:vnd(?:\.[^.]+)*\+)?json(?!l)}
488
+ JSON_CONTENT = %r{^application/(?:[a-zA-Z0-9.-]+\+)?json(?!l)}
489
489
  # @type [Regexp]
490
490
  JSONL_CONTENT = %r{^application/(:?x-(?:n|l)djson)|(:?(?:x-)?jsonl)}
491
491
 
@@ -8,7 +8,7 @@ module BrandDev
8
8
  include BrandDev::Internal::Type::RequestParameters
9
9
 
10
10
  # @!attribute domain
11
- # The domain name to analyze
11
+ # The domain name to analyze.
12
12
  #
13
13
  # @return [String]
14
14
  required :domain, String
@@ -20,22 +20,30 @@ module BrandDev
20
20
  optional :max_products, Integer, api_name: :maxProducts
21
21
 
22
22
  # @!attribute timeout_ms
23
- # Optional timeout in milliseconds for the request. If the request takes longer
24
- # than this value, it will be aborted with a 408 status code. Maximum allowed
25
- # value is 300000ms (5 minutes).
23
+ # Optional timeout in milliseconds for the request. Maximum allowed value is
24
+ # 300000ms (5 minutes).
26
25
  #
27
26
  # @return [Integer, nil]
28
27
  optional :timeout_ms, Integer, api_name: :timeoutMS
29
28
 
30
- # @!method initialize(domain:, max_products: nil, timeout_ms: nil, request_options: {})
29
+ # @!attribute direct_url
30
+ # A specific URL to use directly as the starting point for extraction without
31
+ # domain resolution.
32
+ #
33
+ # @return [String]
34
+ required :direct_url, String, api_name: :directUrl
35
+
36
+ # @!method initialize(domain:, direct_url:, max_products: nil, timeout_ms: nil, request_options: {})
31
37
  # Some parameter documentations has been truncated, see
32
38
  # {BrandDev::Models::BrandAIProductsParams} for more details.
33
39
  #
34
- # @param domain [String] The domain name to analyze
40
+ # @param domain [String] The domain name to analyze.
41
+ #
42
+ # @param direct_url [String] A specific URL to use directly as the starting point for extraction without doma
35
43
  #
36
44
  # @param max_products [Integer] Maximum number of products to extract.
37
45
  #
38
- # @param timeout_ms [Integer] Optional timeout in milliseconds for the request. If the request takes longer th
46
+ # @param timeout_ms [Integer] Optional timeout in milliseconds for the request. Maximum allowed value is 30000
39
47
  #
40
48
  # @param request_options [BrandDev::RequestOptions, Hash{Symbol=>Object}]
41
49
  end
@@ -42,13 +42,15 @@ module BrandDev
42
42
  # analyze the website and return a list of products with details such as name,
43
43
  # description, image, pricing, features, and more.
44
44
  #
45
- # @overload ai_products(domain:, max_products: nil, timeout_ms: nil, request_options: {})
45
+ # @overload ai_products(domain:, direct_url:, max_products: nil, timeout_ms: nil, request_options: {})
46
46
  #
47
- # @param domain [String] The domain name to analyze
47
+ # @param domain [String] The domain name to analyze.
48
+ #
49
+ # @param direct_url [String] A specific URL to use directly as the starting point for extraction without doma
48
50
  #
49
51
  # @param max_products [Integer] Maximum number of products to extract.
50
52
  #
51
- # @param timeout_ms [Integer] Optional timeout in milliseconds for the request. If the request takes longer th
53
+ # @param timeout_ms [Integer] Optional timeout in milliseconds for the request. Maximum allowed value is 30000
52
54
  #
53
55
  # @param request_options [BrandDev::RequestOptions, Hash{Symbol=>Object}, nil]
54
56
  #
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BrandDev
4
- VERSION = "0.21.0"
4
+ VERSION = "0.23.0"
5
5
  end
@@ -296,7 +296,7 @@ module BrandDev
296
296
  end
297
297
 
298
298
  JSON_CONTENT =
299
- T.let(%r{^application/(?:vnd(?:\.[^.]+)*\+)?json(?!l)}, Regexp)
299
+ T.let(%r{^application/(?:[a-zA-Z0-9.-]+\+)?json(?!l)}, Regexp)
300
300
  JSONL_CONTENT =
301
301
  T.let(%r{^application/(:?x-(?:n|l)djson)|(:?(?:x-)?jsonl)}, Regexp)
302
302
 
@@ -11,7 +11,7 @@ module BrandDev
11
11
  T.any(BrandDev::BrandAIProductsParams, BrandDev::Internal::AnyHash)
12
12
  end
13
13
 
14
- # The domain name to analyze
14
+ # The domain name to analyze.
15
15
  sig { returns(String) }
16
16
  attr_accessor :domain
17
17
 
@@ -22,31 +22,38 @@ module BrandDev
22
22
  sig { params(max_products: Integer).void }
23
23
  attr_writer :max_products
24
24
 
25
- # Optional timeout in milliseconds for the request. If the request takes longer
26
- # than this value, it will be aborted with a 408 status code. Maximum allowed
27
- # value is 300000ms (5 minutes).
25
+ # Optional timeout in milliseconds for the request. Maximum allowed value is
26
+ # 300000ms (5 minutes).
28
27
  sig { returns(T.nilable(Integer)) }
29
28
  attr_reader :timeout_ms
30
29
 
31
30
  sig { params(timeout_ms: Integer).void }
32
31
  attr_writer :timeout_ms
33
32
 
33
+ # A specific URL to use directly as the starting point for extraction without
34
+ # domain resolution.
35
+ sig { returns(String) }
36
+ attr_accessor :direct_url
37
+
34
38
  sig do
35
39
  params(
36
40
  domain: String,
41
+ direct_url: String,
37
42
  max_products: Integer,
38
43
  timeout_ms: Integer,
39
44
  request_options: BrandDev::RequestOptions::OrHash
40
45
  ).returns(T.attached_class)
41
46
  end
42
47
  def self.new(
43
- # The domain name to analyze
48
+ # The domain name to analyze.
44
49
  domain:,
50
+ # A specific URL to use directly as the starting point for extraction without
51
+ # domain resolution.
52
+ direct_url:,
45
53
  # Maximum number of products to extract.
46
54
  max_products: nil,
47
- # Optional timeout in milliseconds for the request. If the request takes longer
48
- # than this value, it will be aborted with a 408 status code. Maximum allowed
49
- # value is 300000ms (5 minutes).
55
+ # Optional timeout in milliseconds for the request. Maximum allowed value is
56
+ # 300000ms (5 minutes).
50
57
  timeout_ms: nil,
51
58
  request_options: {}
52
59
  )
@@ -58,6 +65,7 @@ module BrandDev
58
65
  domain: String,
59
66
  max_products: Integer,
60
67
  timeout_ms: Integer,
68
+ direct_url: String,
61
69
  request_options: BrandDev::RequestOptions
62
70
  }
63
71
  )
@@ -40,19 +40,22 @@ module BrandDev
40
40
  sig do
41
41
  params(
42
42
  domain: String,
43
+ direct_url: String,
43
44
  max_products: Integer,
44
45
  timeout_ms: Integer,
45
46
  request_options: BrandDev::RequestOptions::OrHash
46
47
  ).returns(BrandDev::Models::BrandAIProductsResponse)
47
48
  end
48
49
  def ai_products(
49
- # The domain name to analyze
50
+ # The domain name to analyze.
50
51
  domain:,
52
+ # A specific URL to use directly as the starting point for extraction without
53
+ # domain resolution.
54
+ direct_url:,
51
55
  # Maximum number of products to extract.
52
56
  max_products: nil,
53
- # Optional timeout in milliseconds for the request. If the request takes longer
54
- # than this value, it will be aborted with a 408 status code. Maximum allowed
55
- # value is 300000ms (5 minutes).
57
+ # Optional timeout in milliseconds for the request. Maximum allowed value is
58
+ # 300000ms (5 minutes).
56
59
  timeout_ms: nil,
57
60
  request_options: {}
58
61
  )
@@ -1,7 +1,12 @@
1
1
  module BrandDev
2
2
  module Models
3
3
  type brand_ai_products_params =
4
- { domain: String, max_products: Integer, timeout_ms: Integer }
4
+ {
5
+ domain: String,
6
+ max_products: Integer,
7
+ timeout_ms: Integer,
8
+ direct_url: String
9
+ }
5
10
  & BrandDev::Internal::Type::request_parameters
6
11
 
7
12
  class BrandAIProductsParams < BrandDev::Internal::Type::BaseModel
@@ -18,8 +23,11 @@ module BrandDev
18
23
 
19
24
  def timeout_ms=: (Integer) -> Integer
20
25
 
26
+ attr_accessor direct_url: String
27
+
21
28
  def initialize: (
22
29
  domain: String,
30
+ direct_url: String,
23
31
  ?max_products: Integer,
24
32
  ?timeout_ms: Integer,
25
33
  ?request_options: BrandDev::request_opts
@@ -29,6 +37,7 @@ module BrandDev
29
37
  domain: String,
30
38
  max_products: Integer,
31
39
  timeout_ms: Integer,
40
+ direct_url: String,
32
41
  request_options: BrandDev::RequestOptions
33
42
  }
34
43
  end
@@ -11,6 +11,7 @@ module BrandDev
11
11
 
12
12
  def ai_products: (
13
13
  domain: String,
14
+ direct_url: String,
14
15
  ?max_products: Integer,
15
16
  ?timeout_ms: Integer,
16
17
  ?request_options: BrandDev::request_opts
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brand.dev
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.21.0
4
+ version: 0.23.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brand Dev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-02-02 00:00:00.000000000 Z
11
+ date: 2026-02-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cgi