lex-cloudflare 0.1.0 → 0.1.2

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.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -0
  3. data/CLAUDE.md +31 -8
  4. data/lib/legion/extensions/cloudflare/accounts/client.rb +23 -0
  5. data/lib/legion/extensions/cloudflare/accounts/runners/accounts.rb +55 -0
  6. data/lib/legion/extensions/cloudflare/accounts/runners/members.rb +45 -0
  7. data/lib/legion/extensions/cloudflare/accounts/runners/roles.rb +29 -0
  8. data/lib/legion/extensions/cloudflare/accounts/runners/tokens.rb +41 -0
  9. data/lib/legion/extensions/cloudflare/accounts.rb +16 -0
  10. data/lib/legion/extensions/cloudflare/ai/client.rb +3 -13
  11. data/lib/legion/extensions/cloudflare/ai/runners/finetunes.rb +1 -1
  12. data/lib/legion/extensions/cloudflare/ai/runners/models.rb +1 -1
  13. data/lib/legion/extensions/cloudflare/ai.rb +0 -1
  14. data/lib/legion/extensions/cloudflare/ai_gateway/client.rb +3 -13
  15. data/lib/legion/extensions/cloudflare/ai_gateway/runners/datasets.rb +1 -1
  16. data/lib/legion/extensions/cloudflare/ai_gateway/runners/evaluations.rb +1 -1
  17. data/lib/legion/extensions/cloudflare/ai_gateway/runners/gateways.rb +1 -1
  18. data/lib/legion/extensions/cloudflare/ai_gateway/runners/logs.rb +1 -1
  19. data/lib/legion/extensions/cloudflare/ai_gateway.rb +0 -1
  20. data/lib/legion/extensions/cloudflare/base_client.rb +21 -0
  21. data/lib/legion/extensions/cloudflare/custom_nameservers/client.rb +3 -13
  22. data/lib/legion/extensions/cloudflare/custom_nameservers/runners/nameservers.rb +1 -1
  23. data/lib/legion/extensions/cloudflare/custom_nameservers.rb +0 -1
  24. data/lib/legion/extensions/cloudflare/dns/client.rb +3 -13
  25. data/lib/legion/extensions/cloudflare/dns/runners/dnssec.rb +1 -1
  26. data/lib/legion/extensions/cloudflare/dns/runners/records.rb +1 -1
  27. data/lib/legion/extensions/cloudflare/dns.rb +0 -1
  28. data/lib/legion/extensions/cloudflare/dns_firewall/client.rb +3 -13
  29. data/lib/legion/extensions/cloudflare/dns_firewall/runners/analytics.rb +1 -1
  30. data/lib/legion/extensions/cloudflare/dns_firewall/runners/clusters.rb +1 -1
  31. data/lib/legion/extensions/cloudflare/dns_firewall.rb +0 -1
  32. data/lib/legion/extensions/cloudflare/helpers/client.rb +22 -0
  33. data/lib/legion/extensions/cloudflare/pages/client.rb +21 -0
  34. data/lib/legion/extensions/cloudflare/pages/runners/deployments.rb +51 -0
  35. data/lib/legion/extensions/cloudflare/pages/runners/domains.rb +45 -0
  36. data/lib/legion/extensions/cloudflare/pages/runners/projects.rb +40 -0
  37. data/lib/legion/extensions/cloudflare/pages.rb +15 -0
  38. data/lib/legion/extensions/cloudflare/ssl/client.rb +3 -13
  39. data/lib/legion/extensions/cloudflare/ssl/runners/certificate_packs.rb +1 -1
  40. data/lib/legion/extensions/cloudflare/ssl/runners/universal.rb +1 -1
  41. data/lib/legion/extensions/cloudflare/ssl.rb +0 -1
  42. data/lib/legion/extensions/cloudflare/vectorize/client.rb +3 -13
  43. data/lib/legion/extensions/cloudflare/vectorize/runners/indexes.rb +1 -1
  44. data/lib/legion/extensions/cloudflare/vectorize/runners/vectors.rb +1 -1
  45. data/lib/legion/extensions/cloudflare/vectorize.rb +0 -1
  46. data/lib/legion/extensions/cloudflare/version.rb +1 -1
  47. data/lib/legion/extensions/cloudflare/workers_routes/client.rb +17 -0
  48. data/lib/legion/extensions/cloudflare/workers_routes/runners/routes.rb +47 -0
  49. data/lib/legion/extensions/cloudflare/workers_routes.rb +13 -0
  50. data/lib/legion/extensions/cloudflare/zero_trust/client.rb +3 -13
  51. data/lib/legion/extensions/cloudflare/zero_trust/runners/devices.rb +1 -1
  52. data/lib/legion/extensions/cloudflare/zero_trust/runners/dex_tests.rb +1 -1
  53. data/lib/legion/extensions/cloudflare/zero_trust/runners/ip_profiles.rb +1 -1
  54. data/lib/legion/extensions/cloudflare/zero_trust/runners/registrations.rb +1 -1
  55. data/lib/legion/extensions/cloudflare/zero_trust.rb +0 -1
  56. data/lib/legion/extensions/cloudflare/zones/client.rb +19 -0
  57. data/lib/legion/extensions/cloudflare/zones/runners/settings.rb +28 -0
  58. data/lib/legion/extensions/cloudflare/zones/runners/zones.rb +52 -0
  59. data/lib/legion/extensions/cloudflare/zones.rb +14 -0
  60. data/lib/legion/extensions/cloudflare.rb +6 -0
  61. metadata +21 -9
  62. data/lib/legion/extensions/cloudflare/ai/helpers/client.rb +0 -24
  63. data/lib/legion/extensions/cloudflare/ai_gateway/helpers/client.rb +0 -24
  64. data/lib/legion/extensions/cloudflare/custom_nameservers/helpers/client.rb +0 -24
  65. data/lib/legion/extensions/cloudflare/dns/helpers/client.rb +0 -24
  66. data/lib/legion/extensions/cloudflare/dns_firewall/helpers/client.rb +0 -24
  67. data/lib/legion/extensions/cloudflare/ssl/helpers/client.rb +0 -24
  68. data/lib/legion/extensions/cloudflare/vectorize/helpers/client.rb +0 -24
  69. data/lib/legion/extensions/cloudflare/zero_trust/helpers/client.rb +0 -24
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 10d4ff73d6d43881671371d6bd41e48eb3ce5b5d27da18df726acfdbe326125d
4
- data.tar.gz: e61614b205cf48ac8424c142a56c39cb911e55cf01f7c5a8bf758741044de31a
3
+ metadata.gz: fd981cbafef97d803409aa71b857277154a77df490ef68a8fe5ffc7699ca341e
4
+ data.tar.gz: 4679f6ba9c963c81ef38a8fbfe9184ee49f742192c63f8084efa6d9816ca8f06
5
5
  SHA512:
6
- metadata.gz: 81e7b0e09e2e607f0e02a0b9d1e7b4f8232faf1ad2910ebb26505ca273821691d92d2c98f7bf44f57ffaa53e5bb252ab0cba1420a6708ccbe2489da58a8d8223
7
- data.tar.gz: a8364cf22071c1f4b06a084918161212987eaec0501e4d828dc7c5ee7175b9a1da36498f5bb81982f593fe12dc4e9b092f13858ad7c2afcc3fc13216f5f3204a
6
+ metadata.gz: 3390890d65c1501e74251894f9e226f818bf09b76f6fabd08b1989a4cbd3c3afe158ab6e3a47d83037fc47ec5afc8f1d60e6d73c8345da908571684ce413ffa0
7
+ data.tar.gz: 4fa3e63a8e5811ac51972c44014563b52fad15c62adcf003a2286d4bd1b8f7c8706f3692229d4dc43971374dfa6dd493b80e64a514d0e0c2a3231f0919976579
data/CHANGELOG.md CHANGED
@@ -2,6 +2,22 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.1.2] - 2026-03-24
6
+
7
+ ### Added
8
+ - WorkersRoutes sub-module: zone-scoped Workers route CRUD (list, get, create, update, delete)
9
+ - Pages sub-module: account-scoped Pages projects, deployments (retry/rollback), and custom domains
10
+ - 32 new specs covering all WorkersRoutes and Pages runners and clients (197 total)
11
+
12
+ ## [0.1.1] - 2026-03-24
13
+
14
+ ### Added
15
+ - Zones sub-module: zone CRUD, activation check, and zone settings (list/get)
16
+ - Accounts sub-module: account CRUD, profile, members, roles, and API token management
17
+ - 45 new specs covering all Zones and Accounts runners and clients (165 total)
18
+
19
+ ## [0.1.0] - 2026-03-24
20
+
5
21
  ### Added
6
22
  - Initial implementation with Dns, DnsFirewall, CustomNameservers, ZeroTrust, Ssl, Vectorize, AiGateway, and Ai sub-modules
7
23
  - Dns: DNS records CRUD and DNSSEC management (zone-scoped)
data/CLAUDE.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  ## Purpose
8
8
 
9
- Monolith Legion Extension connecting LegionIO to Cloudflare services. Implements 8 sub-modules covering DNS, network security, Zero Trust, SSL, Vectorize, and AI via the Cloudflare REST API v4.
9
+ Monolith Legion Extension connecting LegionIO to Cloudflare services. Implements 12 sub-modules covering DNS, network security, Zero Trust, SSL, Vectorize, AI, Zones, Accounts, Workers Routes, and Pages via the Cloudflare REST API v4.
10
10
 
11
11
  **GitHub**: https://github.com/LegionIO/lex-cloudflare
12
12
  **License**: MIT
@@ -54,10 +54,28 @@ Legion::Extensions::Cloudflare
54
54
  │ ├── Runners::Datasets # Dataset CRUD
55
55
  │ ├── Runners::Evaluations # Evaluation CRUD
56
56
  │ └── Client
57
- └── Ai/ # Account-scoped Workers AI
58
- ├── Helpers::Client
59
- ├── Runners::Models # Model execution, search, schema, markdown conversion
60
- ├── Runners::Finetunes # Finetune management, public listing
57
+ ├── Ai/ # Account-scoped Workers AI
58
+ ├── Helpers::Client
59
+ ├── Runners::Models # Model execution, search, schema, markdown conversion
60
+ ├── Runners::Finetunes # Finetune management, public listing
61
+ │ └── Client
62
+ ├── Zones/ # Zone lifecycle management
63
+ │ ├── Runners::Zones # Zone CRUD, activation check
64
+ │ ├── Runners::Settings # Zone settings list/get
65
+ │ └── Client
66
+ ├── Accounts/ # Account and IAM management
67
+ │ ├── Runners::Accounts # Account CRUD, profile
68
+ │ ├── Runners::Members # Member invite/update/remove
69
+ │ ├── Runners::Roles # Role list/get
70
+ │ ├── Runners::Tokens # API token CRUD
71
+ │ └── Client
72
+ ├── WorkersRoutes/ # Zone-scoped Workers route management
73
+ │ ├── Runners::Routes # Route CRUD (pattern + script binding)
74
+ │ └── Client
75
+ └── Pages/ # Account-scoped Cloudflare Pages
76
+ ├── Runners::Projects # Project CRUD
77
+ ├── Runners::Deployments # Deployment list/get/delete/retry/rollback
78
+ ├── Runners::Domains # Custom domain list/get/add/delete
61
79
  └── Client
62
80
  ```
63
81
 
@@ -82,8 +100,9 @@ Base URL: `https://api.cloudflare.com/client/v4`
82
100
 
83
101
  | Scope | Sub-modules | Path pattern |
84
102
  |-------|-------------|--------------|
85
- | Zone | Dns, Ssl | `/zones/{zone_id}/...` |
86
- | Account | DnsFirewall, CustomNameservers, ZeroTrust, Vectorize, AiGateway, Ai | `/accounts/{account_id}/...` |
103
+ | Zone | Dns, Ssl, Zones, WorkersRoutes | `/zones/{zone_id}/...` |
104
+ | Account | DnsFirewall, CustomNameservers, ZeroTrust, Vectorize, AiGateway, Ai, Accounts, Pages | `/accounts/{account_id}/...` |
105
+ | Top-level | Zones (list/create), Accounts (list/create) | `/zones`, `/accounts` |
87
106
 
88
107
  ## API Coverage
89
108
 
@@ -97,6 +116,10 @@ Base URL: `https://api.cloudflare.com/client/v4`
97
116
  | Vectorize | Indexes, Vectors | `list_indexes`, `create_index`, `query`, `insert`, `upsert`, `get_by_ids`, `list_metadata_indexes` |
98
117
  | AiGateway | Gateways, Logs, Datasets, Evaluations | `list_gateways`, `create_gateway`, `list_logs`, `patch_log`, `list_datasets`, `list_evaluations` |
99
118
  | Ai | Models, Finetunes | `run`, `search_models`, `model_schema`, `to_markdown`, `list_finetunes`, `create_finetune` |
119
+ | Zones | Zones, Settings | `list`, `get`, `create`, `update`, `delete`, `activation_check`, `list_settings`, `get_setting` |
120
+ | Accounts | Accounts, Members, Roles, Tokens | `list`, `get`, `create`, `update`, `delete`, `get_profile`, `list_members`, `add_member`, `list_roles`, `list_tokens`, `create_token` |
121
+ | WorkersRoutes | Routes | `list_routes`, `get_route`, `create_route`, `update_route`, `delete_route` |
122
+ | Pages | Projects, Deployments, Domains | `list_projects`, `get_project`, `create_project`, `list_deployments`, `retry_deployment`, `rollback_deployment`, `list_domains`, `add_domain` |
100
123
 
101
124
  ## Dependencies
102
125
 
@@ -106,7 +129,7 @@ Base URL: `https://api.cloudflare.com/client/v4`
106
129
 
107
130
  ## Development
108
131
 
109
- 120 specs total (0 failures).
132
+ 197 specs total (0 failures).
110
133
 
111
134
  ```bash
112
135
  bundle install
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../helpers/client'
4
+ require_relative '../base_client'
5
+ require_relative 'runners/accounts'
6
+ require_relative 'runners/members'
7
+ require_relative 'runners/roles'
8
+ require_relative 'runners/tokens'
9
+
10
+ module Legion
11
+ module Extensions
12
+ module Cloudflare
13
+ module Accounts
14
+ class Client < Legion::Extensions::Cloudflare::BaseClient
15
+ include Runners::Accounts
16
+ include Runners::Members
17
+ include Runners::Roles
18
+ include Runners::Tokens
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Legion
4
+ module Extensions
5
+ module Cloudflare
6
+ module Accounts
7
+ module Runners
8
+ module Accounts
9
+ extend Legion::Extensions::Cloudflare::Helpers::Client
10
+
11
+ def list(page: nil, per_page: nil, name: nil, **)
12
+ params = { page: page, per_page: per_page, name: name }.compact
13
+ response = client(**).get('/accounts', params)
14
+ { result: response.body, status: response.status }
15
+ end
16
+
17
+ def get(account_id:, **)
18
+ response = client(**).get("/accounts/#{account_id}")
19
+ { result: response.body, status: response.status }
20
+ end
21
+
22
+ def create(name:, type: nil, **)
23
+ body = { name: name, type: type }.compact
24
+ response = client(**).post('/accounts', body)
25
+ { result: response.body, status: response.status }
26
+ end
27
+
28
+ def update(account_id:, body:, **)
29
+ response = client(**).put("/accounts/#{account_id}", body)
30
+ { result: response.body, status: response.status }
31
+ end
32
+
33
+ def delete(account_id:, **)
34
+ response = client(**).delete("/accounts/#{account_id}")
35
+ { result: response.body, status: response.status }
36
+ end
37
+
38
+ def get_profile(account_id:, **)
39
+ response = client(**).get("/accounts/#{account_id}/profile")
40
+ { result: response.body, status: response.status }
41
+ end
42
+
43
+ def update_profile(account_id:, body:, **)
44
+ response = client(**).put("/accounts/#{account_id}/profile", body)
45
+ { result: response.body, status: response.status }
46
+ end
47
+
48
+ include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers) &&
49
+ Legion::Extensions::Helpers.const_defined?(:Lex)
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Legion
4
+ module Extensions
5
+ module Cloudflare
6
+ module Accounts
7
+ module Runners
8
+ module Members
9
+ extend Legion::Extensions::Cloudflare::Helpers::Client
10
+
11
+ def list_members(account_id:, page: nil, per_page: nil, status: nil, **)
12
+ params = { page: page, per_page: per_page, status: status }.compact
13
+ response = client(**).get("/accounts/#{account_id}/members", params)
14
+ { result: response.body, status: response.status }
15
+ end
16
+
17
+ def get_member(account_id:, member_id:, **)
18
+ response = client(**).get("/accounts/#{account_id}/members/#{member_id}")
19
+ { result: response.body, status: response.status }
20
+ end
21
+
22
+ def add_member(account_id:, email:, roles:, **)
23
+ body = { email: email, roles: roles }
24
+ response = client(**).post("/accounts/#{account_id}/members", body)
25
+ { result: response.body, status: response.status }
26
+ end
27
+
28
+ def update_member(account_id:, member_id:, body:, **)
29
+ response = client(**).put("/accounts/#{account_id}/members/#{member_id}", body)
30
+ { result: response.body, status: response.status }
31
+ end
32
+
33
+ def remove_member(account_id:, member_id:, **)
34
+ response = client(**).delete("/accounts/#{account_id}/members/#{member_id}")
35
+ { result: response.body, status: response.status }
36
+ end
37
+
38
+ include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers) &&
39
+ Legion::Extensions::Helpers.const_defined?(:Lex)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Legion
4
+ module Extensions
5
+ module Cloudflare
6
+ module Accounts
7
+ module Runners
8
+ module Roles
9
+ extend Legion::Extensions::Cloudflare::Helpers::Client
10
+
11
+ def list_roles(account_id:, page: nil, per_page: nil, **)
12
+ params = { page: page, per_page: per_page }.compact
13
+ response = client(**).get("/accounts/#{account_id}/roles", params)
14
+ { result: response.body, status: response.status }
15
+ end
16
+
17
+ def get_role(account_id:, role_id:, **)
18
+ response = client(**).get("/accounts/#{account_id}/roles/#{role_id}")
19
+ { result: response.body, status: response.status }
20
+ end
21
+
22
+ include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers) &&
23
+ Legion::Extensions::Helpers.const_defined?(:Lex)
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Legion
4
+ module Extensions
5
+ module Cloudflare
6
+ module Accounts
7
+ module Runners
8
+ module Tokens
9
+ extend Legion::Extensions::Cloudflare::Helpers::Client
10
+
11
+ def list_tokens(account_id:, page: nil, per_page: nil, **)
12
+ params = { page: page, per_page: per_page }.compact
13
+ response = client(**).get("/accounts/#{account_id}/tokens", params)
14
+ { result: response.body, status: response.status }
15
+ end
16
+
17
+ def get_token(account_id:, token_id:, **)
18
+ response = client(**).get("/accounts/#{account_id}/tokens/#{token_id}")
19
+ { result: response.body, status: response.status }
20
+ end
21
+
22
+ def create_token(account_id:, name:, policies:, expires_on: nil, not_before: nil, condition: nil, **)
23
+ body = { name: name, policies: policies, expires_on: expires_on,
24
+ not_before: not_before, condition: condition }.compact
25
+ response = client(**).post("/accounts/#{account_id}/tokens", body)
26
+ { result: response.body, status: response.status }
27
+ end
28
+
29
+ def update_token(account_id:, token_id:, body:, **)
30
+ response = client(**).put("/accounts/#{account_id}/tokens/#{token_id}", body)
31
+ { result: response.body, status: response.status }
32
+ end
33
+
34
+ include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers) &&
35
+ Legion::Extensions::Helpers.const_defined?(:Lex)
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'legion/extensions/cloudflare/accounts/runners/accounts'
4
+ require 'legion/extensions/cloudflare/accounts/runners/members'
5
+ require 'legion/extensions/cloudflare/accounts/runners/roles'
6
+ require 'legion/extensions/cloudflare/accounts/runners/tokens'
7
+ require 'legion/extensions/cloudflare/accounts/client'
8
+
9
+ module Legion
10
+ module Extensions
11
+ module Cloudflare
12
+ module Accounts
13
+ end
14
+ end
15
+ end
16
+ end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'helpers/client'
3
+ require_relative '../helpers/client'
4
+ require_relative '../base_client'
4
5
  require_relative 'runners/models'
5
6
  require_relative 'runners/finetunes'
6
7
 
@@ -8,20 +9,9 @@ module Legion
8
9
  module Extensions
9
10
  module Cloudflare
10
11
  module Ai
11
- class Client
12
- include Helpers::Client
12
+ class Client < Legion::Extensions::Cloudflare::BaseClient
13
13
  include Runners::Models
14
14
  include Runners::Finetunes
15
-
16
- attr_reader :opts
17
-
18
- def initialize(api_token:, **extra)
19
- @opts = { api_token: api_token, **extra }.compact
20
- end
21
-
22
- def client(**override)
23
- super(**@opts, **override)
24
- end
25
15
  end
26
16
  end
27
17
  end
@@ -6,7 +6,7 @@ module Legion
6
6
  module Ai
7
7
  module Runners
8
8
  module Finetunes
9
- extend Legion::Extensions::Cloudflare::Ai::Helpers::Client
9
+ extend Legion::Extensions::Cloudflare::Helpers::Client
10
10
 
11
11
  def list_finetunes(account_id:, **)
12
12
  response = client(**).get("/accounts/#{account_id}/ai/finetunes")
@@ -6,7 +6,7 @@ module Legion
6
6
  module Ai
7
7
  module Runners
8
8
  module Models
9
- extend Legion::Extensions::Cloudflare::Ai::Helpers::Client
9
+ extend Legion::Extensions::Cloudflare::Helpers::Client
10
10
 
11
11
  def run(account_id:, model_name:, body:, **)
12
12
  response = client(**).post("/accounts/#{account_id}/ai/run/#{model_name}", body)
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'legion/extensions/cloudflare/ai/helpers/client'
4
3
  require 'legion/extensions/cloudflare/ai/runners/models'
5
4
  require 'legion/extensions/cloudflare/ai/runners/finetunes'
6
5
  require 'legion/extensions/cloudflare/ai/client'
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'helpers/client'
3
+ require_relative '../helpers/client'
4
+ require_relative '../base_client'
4
5
  require_relative 'runners/gateways'
5
6
  require_relative 'runners/logs'
6
7
  require_relative 'runners/datasets'
@@ -10,22 +11,11 @@ module Legion
10
11
  module Extensions
11
12
  module Cloudflare
12
13
  module AiGateway
13
- class Client
14
- include Helpers::Client
14
+ class Client < Legion::Extensions::Cloudflare::BaseClient
15
15
  include Runners::Gateways
16
16
  include Runners::Logs
17
17
  include Runners::Datasets
18
18
  include Runners::Evaluations
19
-
20
- attr_reader :opts
21
-
22
- def initialize(api_token:, **extra)
23
- @opts = { api_token: api_token, **extra }.compact
24
- end
25
-
26
- def client(**override)
27
- super(**@opts, **override)
28
- end
29
19
  end
30
20
  end
31
21
  end
@@ -6,7 +6,7 @@ module Legion
6
6
  module AiGateway
7
7
  module Runners
8
8
  module Datasets
9
- extend Legion::Extensions::Cloudflare::AiGateway::Helpers::Client
9
+ extend Legion::Extensions::Cloudflare::Helpers::Client
10
10
 
11
11
  def list_datasets(account_id:, gateway_id:, page: nil, per_page: nil, search: nil, **)
12
12
  params = { page: page, per_page: per_page, search: search }.compact
@@ -6,7 +6,7 @@ module Legion
6
6
  module AiGateway
7
7
  module Runners
8
8
  module Evaluations
9
- extend Legion::Extensions::Cloudflare::AiGateway::Helpers::Client
9
+ extend Legion::Extensions::Cloudflare::Helpers::Client
10
10
 
11
11
  def list_evaluations(account_id:, gateway_id:, page: nil, per_page: nil, **)
12
12
  params = { page: page, per_page: per_page }.compact
@@ -6,7 +6,7 @@ module Legion
6
6
  module AiGateway
7
7
  module Runners
8
8
  module Gateways
9
- extend Legion::Extensions::Cloudflare::AiGateway::Helpers::Client
9
+ extend Legion::Extensions::Cloudflare::Helpers::Client
10
10
 
11
11
  def list_gateways(account_id:, page: nil, per_page: nil, search: nil, **)
12
12
  params = { page: page, per_page: per_page, search: search }.compact
@@ -6,7 +6,7 @@ module Legion
6
6
  module AiGateway
7
7
  module Runners
8
8
  module Logs
9
- extend Legion::Extensions::Cloudflare::AiGateway::Helpers::Client
9
+ extend Legion::Extensions::Cloudflare::Helpers::Client
10
10
 
11
11
  def list_logs(account_id:, gateway_id:, page: nil, per_page: nil, **)
12
12
  params = { page: page, per_page: per_page }.compact
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'legion/extensions/cloudflare/ai_gateway/helpers/client'
4
3
  require 'legion/extensions/cloudflare/ai_gateway/runners/gateways'
5
4
  require 'legion/extensions/cloudflare/ai_gateway/runners/logs'
6
5
  require 'legion/extensions/cloudflare/ai_gateway/runners/datasets'
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Legion
4
+ module Extensions
5
+ module Cloudflare
6
+ class BaseClient
7
+ include Helpers::Client
8
+
9
+ attr_reader :opts
10
+
11
+ def initialize(api_token:, **extra)
12
+ @opts = { api_token: api_token, **extra }.compact
13
+ end
14
+
15
+ def client(**override)
16
+ super(**@opts, **override)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,25 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'helpers/client'
3
+ require_relative '../helpers/client'
4
+ require_relative '../base_client'
4
5
  require_relative 'runners/nameservers'
5
6
 
6
7
  module Legion
7
8
  module Extensions
8
9
  module Cloudflare
9
10
  module CustomNameservers
10
- class Client
11
- include Helpers::Client
11
+ class Client < Legion::Extensions::Cloudflare::BaseClient
12
12
  include Runners::Nameservers
13
-
14
- attr_reader :opts
15
-
16
- def initialize(api_token:, **extra)
17
- @opts = { api_token: api_token, **extra }.compact
18
- end
19
-
20
- def client(**override)
21
- super(**@opts, **override)
22
- end
23
13
  end
24
14
  end
25
15
  end
@@ -6,7 +6,7 @@ module Legion
6
6
  module CustomNameservers
7
7
  module Runners
8
8
  module Nameservers
9
- extend Legion::Extensions::Cloudflare::CustomNameservers::Helpers::Client
9
+ extend Legion::Extensions::Cloudflare::Helpers::Client
10
10
 
11
11
  def list(account_id:, **)
12
12
  response = client(**).get("/accounts/#{account_id}/custom_ns")
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'legion/extensions/cloudflare/custom_nameservers/helpers/client'
4
3
  require 'legion/extensions/cloudflare/custom_nameservers/runners/nameservers'
5
4
  require 'legion/extensions/cloudflare/custom_nameservers/client'
6
5
 
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'helpers/client'
3
+ require_relative '../helpers/client'
4
+ require_relative '../base_client'
4
5
  require_relative 'runners/records'
5
6
  require_relative 'runners/dnssec'
6
7
 
@@ -8,20 +9,9 @@ module Legion
8
9
  module Extensions
9
10
  module Cloudflare
10
11
  module Dns
11
- class Client
12
- include Helpers::Client
12
+ class Client < Legion::Extensions::Cloudflare::BaseClient
13
13
  include Runners::Records
14
14
  include Runners::Dnssec
15
-
16
- attr_reader :opts
17
-
18
- def initialize(api_token:, **extra)
19
- @opts = { api_token: api_token, **extra }.compact
20
- end
21
-
22
- def client(**override)
23
- super(**@opts, **override)
24
- end
25
15
  end
26
16
  end
27
17
  end
@@ -6,7 +6,7 @@ module Legion
6
6
  module Dns
7
7
  module Runners
8
8
  module Dnssec
9
- extend Legion::Extensions::Cloudflare::Dns::Helpers::Client
9
+ extend Legion::Extensions::Cloudflare::Helpers::Client
10
10
 
11
11
  def get_dnssec(zone_id:, **)
12
12
  response = client(**).get("/zones/#{zone_id}/dnssec")
@@ -6,7 +6,7 @@ module Legion
6
6
  module Dns
7
7
  module Runners
8
8
  module Records
9
- extend Legion::Extensions::Cloudflare::Dns::Helpers::Client
9
+ extend Legion::Extensions::Cloudflare::Helpers::Client
10
10
 
11
11
  def list(zone_id:, type: nil, name: nil, page: nil, per_page: nil, **)
12
12
  params = { type: type, name: name, page: page, per_page: per_page }.compact
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'legion/extensions/cloudflare/dns/helpers/client'
4
3
  require 'legion/extensions/cloudflare/dns/runners/records'
5
4
  require 'legion/extensions/cloudflare/dns/runners/dnssec'
6
5
  require 'legion/extensions/cloudflare/dns/client'
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'helpers/client'
3
+ require_relative '../helpers/client'
4
+ require_relative '../base_client'
4
5
  require_relative 'runners/clusters'
5
6
  require_relative 'runners/analytics'
6
7
 
@@ -8,20 +9,9 @@ module Legion
8
9
  module Extensions
9
10
  module Cloudflare
10
11
  module DnsFirewall
11
- class Client
12
- include Helpers::Client
12
+ class Client < Legion::Extensions::Cloudflare::BaseClient
13
13
  include Runners::Clusters
14
14
  include Runners::Analytics
15
-
16
- attr_reader :opts
17
-
18
- def initialize(api_token:, **extra)
19
- @opts = { api_token: api_token, **extra }.compact
20
- end
21
-
22
- def client(**override)
23
- super(**@opts, **override)
24
- end
25
15
  end
26
16
  end
27
17
  end
@@ -6,7 +6,7 @@ module Legion
6
6
  module DnsFirewall
7
7
  module Runners
8
8
  module Analytics
9
- extend Legion::Extensions::Cloudflare::DnsFirewall::Helpers::Client
9
+ extend Legion::Extensions::Cloudflare::Helpers::Client
10
10
 
11
11
  def report(account_id:, dns_firewall_id:, **)
12
12
  response = client(**).get("/accounts/#{account_id}/dns_firewall/#{dns_firewall_id}/dns_analytics/report")
@@ -6,7 +6,7 @@ module Legion
6
6
  module DnsFirewall
7
7
  module Runners
8
8
  module Clusters
9
- extend Legion::Extensions::Cloudflare::DnsFirewall::Helpers::Client
9
+ extend Legion::Extensions::Cloudflare::Helpers::Client
10
10
 
11
11
  def list(account_id:, page: nil, per_page: nil, **)
12
12
  params = { page: page, per_page: per_page }.compact
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'legion/extensions/cloudflare/dns_firewall/helpers/client'
4
3
  require 'legion/extensions/cloudflare/dns_firewall/runners/clusters'
5
4
  require 'legion/extensions/cloudflare/dns_firewall/runners/analytics'
6
5
  require 'legion/extensions/cloudflare/dns_firewall/client'