dub 0.2.2.pre.alpha.78 → 0.2.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 (237) hide show
  1. checksums.yaml +4 -4
  2. data/lib/dub.rb +5 -9
  3. data/lib/open_api_sdk/analytics.rb +13 -19
  4. data/lib/open_api_sdk/domains.rb +95 -115
  5. data/lib/open_api_sdk/dub.rb +40 -37
  6. data/lib/open_api_sdk/links.rb +156 -276
  7. data/lib/open_api_sdk/metatags.rb +4 -10
  8. data/lib/open_api_sdk/models/operations/bulkcreatelinks_response.rb +7 -7
  9. data/lib/open_api_sdk/models/operations/bulkupdatelinks_requestbody.rb +6 -9
  10. data/lib/open_api_sdk/models/operations/bulkupdatelinks_response.rb +2 -2
  11. data/lib/open_api_sdk/models/operations/color.rb +2 -1
  12. data/lib/open_api_sdk/models/operations/createdomain_requestbody.rb +4 -16
  13. data/lib/open_api_sdk/models/operations/createdomain_response.rb +2 -2
  14. data/lib/open_api_sdk/models/operations/createlink_requestbody.rb +13 -51
  15. data/lib/open_api_sdk/models/operations/createlink_response.rb +2 -2
  16. data/lib/open_api_sdk/models/operations/createtag_requestbody.rb +2 -2
  17. data/lib/open_api_sdk/models/operations/createtag_response.rb +2 -2
  18. data/lib/open_api_sdk/models/operations/data.rb +12 -50
  19. data/lib/open_api_sdk/models/operations/deletedomain_request.rb +2 -2
  20. data/lib/open_api_sdk/models/operations/deletedomain_response.rb +2 -2
  21. data/lib/open_api_sdk/models/operations/deletedomain_responsebody.rb +2 -2
  22. data/lib/open_api_sdk/models/operations/deletelink_request.rb +2 -2
  23. data/lib/open_api_sdk/models/operations/deletelink_response.rb +3 -3
  24. data/lib/open_api_sdk/models/operations/deletelink_responsebody.rb +3 -3
  25. data/lib/open_api_sdk/models/operations/event.rb +3 -2
  26. data/lib/open_api_sdk/models/operations/getlinkinfo_request.rb +3 -3
  27. data/lib/open_api_sdk/models/operations/getlinkinfo_response.rb +2 -2
  28. data/lib/open_api_sdk/models/operations/getlinks_request.rb +10 -25
  29. data/lib/open_api_sdk/models/operations/getlinks_response.rb +2 -2
  30. data/lib/open_api_sdk/models/operations/getlinkscount_request.rb +7 -13
  31. data/lib/open_api_sdk/models/operations/getlinkscount_response.rb +2 -2
  32. data/lib/open_api_sdk/models/operations/getmetatags_request.rb +2 -2
  33. data/lib/open_api_sdk/models/operations/getmetatags_response.rb +2 -2
  34. data/lib/open_api_sdk/models/operations/getmetatags_responsebody.rb +2 -2
  35. data/lib/open_api_sdk/models/operations/getqrcode_request.rb +5 -14
  36. data/lib/open_api_sdk/models/operations/getqrcode_response.rb +2 -2
  37. data/lib/open_api_sdk/models/operations/gettags_response.rb +2 -2
  38. data/lib/open_api_sdk/models/operations/getworkspace_request.rb +2 -2
  39. data/lib/open_api_sdk/models/operations/getworkspace_response.rb +2 -2
  40. data/lib/open_api_sdk/models/operations/groupby.rb +4 -12
  41. data/lib/open_api_sdk/models/operations/interval.rb +5 -5
  42. data/lib/open_api_sdk/models/operations/level.rb +2 -1
  43. data/lib/open_api_sdk/models/operations/listdomains_response.rb +2 -2
  44. data/lib/open_api_sdk/models/operations/paymentprocessor.rb +2 -3
  45. data/lib/open_api_sdk/models/operations/requestbody.rb +13 -51
  46. data/lib/open_api_sdk/models/operations/retrieveanalytics_request.rb +11 -53
  47. data/lib/open_api_sdk/models/operations/retrieveanalytics_response.rb +2 -2
  48. data/lib/open_api_sdk/models/operations/sort.rb +3 -5
  49. data/lib/open_api_sdk/models/operations/trackcustomer_requestbody.rb +33 -0
  50. data/lib/open_api_sdk/models/operations/{createpartner_response.rb → trackcustomer_response.rb} +5 -5
  51. data/lib/open_api_sdk/models/operations/trackcustomer_responsebody.rb +33 -0
  52. data/lib/open_api_sdk/models/operations/tracklead_requestbody.rb +9 -20
  53. data/lib/open_api_sdk/models/operations/tracklead_response.rb +2 -2
  54. data/lib/open_api_sdk/models/operations/tracklead_responsebody.rb +23 -8
  55. data/lib/open_api_sdk/models/operations/tracksale_requestbody.rb +8 -16
  56. data/lib/open_api_sdk/models/operations/tracksale_response.rb +2 -2
  57. data/lib/open_api_sdk/models/operations/tracksale_responsebody.rb +20 -8
  58. data/lib/open_api_sdk/models/operations/updatedomain_request.rb +2 -2
  59. data/lib/open_api_sdk/models/operations/updatedomain_requestbody.rb +4 -16
  60. data/lib/open_api_sdk/models/operations/updatedomain_response.rb +2 -2
  61. data/lib/open_api_sdk/models/operations/updatelink_request.rb +2 -2
  62. data/lib/open_api_sdk/models/operations/updatelink_requestbody.rb +14 -52
  63. data/lib/open_api_sdk/models/operations/updatelink_response.rb +2 -2
  64. data/lib/open_api_sdk/models/operations/updatetag_color.rb +2 -1
  65. data/lib/open_api_sdk/models/operations/updatetag_request.rb +2 -2
  66. data/lib/open_api_sdk/models/operations/updatetag_requestbody.rb +2 -2
  67. data/lib/open_api_sdk/models/operations/updatetag_response.rb +2 -2
  68. data/lib/open_api_sdk/models/operations/updateworkspace_request.rb +2 -2
  69. data/lib/open_api_sdk/models/operations/updateworkspace_requestbody.rb +4 -13
  70. data/lib/open_api_sdk/models/operations/updateworkspace_response.rb +2 -2
  71. data/lib/open_api_sdk/models/operations/upsertlink_requestbody.rb +13 -51
  72. data/lib/open_api_sdk/models/operations/upsertlink_response.rb +2 -2
  73. data/lib/open_api_sdk/models/operations.rb +22 -116
  74. data/lib/open_api_sdk/models/shared/badrequest.rb +3 -3
  75. data/lib/open_api_sdk/models/shared/code.rb +2 -1
  76. data/lib/open_api_sdk/models/shared/color.rb +2 -1
  77. data/lib/open_api_sdk/models/shared/conflict.rb +3 -3
  78. data/lib/open_api_sdk/models/shared/conflict_code.rb +2 -1
  79. data/lib/open_api_sdk/models/shared/conflict_error.rb +2 -2
  80. data/lib/open_api_sdk/models/shared/countrycode.rb +2 -1
  81. data/lib/open_api_sdk/models/shared/domains.rb +4 -7
  82. data/lib/open_api_sdk/models/shared/domainschema.rb +4 -19
  83. data/lib/open_api_sdk/models/shared/error.rb +2 -2
  84. data/lib/open_api_sdk/models/shared/forbidden.rb +3 -3
  85. data/lib/open_api_sdk/models/shared/forbidden_code.rb +2 -1
  86. data/lib/open_api_sdk/models/shared/forbidden_error.rb +2 -2
  87. data/lib/open_api_sdk/models/shared/geo.rb +2 -2
  88. data/lib/open_api_sdk/models/shared/internalservererror.rb +3 -3
  89. data/lib/open_api_sdk/models/shared/internalservererror_code.rb +2 -1
  90. data/lib/open_api_sdk/models/shared/internalservererror_error.rb +2 -2
  91. data/lib/open_api_sdk/models/shared/inviteexpired.rb +3 -3
  92. data/lib/open_api_sdk/models/shared/inviteexpired_code.rb +2 -1
  93. data/lib/open_api_sdk/models/shared/inviteexpired_error.rb +2 -2
  94. data/lib/open_api_sdk/models/shared/linkgeotargeting.rb +2 -2
  95. data/lib/open_api_sdk/models/shared/linkschema.rb +8 -29
  96. data/lib/open_api_sdk/models/shared/notfound.rb +3 -3
  97. data/lib/open_api_sdk/models/shared/notfound_code.rb +2 -1
  98. data/lib/open_api_sdk/models/shared/notfound_error.rb +2 -2
  99. data/lib/open_api_sdk/models/shared/plan.rb +2 -1
  100. data/lib/open_api_sdk/models/shared/ratelimitexceeded.rb +3 -3
  101. data/lib/open_api_sdk/models/shared/ratelimitexceeded_code.rb +2 -1
  102. data/lib/open_api_sdk/models/shared/ratelimitexceeded_error.rb +2 -2
  103. data/lib/open_api_sdk/models/shared/role.rb +2 -1
  104. data/lib/open_api_sdk/models/shared/security.rb +4 -4
  105. data/lib/open_api_sdk/models/shared/tagschema.rb +2 -2
  106. data/lib/open_api_sdk/models/shared/unauthorized.rb +3 -3
  107. data/lib/open_api_sdk/models/shared/unauthorized_code.rb +2 -1
  108. data/lib/open_api_sdk/models/shared/unauthorized_error.rb +2 -2
  109. data/lib/open_api_sdk/models/shared/unprocessableentity.rb +3 -3
  110. data/lib/open_api_sdk/models/shared/unprocessableentity_code.rb +2 -1
  111. data/lib/open_api_sdk/models/shared/unprocessableentity_error.rb +2 -2
  112. data/lib/open_api_sdk/models/shared/users.rb +2 -2
  113. data/lib/open_api_sdk/models/shared/workspaceschema.rb +8 -47
  114. data/lib/open_api_sdk/models/shared.rb +2 -12
  115. data/lib/open_api_sdk/qr_codes.rb +13 -18
  116. data/lib/open_api_sdk/sdkconfiguration.rb +10 -26
  117. data/lib/open_api_sdk/tags.rb +60 -161
  118. data/lib/open_api_sdk/track.rb +109 -34
  119. data/lib/{crystalline → open_api_sdk/utils}/metadata_fields.rb +20 -33
  120. data/lib/{crystalline → open_api_sdk/utils}/t.rb +1 -1
  121. data/lib/open_api_sdk/utils/utils.rb +60 -16
  122. data/lib/open_api_sdk/workspaces.rb +25 -35
  123. metadata +12 -166
  124. data/lib/crystalline/utils.rb +0 -65
  125. data/lib/crystalline.rb +0 -12
  126. data/lib/open_api_sdk/customers.rb +0 -464
  127. data/lib/open_api_sdk/embed_tokens.rb +0 -112
  128. data/lib/open_api_sdk/events.rb +0 -105
  129. data/lib/open_api_sdk/folders.rb +0 -373
  130. data/lib/open_api_sdk/models/operations/accesslevel.rb +0 -18
  131. data/lib/open_api_sdk/models/operations/bulkdeletelinks_request.rb +0 -24
  132. data/lib/open_api_sdk/models/operations/bulkdeletelinks_response.rb +0 -60
  133. data/lib/open_api_sdk/models/operations/bulkdeletelinks_responsebody.rb +0 -24
  134. data/lib/open_api_sdk/models/operations/click.rb +0 -24
  135. data/lib/open_api_sdk/models/operations/country.rb +0 -266
  136. data/lib/open_api_sdk/models/operations/createcustomer_discount.rb +0 -42
  137. data/lib/open_api_sdk/models/operations/createcustomer_link.rb +0 -36
  138. data/lib/open_api_sdk/models/operations/createcustomer_partner.rb +0 -33
  139. data/lib/open_api_sdk/models/operations/createcustomer_requestbody.rb +0 -33
  140. data/lib/open_api_sdk/models/operations/createcustomer_response.rb +0 -60
  141. data/lib/open_api_sdk/models/operations/createcustomer_responsebody.rb +0 -51
  142. data/lib/open_api_sdk/models/operations/createcustomer_type.rb +0 -18
  143. data/lib/open_api_sdk/models/operations/createfolder_requestbody.rb +0 -27
  144. data/lib/open_api_sdk/models/operations/createfolder_response.rb +0 -60
  145. data/lib/open_api_sdk/models/operations/createpartner_requestbody.rb +0 -48
  146. data/lib/open_api_sdk/models/operations/createpartner_responsebody.rb +0 -75
  147. data/lib/open_api_sdk/models/operations/createpartnerlink_linkprops.rb +0 -99
  148. data/lib/open_api_sdk/models/operations/createpartnerlink_requestbody.rb +0 -42
  149. data/lib/open_api_sdk/models/operations/createpartnerlink_response.rb +0 -60
  150. data/lib/open_api_sdk/models/operations/createreferralsembedtoken_country.rb +0 -266
  151. data/lib/open_api_sdk/models/operations/createreferralsembedtoken_linkprops.rb +0 -99
  152. data/lib/open_api_sdk/models/operations/createreferralsembedtoken_requestbody.rb +0 -33
  153. data/lib/open_api_sdk/models/operations/createreferralsembedtoken_response.rb +0 -60
  154. data/lib/open_api_sdk/models/operations/createreferralsembedtoken_responsebody.rb +0 -27
  155. data/lib/open_api_sdk/models/operations/customer.rb +0 -33
  156. data/lib/open_api_sdk/models/operations/deletecustomer_request.rb +0 -24
  157. data/lib/open_api_sdk/models/operations/deletecustomer_response.rb +0 -60
  158. data/lib/open_api_sdk/models/operations/deletecustomer_responsebody.rb +0 -24
  159. data/lib/open_api_sdk/models/operations/deletefolder_request.rb +0 -24
  160. data/lib/open_api_sdk/models/operations/deletefolder_response.rb +0 -60
  161. data/lib/open_api_sdk/models/operations/deletefolder_responsebody.rb +0 -24
  162. data/lib/open_api_sdk/models/operations/deletetag_request.rb +0 -24
  163. data/lib/open_api_sdk/models/operations/deletetag_response.rb +0 -60
  164. data/lib/open_api_sdk/models/operations/deletetag_responsebody.rb +0 -24
  165. data/lib/open_api_sdk/models/operations/discount.rb +0 -42
  166. data/lib/open_api_sdk/models/operations/getcustomer_discount.rb +0 -42
  167. data/lib/open_api_sdk/models/operations/getcustomer_link.rb +0 -36
  168. data/lib/open_api_sdk/models/operations/getcustomer_partner.rb +0 -33
  169. data/lib/open_api_sdk/models/operations/getcustomer_request.rb +0 -27
  170. data/lib/open_api_sdk/models/operations/getcustomer_response.rb +0 -60
  171. data/lib/open_api_sdk/models/operations/getcustomer_responsebody.rb +0 -51
  172. data/lib/open_api_sdk/models/operations/getcustomer_type.rb +0 -18
  173. data/lib/open_api_sdk/models/operations/getcustomers_partner.rb +0 -33
  174. data/lib/open_api_sdk/models/operations/getcustomers_request.rb +0 -30
  175. data/lib/open_api_sdk/models/operations/getcustomers_response.rb +0 -60
  176. data/lib/open_api_sdk/models/operations/gettags_queryparam_sortby.rb +0 -18
  177. data/lib/open_api_sdk/models/operations/gettags_queryparam_sortorder.rb +0 -18
  178. data/lib/open_api_sdk/models/operations/gettags_request.rb +0 -39
  179. data/lib/open_api_sdk/models/operations/link.rb +0 -36
  180. data/lib/open_api_sdk/models/operations/linkprops.rb +0 -99
  181. data/lib/open_api_sdk/models/operations/links.rb +0 -48
  182. data/lib/open_api_sdk/models/operations/listdomains_request.rb +0 -33
  183. data/lib/open_api_sdk/models/operations/listevents_request.rb +0 -135
  184. data/lib/open_api_sdk/models/operations/listevents_response.rb +0 -60
  185. data/lib/open_api_sdk/models/operations/listfolders_request.rb +0 -33
  186. data/lib/open_api_sdk/models/operations/listfolders_response.rb +0 -60
  187. data/lib/open_api_sdk/models/operations/mode.rb +0 -18
  188. data/lib/open_api_sdk/models/operations/order.rb +0 -20
  189. data/lib/open_api_sdk/models/operations/partner.rb +0 -45
  190. data/lib/open_api_sdk/models/operations/queryparam_event.rb +0 -19
  191. data/lib/open_api_sdk/models/operations/queryparam_groupby.rb +0 -19
  192. data/lib/open_api_sdk/models/operations/queryparam_interval.rb +0 -25
  193. data/lib/open_api_sdk/models/operations/queryparam_sortby.rb +0 -17
  194. data/lib/open_api_sdk/models/operations/queryparam_sortorder.rb +0 -18
  195. data/lib/open_api_sdk/models/operations/queryparam_trigger.rb +0 -18
  196. data/lib/open_api_sdk/models/operations/responsebody.rb +0 -51
  197. data/lib/open_api_sdk/models/operations/retrievepartneranalytics_queryparam_interval.rb +0 -25
  198. data/lib/open_api_sdk/models/operations/retrievepartneranalytics_request.rb +0 -45
  199. data/lib/open_api_sdk/models/operations/retrievepartneranalytics_response.rb +0 -60
  200. data/lib/open_api_sdk/models/operations/sale.rb +0 -36
  201. data/lib/open_api_sdk/models/operations/sortby.rb +0 -20
  202. data/lib/open_api_sdk/models/operations/sortorder.rb +0 -18
  203. data/lib/open_api_sdk/models/operations/status.rb +0 -21
  204. data/lib/open_api_sdk/models/operations/tracksale_customer.rb +0 -36
  205. data/lib/open_api_sdk/models/operations/trigger.rb +0 -18
  206. data/lib/open_api_sdk/models/operations/type.rb +0 -18
  207. data/lib/open_api_sdk/models/operations/updatecustomer_discount.rb +0 -42
  208. data/lib/open_api_sdk/models/operations/updatecustomer_link.rb +0 -36
  209. data/lib/open_api_sdk/models/operations/updatecustomer_partner.rb +0 -33
  210. data/lib/open_api_sdk/models/operations/updatecustomer_request.rb +0 -30
  211. data/lib/open_api_sdk/models/operations/updatecustomer_requestbody.rb +0 -33
  212. data/lib/open_api_sdk/models/operations/updatecustomer_response.rb +0 -60
  213. data/lib/open_api_sdk/models/operations/updatecustomer_responsebody.rb +0 -51
  214. data/lib/open_api_sdk/models/operations/updatecustomer_type.rb +0 -18
  215. data/lib/open_api_sdk/models/operations/updatefolder_accesslevel.rb +0 -18
  216. data/lib/open_api_sdk/models/operations/updatefolder_request.rb +0 -27
  217. data/lib/open_api_sdk/models/operations/updatefolder_requestbody.rb +0 -27
  218. data/lib/open_api_sdk/models/operations/updatefolder_response.rb +0 -60
  219. data/lib/open_api_sdk/models/operations/updatepartnersale_requestbody.rb +0 -36
  220. data/lib/open_api_sdk/models/operations/updatepartnersale_response.rb +0 -60
  221. data/lib/open_api_sdk/models/operations/updatepartnersale_responsebody.rb +0 -45
  222. data/lib/open_api_sdk/models/operations/updatepartnersale_status.rb +0 -22
  223. data/lib/open_api_sdk/models/operations/upsertpartnerlink_linkprops.rb +0 -99
  224. data/lib/open_api_sdk/models/operations/upsertpartnerlink_requestbody.rb +0 -42
  225. data/lib/open_api_sdk/models/operations/upsertpartnerlink_response.rb +0 -60
  226. data/lib/open_api_sdk/models/shared/accesslevel.rb +0 -18
  227. data/lib/open_api_sdk/models/shared/click.rb +0 -63
  228. data/lib/open_api_sdk/models/shared/clickevent.rb +0 -98
  229. data/lib/open_api_sdk/models/shared/clickevent_geo.rb +0 -771
  230. data/lib/open_api_sdk/models/shared/continentcode.rb +0 -23
  231. data/lib/open_api_sdk/models/shared/event.rb +0 -17
  232. data/lib/open_api_sdk/models/shared/folderschema.rb +0 -42
  233. data/lib/open_api_sdk/models/shared/link.rb +0 -163
  234. data/lib/open_api_sdk/models/shared/registereddomain.rb +0 -30
  235. data/lib/open_api_sdk/models/shared/type.rb +0 -18
  236. data/lib/open_api_sdk/partners.rb +0 -461
  237. data/lib/open_api_sdk/utils/retries.rb +0 -95
@@ -1,13 +1,11 @@
1
- # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
1
+ # Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
2
2
 
3
3
  # typed: true
4
4
  # frozen_string_literal: true
5
5
 
6
6
  require 'faraday'
7
7
  require 'faraday/multipart'
8
- require 'faraday/retry'
9
8
  require 'sorbet-runtime'
10
- require_relative 'utils/retries'
11
9
 
12
10
  module OpenApiSDK
13
11
  extend T::Sig
@@ -34,12 +32,9 @@ module OpenApiSDK
34
32
  headers['Accept'] = 'application/json'
35
33
  headers['user-agent'] = @sdk_configuration.user_agent
36
34
 
37
- connection = @sdk_configuration.client
38
-
39
- r = connection.post(url) do |req|
35
+ r = @sdk_configuration.client.post(url) do |req|
40
36
  req.headers = headers
41
- security = !@sdk_configuration.nil? && !@sdk_configuration.security_source.nil? ? @sdk_configuration.security_source.call : nil
42
- Utils.configure_request_security(req, security) if !security.nil?
37
+ Utils.configure_request_security(req, @sdk_configuration.security) if !@sdk_configuration.nil? && !@sdk_configuration.security.nil?
43
38
  if form
44
39
  req.body = Utils.encode_form(form)
45
40
  elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
@@ -56,56 +51,55 @@ module OpenApiSDK
56
51
  )
57
52
  if r.status == 200
58
53
  if Utils.match_content_type(content_type, 'application/json')
59
- out = Crystalline.unmarshal_json(JSON.parse(r.env.response_body), ::OpenApiSDK::Operations::TrackLeadResponseBody)
54
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Operations::TrackLeadResponseBody)
60
55
  res.object = out
61
56
  end
62
57
  elsif r.status == 400
63
58
  if Utils.match_content_type(content_type, 'application/json')
64
- out = Crystalline.unmarshal_json(JSON.parse(r.env.response_body), ::OpenApiSDK::Shared::BadRequest)
59
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::BadRequest)
65
60
  res.bad_request = out
66
61
  end
67
62
  elsif r.status == 401
68
63
  if Utils.match_content_type(content_type, 'application/json')
69
- out = Crystalline.unmarshal_json(JSON.parse(r.env.response_body), ::OpenApiSDK::Shared::Unauthorized)
64
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::Unauthorized)
70
65
  res.unauthorized = out
71
66
  end
72
67
  elsif r.status == 403
73
68
  if Utils.match_content_type(content_type, 'application/json')
74
- out = Crystalline.unmarshal_json(JSON.parse(r.env.response_body), ::OpenApiSDK::Shared::Forbidden)
69
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::Forbidden)
75
70
  res.forbidden = out
76
71
  end
77
72
  elsif r.status == 404
78
73
  if Utils.match_content_type(content_type, 'application/json')
79
- out = Crystalline.unmarshal_json(JSON.parse(r.env.response_body), ::OpenApiSDK::Shared::NotFound)
74
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::NotFound)
80
75
  res.not_found = out
81
76
  end
82
77
  elsif r.status == 409
83
78
  if Utils.match_content_type(content_type, 'application/json')
84
- out = Crystalline.unmarshal_json(JSON.parse(r.env.response_body), ::OpenApiSDK::Shared::Conflict)
79
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::Conflict)
85
80
  res.conflict = out
86
81
  end
87
82
  elsif r.status == 410
88
83
  if Utils.match_content_type(content_type, 'application/json')
89
- out = Crystalline.unmarshal_json(JSON.parse(r.env.response_body), ::OpenApiSDK::Shared::InviteExpired)
84
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::InviteExpired)
90
85
  res.invite_expired = out
91
86
  end
92
87
  elsif r.status == 422
93
88
  if Utils.match_content_type(content_type, 'application/json')
94
- out = Crystalline.unmarshal_json(JSON.parse(r.env.response_body), ::OpenApiSDK::Shared::UnprocessableEntity)
89
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::UnprocessableEntity)
95
90
  res.unprocessable_entity = out
96
91
  end
97
92
  elsif r.status == 429
98
93
  if Utils.match_content_type(content_type, 'application/json')
99
- out = Crystalline.unmarshal_json(JSON.parse(r.env.response_body), ::OpenApiSDK::Shared::RateLimitExceeded)
94
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::RateLimitExceeded)
100
95
  res.rate_limit_exceeded = out
101
96
  end
102
97
  elsif r.status == 500
103
98
  if Utils.match_content_type(content_type, 'application/json')
104
- out = Crystalline.unmarshal_json(JSON.parse(r.env.response_body), ::OpenApiSDK::Shared::InternalServerError)
99
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::InternalServerError)
105
100
  res.internal_server_error = out
106
101
  end
107
102
  end
108
-
109
103
  res
110
104
  end
111
105
 
@@ -123,12 +117,9 @@ module OpenApiSDK
123
117
  headers['Accept'] = 'application/json'
124
118
  headers['user-agent'] = @sdk_configuration.user_agent
125
119
 
126
- connection = @sdk_configuration.client
127
-
128
- r = connection.post(url) do |req|
120
+ r = @sdk_configuration.client.post(url) do |req|
129
121
  req.headers = headers
130
- security = !@sdk_configuration.nil? && !@sdk_configuration.security_source.nil? ? @sdk_configuration.security_source.call : nil
131
- Utils.configure_request_security(req, security) if !security.nil?
122
+ Utils.configure_request_security(req, @sdk_configuration.security) if !@sdk_configuration.nil? && !@sdk_configuration.security.nil?
132
123
  if form
133
124
  req.body = Utils.encode_form(form)
134
125
  elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
@@ -145,56 +136,140 @@ module OpenApiSDK
145
136
  )
146
137
  if r.status == 200
147
138
  if Utils.match_content_type(content_type, 'application/json')
148
- out = Crystalline.unmarshal_json(JSON.parse(r.env.response_body), ::OpenApiSDK::Operations::TrackSaleResponseBody)
139
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Operations::TrackSaleResponseBody)
149
140
  res.object = out
150
141
  end
151
142
  elsif r.status == 400
152
143
  if Utils.match_content_type(content_type, 'application/json')
153
- out = Crystalline.unmarshal_json(JSON.parse(r.env.response_body), ::OpenApiSDK::Shared::BadRequest)
144
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::BadRequest)
154
145
  res.bad_request = out
155
146
  end
156
147
  elsif r.status == 401
157
148
  if Utils.match_content_type(content_type, 'application/json')
158
- out = Crystalline.unmarshal_json(JSON.parse(r.env.response_body), ::OpenApiSDK::Shared::Unauthorized)
149
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::Unauthorized)
159
150
  res.unauthorized = out
160
151
  end
161
152
  elsif r.status == 403
162
153
  if Utils.match_content_type(content_type, 'application/json')
163
- out = Crystalline.unmarshal_json(JSON.parse(r.env.response_body), ::OpenApiSDK::Shared::Forbidden)
154
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::Forbidden)
164
155
  res.forbidden = out
165
156
  end
166
157
  elsif r.status == 404
167
158
  if Utils.match_content_type(content_type, 'application/json')
168
- out = Crystalline.unmarshal_json(JSON.parse(r.env.response_body), ::OpenApiSDK::Shared::NotFound)
159
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::NotFound)
169
160
  res.not_found = out
170
161
  end
171
162
  elsif r.status == 409
172
163
  if Utils.match_content_type(content_type, 'application/json')
173
- out = Crystalline.unmarshal_json(JSON.parse(r.env.response_body), ::OpenApiSDK::Shared::Conflict)
164
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::Conflict)
174
165
  res.conflict = out
175
166
  end
176
167
  elsif r.status == 410
177
168
  if Utils.match_content_type(content_type, 'application/json')
178
- out = Crystalline.unmarshal_json(JSON.parse(r.env.response_body), ::OpenApiSDK::Shared::InviteExpired)
169
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::InviteExpired)
179
170
  res.invite_expired = out
180
171
  end
181
172
  elsif r.status == 422
182
173
  if Utils.match_content_type(content_type, 'application/json')
183
- out = Crystalline.unmarshal_json(JSON.parse(r.env.response_body), ::OpenApiSDK::Shared::UnprocessableEntity)
174
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::UnprocessableEntity)
184
175
  res.unprocessable_entity = out
185
176
  end
186
177
  elsif r.status == 429
187
178
  if Utils.match_content_type(content_type, 'application/json')
188
- out = Crystalline.unmarshal_json(JSON.parse(r.env.response_body), ::OpenApiSDK::Shared::RateLimitExceeded)
179
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::RateLimitExceeded)
189
180
  res.rate_limit_exceeded = out
190
181
  end
191
182
  elsif r.status == 500
192
183
  if Utils.match_content_type(content_type, 'application/json')
193
- out = Crystalline.unmarshal_json(JSON.parse(r.env.response_body), ::OpenApiSDK::Shared::InternalServerError)
184
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::InternalServerError)
194
185
  res.internal_server_error = out
195
186
  end
196
187
  end
188
+ res
189
+ end
190
+
191
+
192
+ sig { params(request: T.nilable(::OpenApiSDK::Operations::TrackCustomerRequestBody)).returns(::OpenApiSDK::Operations::TrackCustomerResponse) }
193
+ def customer(request)
194
+ # customer - Track a customer
195
+ # Track a customer for an authenticated workspace.
196
+ url, params = @sdk_configuration.get_server_details
197
+ base_url = Utils.template_url(url, params)
198
+ url = "#{base_url}/track/customer"
199
+ headers = {}
200
+ req_content_type, data, form = Utils.serialize_request_body(request, :request, :json)
201
+ headers['content-type'] = req_content_type
202
+ headers['Accept'] = 'application/json'
203
+ headers['user-agent'] = @sdk_configuration.user_agent
197
204
 
205
+ r = @sdk_configuration.client.post(url) do |req|
206
+ req.headers = headers
207
+ Utils.configure_request_security(req, @sdk_configuration.security) if !@sdk_configuration.nil? && !@sdk_configuration.security.nil?
208
+ if form
209
+ req.body = Utils.encode_form(form)
210
+ elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
211
+ req.body = URI.encode_www_form(data)
212
+ else
213
+ req.body = data
214
+ end
215
+ end
216
+
217
+ content_type = r.headers.fetch('Content-Type', 'application/octet-stream')
218
+
219
+ res = ::OpenApiSDK::Operations::TrackCustomerResponse.new(
220
+ status_code: r.status, content_type: content_type, raw_response: r
221
+ )
222
+ if r.status == 200
223
+ if Utils.match_content_type(content_type, 'application/json')
224
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Operations::TrackCustomerResponseBody)
225
+ res.object = out
226
+ end
227
+ elsif r.status == 400
228
+ if Utils.match_content_type(content_type, 'application/json')
229
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::BadRequest)
230
+ res.bad_request = out
231
+ end
232
+ elsif r.status == 401
233
+ if Utils.match_content_type(content_type, 'application/json')
234
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::Unauthorized)
235
+ res.unauthorized = out
236
+ end
237
+ elsif r.status == 403
238
+ if Utils.match_content_type(content_type, 'application/json')
239
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::Forbidden)
240
+ res.forbidden = out
241
+ end
242
+ elsif r.status == 404
243
+ if Utils.match_content_type(content_type, 'application/json')
244
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::NotFound)
245
+ res.not_found = out
246
+ end
247
+ elsif r.status == 409
248
+ if Utils.match_content_type(content_type, 'application/json')
249
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::Conflict)
250
+ res.conflict = out
251
+ end
252
+ elsif r.status == 410
253
+ if Utils.match_content_type(content_type, 'application/json')
254
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::InviteExpired)
255
+ res.invite_expired = out
256
+ end
257
+ elsif r.status == 422
258
+ if Utils.match_content_type(content_type, 'application/json')
259
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::UnprocessableEntity)
260
+ res.unprocessable_entity = out
261
+ end
262
+ elsif r.status == 429
263
+ if Utils.match_content_type(content_type, 'application/json')
264
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::RateLimitExceeded)
265
+ res.rate_limit_exceeded = out
266
+ end
267
+ elsif r.status == 500
268
+ if Utils.match_content_type(content_type, 'application/json')
269
+ out = Utils.unmarshal_complex(r.env.response_body, ::OpenApiSDK::Shared::InternalServerError)
270
+ res.internal_server_error = out
271
+ end
272
+ end
198
273
  res
199
274
  end
200
275
  end
@@ -1,10 +1,9 @@
1
- # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
1
+ # Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
2
2
 
3
3
  # typed: true
4
4
  # frozen_string_literal: true
5
5
 
6
- module Crystalline
7
- extend T::Sig
6
+ module OpenApiSDK
8
7
  module MetadataFields
9
8
  extend T::Sig
10
9
 
@@ -33,13 +32,9 @@ module Crystalline
33
32
  fields << Field.new(field_name, type, metadata)
34
33
  end
35
34
 
36
- def field_augmented?
37
- true
38
- end
39
-
40
35
  def unmarshal_single(field_type, value, decoder = nil)
41
- if field_type.instance_of?(Class) && field_type < ::Crystalline::FieldAugmented
42
- unmarshalled = field_type.from_dict(value)
36
+ if field_type.respond_to? :unmarshal_json
37
+ unmarshalled = field_type.unmarshal_json(value)
43
38
  return unmarshalled
44
39
  elsif field_type.to_s == 'Object'
45
40
  # rubocop:disable Lint/SuppressedException
@@ -57,20 +52,14 @@ module Crystalline
57
52
  end
58
53
  end
59
54
 
60
- sig { params(json_obj: T.any(String, T::Hash[Symbol, String])).returns(::Crystalline::FieldAugmented) }
61
- def from_json(json_obj)
55
+ sig { params(json_obj: T.any(String, T::Hash[Symbol, String])).returns(Utils::FieldAugmented) }
56
+ def unmarshal_json(json_obj)
57
+ to_build = new
62
58
  begin
63
59
  d = JSON.parse(json_obj)
64
60
  rescue TypeError, JSON::ParserError
65
61
  d = json_obj
66
62
  end
67
- from_dict(d)
68
- end
69
-
70
- sig { params(d: T::Hash[Symbol, String]).returns(::Crystalline::FieldAugmented) }
71
- def from_dict(d)
72
- to_build = new
73
-
74
63
  fields.each do |field|
75
64
  field_type = field.type
76
65
  if T.nilable? field_type
@@ -124,15 +113,15 @@ module Crystalline
124
113
  end
125
114
 
126
115
  def marshal_single(field)
127
- if field.is_a? ::Crystalline::FieldAugmented
128
- field.to_dict
116
+ if field.respond_to? :marshal_json
117
+ field.marshal_json(encode: false)
129
118
  else
130
- ::Crystalline.val_to_string(field, primitives: false)
119
+ Utils.val_to_string(field, primitives: false)
131
120
  end
132
121
  end
133
122
 
134
- def to_dict
135
- result = {}
123
+ def marshal_json(encode: true)
124
+ d = {}
136
125
  fields.sort_by(&:name).each do |field|
137
126
  f = send(field.name)
138
127
  next if f.nil?
@@ -144,20 +133,18 @@ module Crystalline
144
133
  key = field.name
145
134
  end
146
135
  if f.is_a? Array
147
- result[key] = f.map { |o| marshal_single(o) }
136
+ d[key] = f.map { |o| marshal_single(o) }
148
137
  elsif f.is_a? Hash
149
- result[key] = f.map { |k, v| [k, marshal_single(v)] }
138
+ d[key] = f.map { |k, v| [k, marshal_single(v)] }
150
139
  else
151
- result[key] = marshal_single(f)
140
+ d[key] = marshal_single(f)
152
141
  end
153
142
  end
154
- result
155
- end
156
-
157
- def to_json(*args)
158
- JSON.generate(to_dict, *args)
143
+ if encode
144
+ JSON.dump(d)
145
+ else
146
+ d
147
+ end
159
148
  end
160
149
  end
161
-
162
-
163
150
  end
@@ -1,4 +1,4 @@
1
- # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
1
+ # Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
2
2
 
3
3
  # typed: true
4
4
  # frozen_string_literal: true
@@ -1,4 +1,4 @@
1
- # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
1
+ # Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
2
2
 
3
3
  # typed: true
4
4
  # frozen_string_literal: true
@@ -6,11 +6,16 @@
6
6
  require 'date'
7
7
  require 'sorbet-runtime'
8
8
  require 'base64'
9
+ require_relative './metadata_fields'
9
10
 
10
11
  module OpenApiSDK
11
12
  module Utils
12
13
  extend T::Sig
13
14
 
15
+ class FieldAugmented
16
+ include MetadataFields
17
+ end
18
+
14
19
  sig { params(val: Object, primitives: T::Boolean).returns(Object) }
15
20
  def self.val_to_string(val, primitives: true)
16
21
  if val.is_a? T::Enum
@@ -24,7 +29,7 @@ module OpenApiSDK
24
29
  end
25
30
  end
26
31
 
27
- sig { params(headers_params: ::Crystalline::FieldAugmented, gbls: T.nilable(T::Hash[Symbol, T::Hash[Symbol, T::Hash[Symbol, Object]]])).returns(T::Hash[Symbol, String]) }
32
+ sig { params(headers_params: FieldAugmented, gbls: T.nilable(T::Hash[Symbol, T::Hash[Symbol, T::Hash[Symbol, Object]]])).returns(T::Hash[Symbol, String]) }
28
33
  def self.get_headers(headers_params, gbls = nil)
29
34
  return {} if headers_params.nil?
30
35
 
@@ -90,7 +95,7 @@ module OpenApiSDK
90
95
 
91
96
  sig do
92
97
  params(field_name: String, explode: T::Boolean, obj: Object, delimiter: String,
93
- get_field_name_lambda: T.proc.params(obj_field: ::Crystalline::MetadataFields::Field).returns(String))
98
+ get_field_name_lambda: T.proc.params(obj_field: MetadataFields::Field).returns(String))
94
99
  .returns(T::Hash[Symbol, T::Array[String]])
95
100
  end
96
101
  def self._populate_form(field_name, explode, obj, delimiter, &get_field_name_lambda)
@@ -210,7 +215,7 @@ module OpenApiSDK
210
215
  params = {}
211
216
 
212
217
  serialization = metadata.fetch(:serialization, '')
213
- params[metadata.fetch(:field_name, field_name)] = obj.to_json if serialization == 'json'
218
+ params[metadata.fetch(:field_name, field_name)] = obj.marshal_json if serialization == 'json'
214
219
 
215
220
  params
216
221
  end
@@ -231,7 +236,7 @@ module OpenApiSDK
231
236
  _populate_form(field_name, metadata.fetch(:explode, true), obj, delimiter, &get_query_param_field_name)
232
237
  end
233
238
 
234
- sig { params(clazz: Class, query_params: ::Crystalline::FieldAugmented, gbls: T.nilable(T::Hash[Symbol, T::Hash[Symbol, T::Hash[Symbol, Object]]])).returns(T::Hash[Symbol, T::Array[String]]) }
239
+ sig { params(clazz: Class, query_params: FieldAugmented, gbls: T.nilable(T::Hash[Symbol, T::Hash[Symbol, T::Hash[Symbol, Object]]])).returns(T::Hash[Symbol, T::Array[String]]) }
235
240
  def self.get_query_params(clazz, query_params, gbls = nil)
236
241
  params = {}
237
242
  param_fields = clazz.fields
@@ -275,7 +280,7 @@ module OpenApiSDK
275
280
  params
276
281
  end
277
282
 
278
- sig { params(clazz: Class, server_url: String, path: String, path_params: ::Crystalline::FieldAugmented, gbls: T.nilable(T::Hash[Symbol, T::Hash[Symbol, T::Hash[Symbol, Object]]])).returns(String) }
283
+ sig { params(clazz: Class, server_url: String, path: String, path_params: FieldAugmented, gbls: T.nilable(T::Hash[Symbol, T::Hash[Symbol, T::Hash[Symbol, Object]]])).returns(String) }
279
284
  def self.generate_url(clazz, server_url, path, path_params, gbls = nil)
280
285
  clazz.fields.each do |f|
281
286
  param_metadata = f.metadata[:path_param]
@@ -353,7 +358,7 @@ module OpenApiSDK
353
358
 
354
359
  sig { params(content_type: String, pattern: String).returns(T::Boolean) }
355
360
  def self.match_content_type(content_type, pattern)
356
- return true if content_type == pattern || ['*', '*/*'].include?(pattern)
361
+ return true if content_type == pattern || pattern == '*' || pattern == '*/*'
357
362
 
358
363
  pieces = content_type.split(';')
359
364
  pieces.each do |piece|
@@ -458,7 +463,7 @@ module OpenApiSDK
458
463
  end
459
464
  end
460
465
 
461
- sig { params(req: Faraday::Request, scheme: ::Crystalline::FieldAugmented).void }
466
+ sig { params(req: Faraday::Request, scheme: FieldAugmented).void }
462
467
  def self._parse_basic_auth_scheme(req, scheme)
463
468
  username, password = ''
464
469
 
@@ -554,7 +559,7 @@ module OpenApiSDK
554
559
  .returns([String, Object, T.nilable(T::Array[T::Array[Object]])])
555
560
  end
556
561
  def self.serialize_content_type(field_name, media_type, request)
557
- return media_type, ::Crystalline.marshal_json_complex(request), nil if media_type.match('(application|text)\/.*?\+*json.*')
562
+ return media_type, marshal_json_complex(request), nil if media_type.match('(application|text)\/.*?\+*json.*')
558
563
  return serialize_multipart_form(media_type, request) if media_type.match('multipart\/.*')
559
564
  return media_type, serialize_form_data(field_name, request), nil if media_type.match('application\/x-www-form-urlencoded.*')
560
565
  return media_type, request, nil if request.is_a?(String) || request.is_a?(Array)
@@ -562,7 +567,7 @@ module OpenApiSDK
562
567
  raise StandardError, "invalid request body type #{type(request)} for mediaType {metadata['media_type']}"
563
568
  end
564
569
 
565
- sig { params(field: ::Crystalline::MetadataFields::Field, data_class: ::Crystalline::FieldAugmented).returns(Object) }
570
+ sig { params(field: MetadataFields::Field, data_class: FieldAugmented).returns(Object) }
566
571
  def self.parse_field(field, data_class)
567
572
  field_metadata = field.metadata[:metadata_string]
568
573
  return nil if field_metadata.nil?
@@ -573,7 +578,7 @@ module OpenApiSDK
573
578
  field_value
574
579
  end
575
580
 
576
- sig { params(media_type: String, request: ::Crystalline::FieldAugmented).returns([String, Object, T::Array[T::Array[Object]]]) }
581
+ sig { params(media_type: String, request: FieldAugmented).returns([String, Object, T::Array[T::Array[Object]]]) }
577
582
  def self.serialize_multipart_form(media_type, request)
578
583
  form = []
579
584
  request_fields = request.fields
@@ -588,7 +593,7 @@ module OpenApiSDK
588
593
  file_fields = val.fields
589
594
 
590
595
  file_name = ''
591
- field_name = field_metadata[:field_name]
596
+ field_name = ''
592
597
  content = nil
593
598
 
594
599
  file_fields.each do |file_field|
@@ -598,16 +603,17 @@ module OpenApiSDK
598
603
  if file_metadata[:content] == true
599
604
  content = val.send(file_field.name)
600
605
  else
606
+ field_name = file_metadata.fetch(:field_name, file_field.name)
601
607
  file_name = val.send(file_field.name)
602
608
  end
603
609
  end
604
- raise StandardError, 'invalid multipart/form-data file' if file_name == '' || content == nil?
610
+ raise StandardError, 'invalid multipart/form-data file' if field_name == '' || file_name == '' || content == nil?
605
611
 
606
612
  form.append([field_name, [file_name, content]])
607
613
  elsif field_metadata[:json] == true
608
614
  to_append = [
609
615
  field_metadata.fetch(:field_name, field.name), [
610
- nil, ::Crystalline.marshal_json_complex(val), 'application/json'
616
+ nil, marshal_json_complex(val), 'application/json'
611
617
  ]
612
618
  ]
613
619
  form.append(to_append)
@@ -652,7 +658,7 @@ module OpenApiSDK
652
658
  end
653
659
 
654
660
  sig do
655
- params(field_name: Symbol, data: T.any(::Crystalline::FieldAugmented, T::Hash[Symbol, String]))
661
+ params(field_name: Symbol, data: T.any(FieldAugmented, T::Hash[Symbol, String]))
656
662
  .returns(T::Hash[Symbol, Object])
657
663
  end
658
664
  def self.serialize_form_data(field_name, data)
@@ -677,7 +683,7 @@ module OpenApiSDK
677
683
  field_name = metadata.fetch(:field_name, field.name)
678
684
 
679
685
  if metadata[:json]
680
- form[field_name] = ::Crystalline.marshal_json_complex(val)
686
+ form[field_name] = marshal_json_complex(val)
681
687
  else
682
688
  if metadata.fetch(:style, 'form') == 'form'
683
689
  form = form.merge(
@@ -724,5 +730,43 @@ module OpenApiSDK
724
730
  value
725
731
  end
726
732
 
733
+ sig { params(complex: Object).returns(Object) }
734
+ def self.marshal_json_complex(complex)
735
+ if complex.is_a? Array
736
+ complex.map { |v| Utils.marshal_json_complex(v) }.to_json
737
+ elsif complex.is_a? Hash
738
+ complex.transform_values { |v| Utils.marshal_json_complex(v) }.to_json
739
+ elsif complex.respond_to? :marshal_json
740
+ complex.marshal_json
741
+ else
742
+ complex.to_json
743
+ end
744
+ end
745
+
746
+ sig { params(data: Object, type: Object).returns(Object) }
747
+ def self.unmarshal_complex(data, type)
748
+ begin
749
+ value = unmarshal_json(JSON.parse(data), type)
750
+ rescue TypeError, JSON::ParserError
751
+ value = unmarshal_json(data, type)
752
+ end
753
+ value
754
+ end
755
+
756
+ sig { params(data: Object, type: Object).returns(Object) }
757
+ def self.unmarshal_json(data, type)
758
+ if T.simplifiable? type
759
+ type = T.simplify_type type
760
+ end
761
+ if type.respond_to? :unmarshal_json
762
+ type.unmarshal_json(data)
763
+ elsif T.arr? type
764
+ data.map { |v| Utils.unmarshal_complex(v, T.arr_of(type)) }
765
+ elsif T.hash? type
766
+ data.transform_values { |v| Utils.unmarshal_complex(v, T.hash_of(type)) }
767
+ else
768
+ data
769
+ end
770
+ end
727
771
  end
728
772
  end