tilda-ruby 0.0.2 → 0.1.1

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 (140) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +38 -0
  3. data/README.md +16 -17
  4. data/lib/tilda_ruby/client.rb +35 -30
  5. data/lib/tilda_ruby/internal/transport/base_client.rb +2 -3
  6. data/lib/tilda_ruby/internal/type/base_model.rb +4 -4
  7. data/lib/tilda_ruby/internal/type/union.rb +7 -7
  8. data/lib/tilda_ruby/internal/util.rb +53 -7
  9. data/lib/tilda_ruby/models/css_asset.rb +21 -0
  10. data/lib/tilda_ruby/models/{getpagefull_retrieve_params.rb → export_retrieve_full_params.rb} +2 -2
  11. data/lib/tilda_ruby/models/export_retrieve_full_response.rb +69 -0
  12. data/lib/tilda_ruby/models/{getpage_retrieve_params.rb → export_retrieve_params.rb} +2 -2
  13. data/lib/tilda_ruby/models/export_retrieve_response.rb +69 -0
  14. data/lib/tilda_ruby/models/js_asset.rb +27 -0
  15. data/lib/tilda_ruby/models/page_body.rb +93 -0
  16. data/lib/tilda_ruby/models/page_export_body.rb +99 -0
  17. data/lib/tilda_ruby/models/page_export_full.rb +87 -0
  18. data/lib/tilda_ruby/models/page_full.rb +81 -0
  19. data/lib/tilda_ruby/models/{getpageslist_retrieve_params.rb → page_list_params.rb} +2 -2
  20. data/lib/tilda_ruby/models/page_list_response.rb +69 -0
  21. data/lib/tilda_ruby/models/{getpageexport_retrieve_params.rb → page_retrieve_full_params.rb} +2 -2
  22. data/lib/tilda_ruby/models/page_retrieve_full_response.rb +69 -0
  23. data/lib/tilda_ruby/models/{getpagefullexport_retrieve_params.rb → page_retrieve_params.rb} +2 -2
  24. data/lib/tilda_ruby/models/page_retrieve_response.rb +69 -0
  25. data/lib/tilda_ruby/models/page_summary.rb +75 -0
  26. data/lib/tilda_ruby/models/project_info.rb +81 -0
  27. data/lib/tilda_ruby/models/project_list_item.rb +27 -0
  28. data/lib/tilda_ruby/models/{getprojectslist_list_params.rb → project_list_params.rb} +2 -2
  29. data/lib/tilda_ruby/models/project_list_response.rb +69 -0
  30. data/lib/tilda_ruby/models/{getprojectinfo_retrieve_params.rb → project_retrieve_params.rb} +2 -2
  31. data/lib/tilda_ruby/models/project_retrieve_response.rb +69 -0
  32. data/lib/tilda_ruby/models.rb +25 -9
  33. data/lib/tilda_ruby/resources/export.rb +54 -0
  34. data/lib/tilda_ruby/resources/pages.rb +74 -0
  35. data/lib/tilda_ruby/resources/projects.rb +50 -0
  36. data/lib/tilda_ruby/version.rb +1 -1
  37. data/lib/tilda_ruby.rb +26 -22
  38. data/rbi/tilda_ruby/client.rbi +27 -21
  39. data/rbi/tilda_ruby/internal/transport/base_client.rbi +1 -1
  40. data/rbi/tilda_ruby/internal/util.rbi +28 -0
  41. data/rbi/tilda_ruby/models/css_asset.rbi +26 -0
  42. data/rbi/tilda_ruby/models/{getpagefull_retrieve_params.rbi → export_retrieve_full_params.rbi} +2 -2
  43. data/rbi/tilda_ruby/models/export_retrieve_full_response.rbi +173 -0
  44. data/rbi/tilda_ruby/models/{getpage_retrieve_params.rbi → export_retrieve_params.rbi} +2 -2
  45. data/rbi/tilda_ruby/models/export_retrieve_response.rbi +173 -0
  46. data/rbi/tilda_ruby/models/js_asset.rbi +36 -0
  47. data/rbi/tilda_ruby/models/page_body.rbi +119 -0
  48. data/rbi/tilda_ruby/models/page_export_body.rbi +128 -0
  49. data/rbi/tilda_ruby/models/page_export_full.rbi +110 -0
  50. data/rbi/tilda_ruby/models/page_full.rbi +101 -0
  51. data/rbi/tilda_ruby/models/{getpageslist_retrieve_params.rbi → page_list_params.rbi} +2 -5
  52. data/rbi/tilda_ruby/models/page_list_response.rbi +170 -0
  53. data/rbi/tilda_ruby/models/{getpageexport_retrieve_params.rbi → page_retrieve_full_params.rbi} +2 -5
  54. data/rbi/tilda_ruby/models/page_retrieve_full_response.rbi +173 -0
  55. data/rbi/tilda_ruby/models/{getpagefullexport_retrieve_params.rbi → page_retrieve_params.rbi} +2 -5
  56. data/rbi/tilda_ruby/models/page_retrieve_response.rbi +173 -0
  57. data/rbi/tilda_ruby/models/page_summary.rbi +95 -0
  58. data/rbi/tilda_ruby/models/project_info.rbi +104 -0
  59. data/rbi/tilda_ruby/models/project_list_item.rbi +33 -0
  60. data/rbi/tilda_ruby/models/{getprojectslist_list_params.rbi → project_list_params.rbi} +2 -5
  61. data/rbi/tilda_ruby/models/project_list_response.rbi +170 -0
  62. data/rbi/tilda_ruby/models/{getprojectinfo_retrieve_params.rbi → project_retrieve_params.rbi} +2 -5
  63. data/rbi/tilda_ruby/models/project_retrieve_response.rbi +173 -0
  64. data/rbi/tilda_ruby/models.rbi +25 -10
  65. data/rbi/tilda_ruby/resources/{getpage.rbi → export.rbi} +11 -2
  66. data/rbi/tilda_ruby/resources/pages.rbi +39 -0
  67. data/rbi/tilda_ruby/resources/{getpageslist.rbi → projects.rbi} +10 -2
  68. data/sig/tilda_ruby/client.rbs +10 -11
  69. data/sig/tilda_ruby/internal/transport/base_client.rbs +1 -1
  70. data/sig/tilda_ruby/internal/util.rbs +14 -0
  71. data/sig/tilda_ruby/models/css_asset.rbs +15 -0
  72. data/sig/tilda_ruby/models/{getpagefull_retrieve_params.rbs → export_retrieve_full_params.rbs} +2 -2
  73. data/sig/tilda_ruby/models/export_retrieve_full_response.rbs +79 -0
  74. data/sig/tilda_ruby/models/{getpage_retrieve_params.rbs → export_retrieve_params.rbs} +2 -2
  75. data/sig/tilda_ruby/models/export_retrieve_response.rbs +79 -0
  76. data/sig/tilda_ruby/models/js_asset.rbs +23 -0
  77. data/sig/tilda_ruby/models/page_body.rbs +89 -0
  78. data/sig/tilda_ruby/models/page_export_body.rbs +98 -0
  79. data/sig/tilda_ruby/models/page_export_full.rbs +84 -0
  80. data/sig/tilda_ruby/models/page_full.rbs +75 -0
  81. data/sig/tilda_ruby/models/{getpageslist_retrieve_params.rbs → page_list_params.rbs} +2 -2
  82. data/sig/tilda_ruby/models/page_list_response.rbs +79 -0
  83. data/sig/tilda_ruby/models/{getpageexport_retrieve_params.rbs → page_retrieve_full_params.rbs} +2 -2
  84. data/sig/tilda_ruby/models/page_retrieve_full_response.rbs +79 -0
  85. data/sig/tilda_ruby/models/{getpagefullexport_retrieve_params.rbs → page_retrieve_params.rbs} +2 -2
  86. data/sig/tilda_ruby/models/page_retrieve_response.rbs +79 -0
  87. data/sig/tilda_ruby/models/page_summary.rbs +70 -0
  88. data/sig/tilda_ruby/models/project_info.rbs +79 -0
  89. data/sig/tilda_ruby/models/project_list_item.rbs +17 -0
  90. data/sig/tilda_ruby/models/{getprojectslist_list_params.rbs → project_list_params.rbs} +2 -2
  91. data/sig/tilda_ruby/models/project_list_response.rbs +79 -0
  92. data/sig/tilda_ruby/models/{getprojectinfo_retrieve_params.rbs → project_retrieve_params.rbs} +2 -2
  93. data/sig/tilda_ruby/models/project_retrieve_response.rbs +79 -0
  94. data/sig/tilda_ruby/models.rbs +25 -9
  95. data/sig/tilda_ruby/resources/export.rbs +17 -0
  96. data/sig/tilda_ruby/resources/pages.rbs +22 -0
  97. data/sig/tilda_ruby/resources/{getpageslist.rbs → projects.rbs} +6 -2
  98. metadata +80 -68
  99. data/lib/tilda_ruby/models/error.rb +0 -31
  100. data/lib/tilda_ruby/models/getpage_retrieve_response.rb +0 -132
  101. data/lib/tilda_ruby/models/getpageexport_retrieve_response.rb +0 -178
  102. data/lib/tilda_ruby/models/getpagefull_retrieve_response.rb +0 -120
  103. data/lib/tilda_ruby/models/getpagefullexport_retrieve_response.rb +0 -126
  104. data/lib/tilda_ruby/models/getpageslist_retrieve_response.rb +0 -114
  105. data/lib/tilda_ruby/models/getprojectinfo_retrieve_response.rb +0 -120
  106. data/lib/tilda_ruby/models/getprojectslist_list_response.rb +0 -66
  107. data/lib/tilda_ruby/resources/getpage.rb +0 -33
  108. data/lib/tilda_ruby/resources/getpageexport.rb +0 -33
  109. data/lib/tilda_ruby/resources/getpagefull.rb +0 -33
  110. data/lib/tilda_ruby/resources/getpagefullexport.rb +0 -33
  111. data/lib/tilda_ruby/resources/getpageslist.rb +0 -33
  112. data/lib/tilda_ruby/resources/getprojectinfo.rb +0 -33
  113. data/lib/tilda_ruby/resources/getprojectslist.rb +0 -30
  114. data/rbi/tilda_ruby/models/error.rbi +0 -51
  115. data/rbi/tilda_ruby/models/getpage_retrieve_response.rbi +0 -227
  116. data/rbi/tilda_ruby/models/getpageexport_retrieve_response.rbi +0 -340
  117. data/rbi/tilda_ruby/models/getpagefull_retrieve_response.rbi +0 -209
  118. data/rbi/tilda_ruby/models/getpagefullexport_retrieve_response.rbi +0 -220
  119. data/rbi/tilda_ruby/models/getpageslist_retrieve_response.rbi +0 -201
  120. data/rbi/tilda_ruby/models/getprojectinfo_retrieve_response.rbi +0 -212
  121. data/rbi/tilda_ruby/models/getprojectslist_list_response.rbi +0 -139
  122. data/rbi/tilda_ruby/resources/getpageexport.rbi +0 -21
  123. data/rbi/tilda_ruby/resources/getpagefull.rbi +0 -21
  124. data/rbi/tilda_ruby/resources/getpagefullexport.rbi +0 -23
  125. data/rbi/tilda_ruby/resources/getprojectinfo.rbi +0 -21
  126. data/rbi/tilda_ruby/resources/getprojectslist.rbi +0 -20
  127. data/sig/tilda_ruby/models/error.rbs +0 -33
  128. data/sig/tilda_ruby/models/getpage_retrieve_response.rbs +0 -131
  129. data/sig/tilda_ruby/models/getpageexport_retrieve_response.rbs +0 -176
  130. data/sig/tilda_ruby/models/getpagefull_retrieve_response.rbs +0 -117
  131. data/sig/tilda_ruby/models/getpagefullexport_retrieve_response.rbs +0 -126
  132. data/sig/tilda_ruby/models/getpageslist_retrieve_response.rbs +0 -112
  133. data/sig/tilda_ruby/models/getprojectinfo_retrieve_response.rbs +0 -121
  134. data/sig/tilda_ruby/models/getprojectslist_list_response.rbs +0 -59
  135. data/sig/tilda_ruby/resources/getpage.rbs +0 -12
  136. data/sig/tilda_ruby/resources/getpageexport.rbs +0 -12
  137. data/sig/tilda_ruby/resources/getpagefull.rbs +0 -12
  138. data/sig/tilda_ruby/resources/getpagefullexport.rbs +0 -12
  139. data/sig/tilda_ruby/resources/getprojectinfo.rbs +0 -12
  140. data/sig/tilda_ruby/resources/getprojectslist.rbs +0 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 81e7f289cd4f261e9a7550b6b1ad5621b69204e30519704c2026260bc9aa9843
4
- data.tar.gz: 76bd31c3c1b6c0e146c5b7a279f21f860738678c5b7a0e3afd1f361beb2049b8
3
+ metadata.gz: '068a7fcbbff23673a68889832eb699786ad1f1af35dca661c801d275e805174c'
4
+ data.tar.gz: 13ccc52749fc560530a3892b967343acc7d2e97ebff976d1f922777819d7672c
5
5
  SHA512:
6
- metadata.gz: 8f53922eafa8eef06edf84a43c05a15550f01442421219eabf0462cc73767dabdcc348fea3d3de335b756386aa43cbc6a549ab6d69ac8512f07666b7928db50b
7
- data.tar.gz: c19d02368bb871f273c27fa3d1d0da4ecba3d648e757b8ea21ab56eafeb64fa399b3b58bc2d45a02ba4bf4dc32fb6f372df403ee1a0c4f62ea99528a94788647
6
+ metadata.gz: 8c35f6e1aca14c2b52534592fb9cfe226d2425b8821716f32e8381b16a7c5c54de3aa653195e8cbbd353c8b5da636c3409fb53126461d7870668c2d16d93ace1
7
+ data.tar.gz: 2187e141e260f9ac047b7531a3c0a72e42ab15b7f072bffb192f1cbeac27b3d150e4d3563db81775e4e44c139d0a12371f8287753e8f2e5c06bbadcc1e5d9954
data/CHANGELOG.md CHANGED
@@ -1,5 +1,43 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.1 (2026-04-23)
4
+
5
+ Full Changelog: [v0.1.0...v0.1.1](https://github.com/Hexlet/tilda-ruby/compare/v0.1.0...v0.1.1)
6
+
7
+ ### Bug Fixes
8
+
9
+ * align path encoding with RFC 3986 section 3.3 ([d7f226e](https://github.com/Hexlet/tilda-ruby/commit/d7f226ee1e911022731bb549332d7101c2cd2478))
10
+ * **internal:** correct multipart form field name encoding ([9884a9f](https://github.com/Hexlet/tilda-ruby/commit/9884a9fcd0986e44bd3b4ec94b05a47767003d6b))
11
+ * multipart encoding for file arrays ([6291536](https://github.com/Hexlet/tilda-ruby/commit/62915360378c7ad798e184239e7bc1aedc055e04))
12
+ * properly mock time in ruby ci tests ([137828d](https://github.com/Hexlet/tilda-ruby/commit/137828d8011b68ed9b2a5214d425d19b57188146))
13
+ * variable name typo ([fbf382c](https://github.com/Hexlet/tilda-ruby/commit/fbf382c5911c5d6a09bd76e96e3766191af8ff44))
14
+
15
+
16
+ ### Chores
17
+
18
+ * **ci:** add build step ([99b5132](https://github.com/Hexlet/tilda-ruby/commit/99b51329fea77ff1180ca43f5bb8a68c4967c1a0))
19
+ * **ci:** skip lint on metadata-only changes ([9b7dea9](https://github.com/Hexlet/tilda-ruby/commit/9b7dea9127acaafe181625ec03c8fdd3b9be46cf))
20
+ * **ci:** skip uploading artifacts on stainless-internal branches ([d7ed60f](https://github.com/Hexlet/tilda-ruby/commit/d7ed60f8006ff93351974768ed7c6674456d6974))
21
+ * **ci:** support opting out of skipping builds on metadata-only commits ([504d8af](https://github.com/Hexlet/tilda-ruby/commit/504d8af0f1f2998d35b814545fd1b221b30b85f8))
22
+ * **internal:** codegen related update ([84f2624](https://github.com/Hexlet/tilda-ruby/commit/84f262489527dbb97b1298cb9a8ede204dc39e0d))
23
+ * **internal:** more robust bootstrap script ([68ddffb](https://github.com/Hexlet/tilda-ruby/commit/68ddffbb2456783c4d7736dae3cf5585fdbedd68))
24
+ * **internal:** tweak CI branches ([575d673](https://github.com/Hexlet/tilda-ruby/commit/575d673eeb2ee1877a89b02331d1e7796c9e84af))
25
+ * **internal:** update gitignore ([6a4ef71](https://github.com/Hexlet/tilda-ruby/commit/6a4ef717e732c3ee684071550f0404b4975d8de7))
26
+
27
+ ## 0.1.0 (2026-02-25)
28
+
29
+ Full Changelog: [v0.0.2...v0.1.0](https://github.com/Hexlet/tilda-ruby/compare/v0.0.2...v0.1.0)
30
+
31
+ ### Features
32
+
33
+ * **api:** api update ([47ee2ad](https://github.com/Hexlet/tilda-ruby/commit/47ee2adb8d2970bc21e6f341e9bceecd0aae75e3))
34
+
35
+
36
+ ### Chores
37
+
38
+ * **internal:** remove mock server code ([8167f07](https://github.com/Hexlet/tilda-ruby/commit/8167f076541164d8a4293a5114d01e71a6535368))
39
+ * update mock server docs ([ddc83e5](https://github.com/Hexlet/tilda-ruby/commit/ddc83e5cddb26e1b0a38489a663297e22bf16d01))
40
+
3
41
  ## 0.0.2 (2026-02-14)
4
42
 
5
43
  Full Changelog: [v0.0.1...v0.0.2](https://github.com/Hexlet/tilda-ruby/compare/v0.0.1...v0.0.2)
data/README.md CHANGED
@@ -8,6 +8,8 @@ It is generated with [Stainless](https://www.stainless.com/).
8
8
 
9
9
  Documentation for releases of this gem can be found [on RubyDoc](https://gemdocs.org/gems/tilda-ruby).
10
10
 
11
+ The REST API documentation can be found on [help-ru.tilda.cc](https://help-ru.tilda.cc/api).
12
+
11
13
  ## Installation
12
14
 
13
15
  To use this gem, install via Bundler by adding the following to your application's `Gemfile`:
@@ -15,7 +17,7 @@ To use this gem, install via Bundler by adding the following to your application
15
17
  <!-- x-release-please-start-version -->
16
18
 
17
19
  ```ruby
18
- gem "tilda-ruby", "~> 0.0.2"
20
+ gem "tilda-ruby", "~> 0.1.1"
19
21
  ```
20
22
 
21
23
  <!-- x-release-please-end -->
@@ -26,13 +28,11 @@ gem "tilda-ruby", "~> 0.0.2"
26
28
  require "bundler/setup"
27
29
  require "tilda_ruby"
28
30
 
29
- tilda = TildaRuby::Client.new(
30
- api_key: ENV["TILDA_API_KEY"] # This is the default and can be omitted
31
- )
31
+ tilda = TildaRuby::Client.new(publickey: "My Publickey", secretkey: "My Secretkey")
32
32
 
33
- getpage = tilda.getpage.retrieve(pageid: "REPLACE_ME")
33
+ projects = tilda.projects.list
34
34
 
35
- puts(getpage)
35
+ puts(projects)
36
36
  ```
37
37
 
38
38
  ### Handling errors
@@ -41,7 +41,7 @@ When the library is unable to connect to the API, or if the API returns a non-su
41
41
 
42
42
  ```ruby
43
43
  begin
44
- getpage = tilda.getpage.retrieve(pageid: "REPLACE_ME")
44
+ project = tilda.projects.list
45
45
  rescue TildaRuby::Errors::APIConnectionError => e
46
46
  puts("The server could not be reached")
47
47
  puts(e.cause) # an underlying Exception, likely raised within `net/http`
@@ -84,7 +84,7 @@ tilda = TildaRuby::Client.new(
84
84
  )
85
85
 
86
86
  # Or, configure per-request:
87
- tilda.getpage.retrieve(pageid: "REPLACE_ME", request_options: {max_retries: 5})
87
+ tilda.projects.list(request_options: {max_retries: 5})
88
88
  ```
89
89
 
90
90
  ### Timeouts
@@ -98,7 +98,7 @@ tilda = TildaRuby::Client.new(
98
98
  )
99
99
 
100
100
  # Or, configure per-request:
101
- tilda.getpage.retrieve(pageid: "REPLACE_ME", request_options: {timeout: 5})
101
+ tilda.projects.list(request_options: {timeout: 5})
102
102
  ```
103
103
 
104
104
  On timeout, `TildaRuby::Errors::APITimeoutError` is raised.
@@ -128,9 +128,8 @@ You can send undocumented parameters to any endpoint, and read undocumented resp
128
128
  Note: the `extra_` parameters of the same name overrides the documented parameters.
129
129
 
130
130
  ```ruby
131
- getpage =
132
- tilda.getpage.retrieve(
133
- pageid: "REPLACE_ME",
131
+ projects =
132
+ tilda.projects.list(
134
133
  request_options: {
135
134
  extra_query: {my_query_parameter: value},
136
135
  extra_body: {my_body_parameter: value},
@@ -138,7 +137,7 @@ getpage =
138
137
  }
139
138
  )
140
139
 
141
- puts(getpage[:my_undocumented_property])
140
+ puts(projects[:my_undocumented_property])
142
141
  ```
143
142
 
144
143
  #### Undocumented request params
@@ -176,18 +175,18 @@ This library provides comprehensive [RBI](https://sorbet.org/docs/rbi) definitio
176
175
  You can provide typesafe request parameters like so:
177
176
 
178
177
  ```ruby
179
- tilda.getpage.retrieve(pageid: "REPLACE_ME")
178
+ tilda.projects.list
180
179
  ```
181
180
 
182
181
  Or, equivalently:
183
182
 
184
183
  ```ruby
185
184
  # Hashes work, but are not typesafe:
186
- tilda.getpage.retrieve(pageid: "REPLACE_ME")
185
+ tilda.projects.list
187
186
 
188
187
  # You can also splat a full Params class:
189
- params = TildaRuby::GetpageRetrieveParams.new(pageid: "REPLACE_ME")
190
- tilda.getpage.retrieve(**params)
188
+ params = TildaRuby::ProjectListParams.new
189
+ tilda.projects.list(**params)
191
190
  ```
192
191
 
193
192
  ## Versioning
@@ -15,42 +15,49 @@ module TildaRuby
15
15
  # Default max retry delay in seconds.
16
16
  DEFAULT_MAX_RETRY_DELAY = 8.0
17
17
 
18
+ # Tilda API public key
18
19
  # @return [String, nil]
19
- attr_reader :api_key
20
+ attr_reader :publickey
20
21
 
21
- # @return [TildaRuby::Resources::Getpage]
22
- attr_reader :getpage
23
-
24
- # @return [TildaRuby::Resources::Getpageexport]
25
- attr_reader :getpageexport
26
-
27
- # @return [TildaRuby::Resources::Getpagefull]
28
- attr_reader :getpagefull
22
+ # Tilda API secret key
23
+ # @return [String, nil]
24
+ attr_reader :secretkey
29
25
 
30
- # @return [TildaRuby::Resources::Getpagefullexport]
31
- attr_reader :getpagefullexport
26
+ # @return [TildaRuby::Resources::Projects]
27
+ attr_reader :projects
32
28
 
33
- # @return [TildaRuby::Resources::Getpageslist]
34
- attr_reader :getpageslist
29
+ # @return [TildaRuby::Resources::Pages]
30
+ attr_reader :pages
35
31
 
36
- # @return [TildaRuby::Resources::Getprojectinfo]
37
- attr_reader :getprojectinfo
32
+ # @return [TildaRuby::Resources::Export]
33
+ attr_reader :export
38
34
 
39
- # @return [TildaRuby::Resources::Getprojectslist]
40
- attr_reader :getprojectslist
35
+ # @api private
36
+ #
37
+ # @return [Hash{String=>String}]
38
+ private def auth_query
39
+ {**public_key_auth, **secret_key_auth}
40
+ end
41
41
 
42
42
  # @api private
43
43
  #
44
44
  # @return [Hash{String=>String}]
45
- private def auth_headers
46
- return {} if @api_key.nil?
45
+ private def public_key_auth
46
+ {"publickey" => @publickey}
47
+ end
47
48
 
48
- {"authorization" => "Bearer #{@api_key}"}
49
+ # @api private
50
+ #
51
+ # @return [Hash{String=>String}]
52
+ private def secret_key_auth
53
+ {"secretkey" => @secretkey}
49
54
  end
50
55
 
51
56
  # Creates and returns a new client for interacting with the API.
52
57
  #
53
- # @param api_key [String, nil] Defaults to `ENV["TILDA_API_KEY"]`
58
+ # @param publickey [String, nil] Tilda API public key
59
+ #
60
+ # @param secretkey [String, nil] Tilda API secret key
54
61
  #
55
62
  # @param base_url [String, nil] Override the default base URL for the API, e.g.,
56
63
  # `"https://api.example.com/v2/"`. Defaults to `ENV["TILDA_BASE_URL"]`
@@ -63,7 +70,8 @@ module TildaRuby
63
70
  #
64
71
  # @param max_retry_delay [Float]
65
72
  def initialize(
66
- api_key: ENV["TILDA_API_KEY"],
73
+ publickey: nil,
74
+ secretkey: nil,
67
75
  base_url: ENV["TILDA_BASE_URL"],
68
76
  max_retries: self.class::DEFAULT_MAX_RETRIES,
69
77
  timeout: self.class::DEFAULT_TIMEOUT_IN_SECONDS,
@@ -72,7 +80,8 @@ module TildaRuby
72
80
  )
73
81
  base_url ||= "https://api.tildacdn.info"
74
82
 
75
- @api_key = api_key&.to_s
83
+ @publickey = publickey&.to_s
84
+ @secretkey = secretkey&.to_s
76
85
 
77
86
  super(
78
87
  base_url: base_url,
@@ -82,13 +91,9 @@ module TildaRuby
82
91
  max_retry_delay: max_retry_delay
83
92
  )
84
93
 
85
- @getpage = TildaRuby::Resources::Getpage.new(client: self)
86
- @getpageexport = TildaRuby::Resources::Getpageexport.new(client: self)
87
- @getpagefull = TildaRuby::Resources::Getpagefull.new(client: self)
88
- @getpagefullexport = TildaRuby::Resources::Getpagefullexport.new(client: self)
89
- @getpageslist = TildaRuby::Resources::Getpageslist.new(client: self)
90
- @getprojectinfo = TildaRuby::Resources::Getprojectinfo.new(client: self)
91
- @getprojectslist = TildaRuby::Resources::Getprojectslist.new(client: self)
94
+ @projects = TildaRuby::Resources::Projects.new(client: self)
95
+ @pages = TildaRuby::Resources::Pages.new(client: self)
96
+ @export = TildaRuby::Resources::Export.new(client: self)
92
97
  end
93
98
  end
94
99
  end
@@ -218,7 +218,7 @@ module TildaRuby
218
218
  # @api private
219
219
  #
220
220
  # @return [Hash{String=>String}]
221
- private def auth_headers = {}
221
+ private def auth_query = {}
222
222
 
223
223
  # @api private
224
224
  #
@@ -272,11 +272,10 @@ module TildaRuby
272
272
 
273
273
  path = TildaRuby::Internal::Util.interpolate_path(uninterpolated_path)
274
274
 
275
- query = TildaRuby::Internal::Util.deep_merge(req[:query].to_h, opts[:extra_query].to_h)
275
+ query = TildaRuby::Internal::Util.deep_merge(auth_query, req[:query].to_h, opts[:extra_query].to_h)
276
276
 
277
277
  headers = TildaRuby::Internal::Util.normalized_headers(
278
278
  @headers,
279
- auth_headers,
280
279
  req[:headers].to_h,
281
280
  opts[:extra_headers].to_h
282
281
  )
@@ -438,10 +438,10 @@ module TildaRuby
438
438
  # @return [Hash{Symbol=>Object}]
439
439
  #
440
440
  # @example
441
- # # `error` is a `TildaRuby::Error`
442
- # error => {
443
- # status: status,
444
- # message: message
441
+ # # `image_mapping` is a `TildaRuby::ImageMapping`
442
+ # image_mapping => {
443
+ # from: from,
444
+ # to: to
445
445
  # }
446
446
  def deconstruct_keys(keys)
447
447
  (keys || self.class.known_fields.keys)
@@ -6,14 +6,14 @@ module TildaRuby
6
6
  # @api private
7
7
  #
8
8
  # @example
9
- # # `getpage_retrieve_response` is a `TildaRuby::Models::GetpageRetrieveResponse`
10
- # case getpage_retrieve_response
11
- # when TildaRuby::Models::GetpageRetrieveResponse::UnionMember0
12
- # puts(getpage_retrieve_response.result)
13
- # when TildaRuby::Error
14
- # puts(getpage_retrieve_response.status)
9
+ # # `project_retrieve_response` is a `TildaRuby::Models::ProjectRetrieveResponse`
10
+ # case project_retrieve_response
11
+ # when TildaRuby::Models::ProjectRetrieveResponse::UnionMember0
12
+ # puts(project_retrieve_response.result)
13
+ # when TildaRuby::Models::ProjectRetrieveResponse::ErrorResponse
14
+ # puts(project_retrieve_response.status)
15
15
  # else
16
- # puts(getpage_retrieve_response)
16
+ # puts(project_retrieve_response)
17
17
  # end
18
18
  module Union
19
19
  include TildaRuby::Internal::Type::Converter
@@ -157,7 +157,7 @@ module TildaRuby
157
157
  in Hash | nil => coerced
158
158
  coerced
159
159
  else
160
- message = "Expected a #{Hash} or #{TildaRuby::Internal::Type::BaseModel}, got #{data.inspect}"
160
+ message = "Expected a #{Hash} or #{TildaRuby::Internal::Type::BaseModel}, got #{input.inspect}"
161
161
  raise ArgumentError.new(message)
162
162
  end
163
163
  end
@@ -237,6 +237,11 @@ module TildaRuby
237
237
  end
238
238
  end
239
239
 
240
+ # @type [Regexp]
241
+ #
242
+ # https://www.rfc-editor.org/rfc/rfc3986.html#section-3.3
243
+ RFC_3986_NOT_PCHARS = /[^A-Za-z0-9\-._~!$&'()*+,;=:@]+/
244
+
240
245
  class << self
241
246
  # @api private
242
247
  #
@@ -247,6 +252,15 @@ module TildaRuby
247
252
  "#{uri.scheme}://#{uri.host}#{":#{uri.port}" unless uri.port == uri.default_port}"
248
253
  end
249
254
 
255
+ # @api private
256
+ #
257
+ # @param path [String, Integer]
258
+ #
259
+ # @return [String]
260
+ def encode_path(path)
261
+ path.to_s.gsub(TildaRuby::Internal::Util::RFC_3986_NOT_PCHARS) { ERB::Util.url_encode(_1) }
262
+ end
263
+
250
264
  # @api private
251
265
  #
252
266
  # @param path [String, Array<String>]
@@ -259,7 +273,7 @@ module TildaRuby
259
273
  in []
260
274
  ""
261
275
  in [String => p, *interpolations]
262
- encoded = interpolations.map { ERB::Util.url_encode(_1) }
276
+ encoded = interpolations.map { encode_path(_1) }
263
277
  format(p, *encoded)
264
278
  end
265
279
  end
@@ -490,6 +504,37 @@ module TildaRuby
490
504
  JSONL_CONTENT = %r{^application/(:?x-(?:n|l)djson)|(:?(?:x-)?jsonl)}
491
505
 
492
506
  class << self
507
+ # @api private
508
+ #
509
+ # @param query [Hash{Symbol=>Object}]
510
+ #
511
+ # @return [Hash{Symbol=>Object}]
512
+ def encode_query_params(query)
513
+ out = {}
514
+ query.each { write_query_param_element!(out, _1, _2) }
515
+ out
516
+ end
517
+
518
+ # @api private
519
+ #
520
+ # @param collection [Hash{Symbol=>Object}]
521
+ # @param key [String]
522
+ # @param element [Object]
523
+ #
524
+ # @return [nil]
525
+ private def write_query_param_element!(collection, key, element)
526
+ case element
527
+ in Hash
528
+ element.each do |name, value|
529
+ write_query_param_element!(collection, "#{key}[#{name}]", value)
530
+ end
531
+ in Array
532
+ collection[key] = element.map(&:to_s).join(",")
533
+ else
534
+ collection[key] = element.to_s
535
+ end
536
+ end
537
+
493
538
  # @api private
494
539
  #
495
540
  # @param y [Enumerator::Yielder]
@@ -540,16 +585,15 @@ module TildaRuby
540
585
  y << "Content-Disposition: form-data"
541
586
 
542
587
  unless key.nil?
543
- name = ERB::Util.url_encode(key.to_s)
544
- y << "; name=\"#{name}\""
588
+ y << "; name=\"#{key}\""
545
589
  end
546
590
 
547
591
  case val
548
592
  in TildaRuby::FilePart unless val.filename.nil?
549
- filename = ERB::Util.url_encode(val.filename)
593
+ filename = encode_path(val.filename)
550
594
  y << "; filename=\"#{filename}\""
551
595
  in Pathname | IO
552
- filename = ERB::Util.url_encode(::File.basename(val.to_path))
596
+ filename = encode_path(::File.basename(val.to_path))
553
597
  y << "; filename=\"#{filename}\""
554
598
  else
555
599
  end
@@ -566,6 +610,7 @@ module TildaRuby
566
610
  #
567
611
  # @return [Array(String, Enumerable<String>)]
568
612
  private def encode_multipart_streaming(body)
613
+ # rubocop:disable Style/CaseEquality
569
614
  # RFC 1521 Section 7.2.1 says we should have 70 char maximum for boundary length
570
615
  boundary = SecureRandom.urlsafe_base64(46)
571
616
 
@@ -575,7 +620,7 @@ module TildaRuby
575
620
  in Hash
576
621
  body.each do |key, val|
577
622
  case val
578
- in Array if val.all? { primitive?(_1) }
623
+ in Array if val.all? { primitive?(_1) || TildaRuby::Internal::Type::FileInput === _1 }
579
624
  val.each do |v|
580
625
  write_multipart_chunk(y, boundary: boundary, key: key, val: v, closing: closing)
581
626
  end
@@ -591,6 +636,7 @@ module TildaRuby
591
636
 
592
637
  fused_io = fused_enum(strio) { closing.each(&:call) }
593
638
  [boundary, fused_io]
639
+ # rubocop:enable Style/CaseEquality
594
640
  end
595
641
 
596
642
  # @api private
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TildaRuby
4
+ module Models
5
+ class CssAsset < TildaRuby::Internal::Type::BaseModel
6
+ # @!attribute from
7
+ #
8
+ # @return [String]
9
+ required :from, String
10
+
11
+ # @!attribute to
12
+ #
13
+ # @return [String]
14
+ required :to, String
15
+
16
+ # @!method initialize(from:, to:)
17
+ # @param from [String]
18
+ # @param to [String]
19
+ end
20
+ end
21
+ end
@@ -2,8 +2,8 @@
2
2
 
3
3
  module TildaRuby
4
4
  module Models
5
- # @see TildaRuby::Resources::Getpagefull#retrieve
6
- class GetpagefullRetrieveParams < TildaRuby::Internal::Type::BaseModel
5
+ # @see TildaRuby::Resources::Export#retrieve_full
6
+ class ExportRetrieveFullParams < TildaRuby::Internal::Type::BaseModel
7
7
  extend TildaRuby::Internal::Type::RequestParameters::Converter
8
8
  include TildaRuby::Internal::Type::RequestParameters
9
9
 
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TildaRuby
4
+ module Models
5
+ # @see TildaRuby::Resources::Export#retrieve_full
6
+ module ExportRetrieveFullResponse
7
+ extend TildaRuby::Internal::Type::Union
8
+
9
+ variant -> { TildaRuby::Models::ExportRetrieveFullResponse::UnionMember0 }
10
+
11
+ variant -> { TildaRuby::Models::ExportRetrieveFullResponse::ErrorResponse }
12
+
13
+ class UnionMember0 < TildaRuby::Internal::Type::BaseModel
14
+ # @!attribute result
15
+ #
16
+ # @return [TildaRuby::Models::PageExportFull]
17
+ required :result, -> { TildaRuby::PageExportFull }
18
+
19
+ # @!attribute status
20
+ #
21
+ # @return [Symbol, TildaRuby::Models::ExportRetrieveFullResponse::UnionMember0::Status]
22
+ required :status, enum: -> { TildaRuby::Models::ExportRetrieveFullResponse::UnionMember0::Status }
23
+
24
+ # @!method initialize(result:, status:)
25
+ # @param result [TildaRuby::Models::PageExportFull]
26
+ # @param status [Symbol, TildaRuby::Models::ExportRetrieveFullResponse::UnionMember0::Status]
27
+
28
+ # @see TildaRuby::Models::ExportRetrieveFullResponse::UnionMember0#status
29
+ module Status
30
+ extend TildaRuby::Internal::Type::Enum
31
+
32
+ FOUND = :FOUND
33
+
34
+ # @!method self.values
35
+ # @return [Array<Symbol>]
36
+ end
37
+ end
38
+
39
+ class ErrorResponse < TildaRuby::Internal::Type::BaseModel
40
+ # @!attribute status
41
+ #
42
+ # @return [Symbol, TildaRuby::Models::ExportRetrieveFullResponse::ErrorResponse::Status]
43
+ required :status, enum: -> { TildaRuby::Models::ExportRetrieveFullResponse::ErrorResponse::Status }
44
+
45
+ # @!attribute message
46
+ #
47
+ # @return [String, nil]
48
+ optional :message, String
49
+
50
+ # @!method initialize(status:, message: nil)
51
+ # @param status [Symbol, TildaRuby::Models::ExportRetrieveFullResponse::ErrorResponse::Status]
52
+ # @param message [String]
53
+
54
+ # @see TildaRuby::Models::ExportRetrieveFullResponse::ErrorResponse#status
55
+ module Status
56
+ extend TildaRuby::Internal::Type::Enum
57
+
58
+ ERROR = :ERROR
59
+
60
+ # @!method self.values
61
+ # @return [Array<Symbol>]
62
+ end
63
+ end
64
+
65
+ # @!method self.variants
66
+ # @return [Array(TildaRuby::Models::ExportRetrieveFullResponse::UnionMember0, TildaRuby::Models::ExportRetrieveFullResponse::ErrorResponse)]
67
+ end
68
+ end
69
+ end
@@ -2,8 +2,8 @@
2
2
 
3
3
  module TildaRuby
4
4
  module Models
5
- # @see TildaRuby::Resources::Getpage#retrieve
6
- class GetpageRetrieveParams < TildaRuby::Internal::Type::BaseModel
5
+ # @see TildaRuby::Resources::Export#retrieve
6
+ class ExportRetrieveParams < TildaRuby::Internal::Type::BaseModel
7
7
  extend TildaRuby::Internal::Type::RequestParameters::Converter
8
8
  include TildaRuby::Internal::Type::RequestParameters
9
9
 
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TildaRuby
4
+ module Models
5
+ # @see TildaRuby::Resources::Export#retrieve
6
+ module ExportRetrieveResponse
7
+ extend TildaRuby::Internal::Type::Union
8
+
9
+ variant -> { TildaRuby::Models::ExportRetrieveResponse::UnionMember0 }
10
+
11
+ variant -> { TildaRuby::Models::ExportRetrieveResponse::ErrorResponse }
12
+
13
+ class UnionMember0 < TildaRuby::Internal::Type::BaseModel
14
+ # @!attribute result
15
+ #
16
+ # @return [TildaRuby::Models::PageExportBody]
17
+ required :result, -> { TildaRuby::PageExportBody }
18
+
19
+ # @!attribute status
20
+ #
21
+ # @return [Symbol, TildaRuby::Models::ExportRetrieveResponse::UnionMember0::Status]
22
+ required :status, enum: -> { TildaRuby::Models::ExportRetrieveResponse::UnionMember0::Status }
23
+
24
+ # @!method initialize(result:, status:)
25
+ # @param result [TildaRuby::Models::PageExportBody]
26
+ # @param status [Symbol, TildaRuby::Models::ExportRetrieveResponse::UnionMember0::Status]
27
+
28
+ # @see TildaRuby::Models::ExportRetrieveResponse::UnionMember0#status
29
+ module Status
30
+ extend TildaRuby::Internal::Type::Enum
31
+
32
+ FOUND = :FOUND
33
+
34
+ # @!method self.values
35
+ # @return [Array<Symbol>]
36
+ end
37
+ end
38
+
39
+ class ErrorResponse < TildaRuby::Internal::Type::BaseModel
40
+ # @!attribute status
41
+ #
42
+ # @return [Symbol, TildaRuby::Models::ExportRetrieveResponse::ErrorResponse::Status]
43
+ required :status, enum: -> { TildaRuby::Models::ExportRetrieveResponse::ErrorResponse::Status }
44
+
45
+ # @!attribute message
46
+ #
47
+ # @return [String, nil]
48
+ optional :message, String
49
+
50
+ # @!method initialize(status:, message: nil)
51
+ # @param status [Symbol, TildaRuby::Models::ExportRetrieveResponse::ErrorResponse::Status]
52
+ # @param message [String]
53
+
54
+ # @see TildaRuby::Models::ExportRetrieveResponse::ErrorResponse#status
55
+ module Status
56
+ extend TildaRuby::Internal::Type::Enum
57
+
58
+ ERROR = :ERROR
59
+
60
+ # @!method self.values
61
+ # @return [Array<Symbol>]
62
+ end
63
+ end
64
+
65
+ # @!method self.variants
66
+ # @return [Array(TildaRuby::Models::ExportRetrieveResponse::UnionMember0, TildaRuby::Models::ExportRetrieveResponse::ErrorResponse)]
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TildaRuby
4
+ module Models
5
+ class JsAsset < TildaRuby::Internal::Type::BaseModel
6
+ # @!attribute from
7
+ #
8
+ # @return [String]
9
+ required :from, String
10
+
11
+ # @!attribute to
12
+ #
13
+ # @return [String]
14
+ required :to, String
15
+
16
+ # @!attribute attrs
17
+ #
18
+ # @return [Array<String>, nil]
19
+ optional :attrs, TildaRuby::Internal::Type::ArrayOf[String]
20
+
21
+ # @!method initialize(from:, to:, attrs: nil)
22
+ # @param from [String]
23
+ # @param to [String]
24
+ # @param attrs [Array<String>]
25
+ end
26
+ end
27
+ end