@seamapi/nextlove-sdk-generator 1.5.6 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/lib/generate-csharp-sdk/codegen.d.ts +1 -0
  2. package/lib/generate-csharp-sdk/codegen.js +1 -0
  3. package/lib/generate-csharp-sdk/codegen.js.map +1 -1
  4. package/lib/generate-csharp-sdk/generate-csharp-sdk.js +10 -3
  5. package/lib/generate-csharp-sdk/generate-csharp-sdk.js.map +1 -1
  6. package/lib/generate-csharp-sdk/templates/dataclass.d.ts +1 -0
  7. package/lib/generate-csharp-sdk/templates/dataclass.js +46 -27
  8. package/lib/generate-csharp-sdk/templates/dataclass.js.map +1 -1
  9. package/lib/generate-php-sdk/generate-php-sdk.js +4 -4
  10. package/lib/generate-php-sdk/generate-php-sdk.js.map +1 -1
  11. package/lib/generate-python-sdk/class-file.js +4 -4
  12. package/lib/generate-python-sdk/class-file.js.map +1 -1
  13. package/lib/generate-python-sdk/generate-python-sdk.js +3 -4
  14. package/lib/generate-python-sdk/generate-python-sdk.js.map +1 -1
  15. package/lib/generate-ruby-sdk/generate-ruby-sdk.js +33 -14
  16. package/lib/generate-ruby-sdk/generate-ruby-sdk.js.map +1 -1
  17. package/lib/generate-ruby-sdk/ruby-client.d.ts +8 -2
  18. package/lib/generate-ruby-sdk/ruby-client.js +25 -6
  19. package/lib/generate-ruby-sdk/ruby-client.js.map +1 -1
  20. package/lib/generate-ruby-sdk/templates/.rspec.template.d.ts +2 -0
  21. package/lib/generate-ruby-sdk/templates/.rspec.template.js +4 -0
  22. package/lib/generate-ruby-sdk/templates/.rspec.template.js.map +1 -0
  23. package/lib/generate-ruby-sdk/templates/.ruby-version.template.d.ts +2 -0
  24. package/lib/generate-ruby-sdk/templates/.ruby-version.template.js +2 -0
  25. package/lib/generate-ruby-sdk/templates/.ruby-version.template.js.map +1 -0
  26. package/lib/generate-ruby-sdk/templates/base_resource.rb.template.js +2 -2
  27. package/lib/generate-ruby-sdk/templates/client.rb.template.d.ts +1 -1
  28. package/lib/generate-ruby-sdk/templates/client.rb.template.js +60 -73
  29. package/lib/generate-ruby-sdk/templates/client.rb.template.js.map +1 -1
  30. package/lib/generate-ruby-sdk/templates/request.rb.template.js +1 -1
  31. package/lib/generate-ruby-sdk/templates/resource_error.rb.template.js +2 -0
  32. package/lib/generate-ruby-sdk/templates/resource_error.rb.template.js.map +1 -1
  33. package/lib/generate-ruby-sdk/templates/resource_warning.rb.template.js +2 -0
  34. package/lib/generate-ruby-sdk/templates/resource_warning.rb.template.js.map +1 -1
  35. package/lib/generate-ruby-sdk/templates/seamapi.gemspec.template.js +2 -2
  36. package/lib/generate-ruby-sdk/templates/snippets/action-attempt-helpers-template.d.ts +2 -0
  37. package/lib/generate-ruby-sdk/templates/snippets/action-attempt-helpers-template.js +28 -0
  38. package/lib/generate-ruby-sdk/templates/snippets/action-attempt-helpers-template.js.map +1 -0
  39. package/lib/generate-ruby-sdk/templates/snippets/resource.rb.template.js +26 -7
  40. package/lib/generate-ruby-sdk/templates/snippets/resource.rb.template.js.map +1 -1
  41. package/lib/generate-ruby-sdk/templates/spec_helper.rb.template.d.ts +2 -0
  42. package/lib/generate-ruby-sdk/templates/spec_helper.rb.template.js +29 -0
  43. package/lib/generate-ruby-sdk/templates/spec_helper.rb.template.js.map +1 -0
  44. package/lib/generate-ruby-sdk/templates/support-helpers.rb.template.d.ts +2 -0
  45. package/lib/generate-ruby-sdk/templates/support-helpers.rb.template.js +12 -0
  46. package/lib/generate-ruby-sdk/templates/support-helpers.rb.template.js.map +1 -0
  47. package/lib/generate-ruby-sdk/templates/version.rb.template.js +1 -1
  48. package/lib/openapi/get-parameter-and-response-schema.d.ts +7 -0
  49. package/lib/openapi/get-parameter-and-response-schema.js +2 -0
  50. package/lib/openapi/get-parameter-and-response-schema.js.map +1 -1
  51. package/lib/openapi/map-parent-to-children-resource.d.ts +2 -2
  52. package/lib/openapi/map-parent-to-children-resource.js +2 -2
  53. package/lib/openapi/map-parent-to-children-resource.js.map +1 -1
  54. package/package.json +1 -1
  55. package/src/lib/generate-csharp-sdk/codegen.ts +1 -0
  56. package/src/lib/generate-csharp-sdk/generate-csharp-sdk.ts +24 -4
  57. package/src/lib/generate-csharp-sdk/templates/dataclass.ts +68 -46
  58. package/src/lib/generate-php-sdk/generate-php-sdk.ts +4 -4
  59. package/src/lib/generate-python-sdk/class-file.ts +4 -4
  60. package/src/lib/generate-python-sdk/generate-python-sdk.ts +3 -4
  61. package/src/lib/generate-ruby-sdk/generate-ruby-sdk.ts +47 -14
  62. package/src/lib/generate-ruby-sdk/ruby-client.ts +42 -7
  63. package/src/lib/generate-ruby-sdk/templates/.rspec.template.ts +3 -0
  64. package/src/lib/generate-ruby-sdk/templates/.ruby-version.template.ts +1 -0
  65. package/src/lib/generate-ruby-sdk/templates/base_resource.rb.template.ts +2 -2
  66. package/src/lib/generate-ruby-sdk/templates/client.rb.template.ts +62 -73
  67. package/src/lib/generate-ruby-sdk/templates/request.rb.template.ts +1 -1
  68. package/src/lib/generate-ruby-sdk/templates/resource_error.rb.template.ts +2 -0
  69. package/src/lib/generate-ruby-sdk/templates/resource_warning.rb.template.ts +2 -0
  70. package/src/lib/generate-ruby-sdk/templates/seamapi.gemspec.template.ts +2 -2
  71. package/src/lib/generate-ruby-sdk/templates/snippets/action-attempt-helpers-template.ts +27 -0
  72. package/src/lib/generate-ruby-sdk/templates/snippets/resource.rb.template.ts +34 -9
  73. package/src/lib/generate-ruby-sdk/templates/spec_helper.rb.template.ts +28 -0
  74. package/src/lib/generate-ruby-sdk/templates/support-helpers.rb.template.ts +11 -0
  75. package/src/lib/generate-ruby-sdk/templates/version.rb.template.ts +1 -1
  76. package/src/lib/openapi/get-parameter-and-response-schema.ts +2 -0
  77. package/src/lib/openapi/map-parent-to-children-resource.ts +2 -4
@@ -13,11 +13,16 @@ import loggerRbTemplate from "./templates/logger.rb.template.js";
13
13
  import clientRbTemplate from "./templates/client.rb.template.js";
14
14
  import gemfileTemplate from "./templates/gemfile.template.js";
15
15
  import seamapiGemspecTemplate from "./templates/seamapi.gemspec.template.js";
16
+ import rspecTemplate from "./templates/.rspec.template.js";
17
+ import rubyVersionTemplate from "./templates/.ruby-version.template.js";
18
+ import supportHelpersTemplate from "./templates/support-helpers.rb.template.js";
19
+ import specHelperTemplate from "./templates/spec_helper.rb.template.js";
16
20
  import base_resourceRbTemplate from "./templates/base_resource.rb.template.js";
17
21
  import resource_errorRbTemplate from "./templates/resource_error.rb.template.js";
18
22
  import resource_warningRbTemplate from "./templates/resource_warning.rb.template.js";
19
23
  import resource_errors_supportRbTemplate from "./templates/resource_errors_support.rb.template.js";
20
24
  import resource_warnings_supportRbTemplate from "./templates/resource_warnings_support.rb.template.js";
25
+ import mapParentToChildResources from "../../lib/openapi/map-parent-to-children-resource.js";
21
26
  export const generateRubySDK = async () => {
22
27
  const openapi = await axios
23
28
  .get("https://connect.getseam.com/openapi.json")
@@ -29,14 +34,16 @@ export const generateRubySDK = async () => {
29
34
  const fs = {};
30
35
  fs["README.md"] = readmeMdTemplate();
31
36
  fs["Rakefile"] = rakefileTemplate();
32
- fs["spec/spec_helper.rb"] = "";
37
+ fs["spec/spec_helper.rb"] = specHelperTemplate();
38
+ fs["spec/support/helpers.rb"] = supportHelpersTemplate();
33
39
  fs["spec/smoketest.rb"] = "";
34
40
  fs["Gemfile"] = gemfileTemplate();
35
41
  fs["seamapi.gemspec"] = seamapiGemspecTemplate();
42
+ fs[".rspec"] = rspecTemplate();
43
+ fs[".ruby-version"] = rubyVersionTemplate();
36
44
  fs["lib/seam/version.rb"] = versionRbTemplate();
37
45
  fs["lib/seam/request.rb"] = requestRbTemplate();
38
46
  fs["lib/seam/logger.rb"] = loggerRbTemplate();
39
- fs["lib/seam/client.rb"] = clientRbTemplate();
40
47
  fs["lib/seam/clients/base_client.rb"] = base_clientRbTemplate();
41
48
  fs["lib/seam/resources/base_resource.rb"] = base_resourceRbTemplate();
42
49
  fs["lib/seam/resources/resource_error.rb"] = resource_errorRbTemplate();
@@ -71,22 +78,36 @@ export const generateRubySDK = async () => {
71
78
  seamapi_rb_requires.push(`seam/resources/${snake_name}`);
72
79
  }
73
80
  const clients = {};
81
+ const parent_to_child_resources_map = mapParentToChildResources(routes);
82
+ const processClient = (resource_name) => {
83
+ const child_class_identifiers = (parent_to_child_resources_map[resource_name] ?? []).map((child_resource) => ({
84
+ client_name: pascalCase(`${resource_name} ${child_resource}`),
85
+ namespace: child_resource,
86
+ }));
87
+ const pascal_resource_name = pascalCase(resource_name);
88
+ clients[pascal_resource_name] = new RubyClient(pascal_resource_name, resource_name, child_class_identifiers);
89
+ };
74
90
  for (const route of routes) {
75
91
  if (!route.post)
76
92
  continue;
77
93
  if (!route.post["x-fern-sdk-group-name"])
78
94
  continue;
79
95
  const group_names = [...route.post["x-fern-sdk-group-name"]];
96
+ const [base_resource] = group_names;
80
97
  const namespace = group_names.join("_");
81
- group_names.reverse();
82
- const class_name = pascalCase(group_names.join("_"));
83
- if (!clients[class_name]) {
84
- // namespaces.push(route.post["x-fern-sdk-group-name"])
85
- clients[class_name] = new RubyClient(class_name, namespace);
98
+ const client_name = pascalCase(group_names.join("_"));
99
+ if (!clients[client_name])
100
+ processClient(namespace);
101
+ /*
102
+ special case when we don't have routes for a base resource
103
+ and thus a respective x-fern-sdk-group-name for ex. /noise_sensors
104
+ */
105
+ if (base_resource && !clients[pascalCase(base_resource)]) {
106
+ processClient(base_resource);
86
107
  }
87
- const client = clients[class_name];
108
+ const client = clients[client_name];
88
109
  if (!client) {
89
- console.warn(`No client for "${class_name}", skipping`);
110
+ console.warn(`No client for "${client_name}", skipping`);
90
111
  continue;
91
112
  }
92
113
  const { parameter_schema, response_obj_type, response_arr_type } = getParameterAndResponseSchema(route);
@@ -94,10 +115,7 @@ export const generateRubySDK = async () => {
94
115
  console.warn(`No parameter schema for "${route.path}", skipping`);
95
116
  continue;
96
117
  }
97
- if (!response_obj_type && !response_arr_type) {
98
- console.warn(`No response object/array ref for "${route.path}", skipping`);
99
- continue;
100
- }
118
+ const return_resource = response_obj_type ?? response_arr_type;
101
119
  client.addMethod({
102
120
  method_name: route.post["x-fern-sdk-method-name"],
103
121
  path: route.path,
@@ -112,13 +130,14 @@ export const generateRubySDK = async () => {
112
130
  : undefined,
113
131
  })),
114
132
  return_path: route.post["x-fern-sdk-return-value"],
115
- return_resource: pascalCase(response_obj_type ?? response_arr_type),
133
+ return_resource: return_resource ? pascalCase(return_resource) : null,
116
134
  });
117
135
  }
118
136
  for (const client of Object.values(clients)) {
119
137
  fs[`lib/seam/clients/${client.snake_name}.rb`] = client.serialize();
120
138
  seamapi_rb_requires.push(`seam/clients/${client.snake_name}`);
121
139
  }
140
+ fs["lib/seam/client.rb"] = clientRbTemplate(Object.keys(parent_to_child_resources_map));
122
141
  fs["lib/seamapi.rb"] = [
123
142
  `# frozen_string_literal: true`,
124
143
  "",
@@ -1 +1 @@
1
- {"version":3,"file":"generate-ruby-sdk.js","sourceRoot":"","sources":["../../src/lib/generate-ruby-sdk/generate-ruby-sdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-ruby-sdk.js","sourceRoot":"","sources":["../../src/lib/generate-ruby-sdk/generate-ruby-sdk.ts"],"names":[],"mappings":"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"}
@@ -7,14 +7,19 @@ export type RubyClientMethod = {
7
7
  method_name: string;
8
8
  path: string;
9
9
  parameters: RubyClientMethodParameter[];
10
- return_resource: string;
10
+ return_resource: string | null;
11
11
  return_path: string;
12
12
  };
13
+ type ChildClientIdentifier = {
14
+ client_name: string;
15
+ namespace: string;
16
+ };
13
17
  export declare class RubyClient {
14
18
  pascal_name: string;
15
19
  snake_name: string;
16
20
  methods: RubyClientMethod[];
17
- constructor(pascal_name: string, snake_name: string);
21
+ child_client_identifiers: ChildClientIdentifier[];
22
+ constructor(pascal_name: string, snake_name: string, child_client_identifiers: ChildClientIdentifier[]);
18
23
  addMethod(method: RubyClientMethod): void;
19
24
  /**
20
25
  * Example:
@@ -33,3 +38,4 @@ export declare class RubyClient {
33
38
  */
34
39
  serialize(): string;
35
40
  }
41
+ export {};
@@ -1,9 +1,11 @@
1
+ import endpoints_returning_deprecated_action_attempt from "../../lib/endpoints-returning-deprecated-action-attempt.js";
1
2
  export class RubyClient {
2
- constructor(pascal_name, snake_name) {
3
+ constructor(pascal_name, snake_name, child_client_identifiers) {
3
4
  this.pascal_name = pascal_name;
4
5
  this.snake_name = snake_name;
5
6
  this.methods = [];
6
7
  this.methods = [];
8
+ this.child_client_identifiers = child_client_identifiers;
7
9
  }
8
10
  addMethod(method) {
9
11
  this.methods.push(method);
@@ -25,29 +27,46 @@ export class RubyClient {
25
27
  */
26
28
  serialize() {
27
29
  return [
30
+ `# frozen_string_literal: true`,
31
+ ``,
28
32
  `module Seam`,
29
33
  ` module Clients`,
30
34
  ` class ${this.pascal_name} < BaseClient`,
35
+ ...this.child_client_identifiers.map(({ client_name, namespace }) => [
36
+ `def ${namespace}`,
37
+ ` @${namespace} ||= Seam::Clients::${client_name}.new(self)`,
38
+ `end`,
39
+ ``,
40
+ ]
41
+ .flatMap((s) => ` ${s}`)
42
+ .join("\n")),
31
43
  ...this.methods.map(({ method_name, path, parameters, return_resource, return_path }) => {
44
+ const is_action_attempt_client = this.pascal_name === "ActionAttempts";
45
+ const can_method_poll_action_attempt = !endpoints_returning_deprecated_action_attempt.includes(path) &&
46
+ !is_action_attempt_client &&
47
+ return_resource === "ActionAttempt";
32
48
  return [
33
- " ",
34
49
  `def ${method_name}(${parameters
35
50
  .sort((a, b) => (a.position ?? a.required ? 1000 : 9999) -
36
51
  (b.position ?? b.required ? 1000 : 9999))
37
52
  .map((p) => `${p.name}${p.required ? "" : ": nil"}`)
38
53
  .join(", ")})`,
39
- ` request_seam_object(`,
54
+ ` ${can_method_poll_action_attempt ? "action_attempt = " : ""}${return_resource ? "request_seam_object" : "request_seam"}(`,
40
55
  ` :post,`,
41
56
  ` "${path}",`,
42
- ` ${return_resource},`,
43
- ` '${return_path}',`,
57
+ return_resource ? ` Seam::${return_resource},` : [],
58
+ return_path ? ` '${return_path}',` : [],
44
59
  ` body: {${parameters
45
60
  .map((p) => `${p.name}: ${p.name}`)
46
61
  .join(", ")}}.compact`,
47
62
  ` )`,
63
+ ` ${can_method_poll_action_attempt
64
+ ? "action_attempt.wait_until_finished\n action_attempt"
65
+ : ""}`,
48
66
  `end`,
67
+ ``,
49
68
  ]
50
- .map((s) => ` ${s}`)
69
+ .flatMap((s) => ` ${s}`)
51
70
  .join("\n");
52
71
  }),
53
72
  ` end`,
@@ -1 +1 @@
1
- {"version":3,"file":"ruby-client.js","sourceRoot":"","sources":["../../src/lib/generate-ruby-sdk/ruby-client.ts"],"names":[],"mappings":"AAcA,MAAM,OAAO,UAAU;IAGrB,YACS,WAAmB,EACnB,UAAkB;QADlB,gBAAW,GAAX,WAAW,CAAQ;QACnB,eAAU,GAAV,UAAU,CAAQ;QAJ3B,YAAO,GAAuB,EAAE,CAAA;QAM9B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IACnB,CAAC;IAED,SAAS,CAAC,MAAwB;QAChC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC3B,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,SAAS;QACP,OAAO;YACL,aAAa;YACb,kBAAkB;YAClB,aAAa,IAAI,CAAC,WAAW,eAAe;YAC5C,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CACjB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,EAAE,EAAE;gBAClE,OAAO;oBACL,GAAG;oBACH,OAAO,WAAW,IAAI,UAAU;yBAC7B,IAAI,CACH,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;wBACxC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAC3C;yBACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;yBACnD,IAAI,CAAC,IAAI,CAAC,GAAG;oBAChB,wBAAwB;oBACxB,YAAY;oBACZ,QAAQ,IAAI,IAAI;oBAChB,OAAO,eAAe,GAAG;oBACzB,QAAQ,WAAW,IAAI;oBACvB,cAAc,UAAU;yBACrB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;yBAClC,IAAI,CAAC,IAAI,CAAC,WAAW;oBACxB,KAAK;oBACL,KAAK;iBACN;qBACE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;qBAC1B,IAAI,CAAC,IAAI,CAAC,CAAA;YACf,CAAC,CACF;YACD,SAAS;YACT,OAAO;YACP,KAAK;SACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACd,CAAC;CACF"}
1
+ {"version":3,"file":"ruby-client.js","sourceRoot":"","sources":["../../src/lib/generate-ruby-sdk/ruby-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ declare const _default: () => string;
2
+ export default _default;
@@ -0,0 +1,4 @@
1
+ export default () => `--format documentation
2
+ --color
3
+ --require spec_helper`;
4
+ //# sourceMappingURL=.rspec.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":".rspec.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/.rspec.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;sBAEC,CAAA"}
@@ -0,0 +1,2 @@
1
+ declare const _default: () => string;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ export default () => `3.0.4`;
2
+ //# sourceMappingURL=.ruby-version.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":".ruby-version.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/.ruby-version.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC,OAAO,CAAA"}
@@ -29,12 +29,12 @@ module Seam
29
29
  end
30
30
 
31
31
  def inspect
32
- "<#{self.class.name}:#{"0x00%x" % (object_id << 1)}\n" + # rubocop:disable Style/StringConcatenation, Style/FormatString
32
+ "<#{self.class.name}:#{"0x00%x" % (object_id << 1)}\\n" + # rubocop:disable Style/StringConcatenation, Style/FormatString
33
33
  instance_variables
34
34
  .map { |k| k.to_s.sub("@", "") }
35
35
  .filter { |k| k != "data" and k != "client" and respond_to? k }
36
36
  .map { |k| " #{k}=#{send(k).inspect}" }
37
- .join("\n") + ">"
37
+ .join("\\n") + ">"
38
38
  end
39
39
 
40
40
  def self.date_accessor(*attrs)
@@ -1,2 +1,2 @@
1
- declare const _default: () => string;
1
+ declare const _default: (resource_client_names: string[]) => string;
2
2
  export default _default;
@@ -1,74 +1,61 @@
1
- export default () => `# frozen_string_literal: true
2
-
3
- module Seam
4
- class Client
5
- attr_accessor :api_key, :base_uri, :debug
6
-
7
- def initialize(api_key: nil, base_uri: "https://connect.getseam.com", debug: false)
8
- @api_key = api_key || ENV.fetch("SEAM_API_KEY", nil)
9
- @base_uri = base_uri
10
- @debug = debug
11
-
12
- raise ArgumentError, "SEAM_API_KEY not found in environment, and api_key not provided" unless @api_key
13
- end
14
-
15
- def health
16
- request_seam(:get, "/health")
17
- end
18
-
19
- def locks
20
- @locks ||= Seam::Clients::Locks.new(self)
21
- end
22
-
23
- def devices
24
- @devices ||= Seam::Clients::Devices.new(self)
25
- end
26
-
27
- def unmanaged_devices
28
- @unmanaged_devices ||= Seam::Clients::UnmanagedDevices.new(self)
29
- end
30
-
31
- def action_attempts
32
- @action_attempts ||= Seam::Clients::ActionAttempts.new(self)
33
- end
34
-
35
- def access_codes
36
- @access_codes ||= Seam::Clients::AccessCodes.new(self)
37
- end
38
-
39
- def connect_webviews
40
- @connect_webviews ||= Seam::Clients::ConnectWebviews.new(self)
41
- end
42
-
43
- def connected_accounts
44
- @connected_accounts ||= Seam::Clients::ConnectedAccounts.new(self)
45
- end
46
-
47
- def workspaces
48
- @workspaces ||= Seam::Clients::Workspaces.new(self)
49
- end
50
-
51
- def events
52
- @events ||= Seam::Clients::Events.new(self)
53
- end
54
-
55
- def request_seam_object(method, path, klass, inner_object, config = {})
56
- response = request_seam(method, path, config)
57
-
58
- data = response[inner_object]
59
-
60
- klass.load_from_response(data, self)
61
- end
62
-
63
- def request_seam(method, path, config = {})
64
- Seam::Request.new(
65
- api_key: api_key,
66
- base_uri: base_uri,
67
- debug: debug
68
- ).perform(
69
- method, path, config
70
- )
71
- end
72
- end
73
- end`;
1
+ import { pascalCase } from "change-case";
2
+ export default (resource_client_names) => {
3
+ const resource_client_defs = resource_client_names
4
+ .map((client_name) => {
5
+ return `
6
+ def ${client_name}
7
+ @${client_name} ||= Seam::Clients::${pascalCase(client_name)}.new(self)
8
+ end
9
+ `;
10
+ })
11
+ .join("");
12
+ return `# frozen_string_literal: true
13
+
14
+ module Seam
15
+ class Client
16
+ attr_accessor :api_key, :base_uri, :debug
17
+
18
+ def initialize(api_key: nil, base_uri: "https://connect.getseam.com", debug: false)
19
+ @api_key = api_key || ENV.fetch("SEAM_API_KEY", nil)
20
+ @base_uri = base_uri
21
+ @debug = debug
22
+
23
+ raise ArgumentError, "SEAM_API_KEY not found in environment, and api_key not provided" unless @api_key
24
+ end
25
+ ${resource_client_defs}
26
+
27
+ # @deprecated Please use {#devices.unmanaged} instead.
28
+ def unmanaged_devices
29
+ warn "[DEPRECATION] 'unmanaged_devices' is deprecated. Please use 'devices.unmanaged' instead."
30
+
31
+ @unmanaged_devices ||= Seam::Clients::DevicesUnmanaged.new(self)
32
+ end
33
+
34
+ # @deprecated Please use {#access_codes.unmanaged} instead.
35
+ def unmanaged_access_codes
36
+ warn "[DEPRECATION] 'unmanaged_access_codes' is deprecated. Please use 'access_codes.unmanaged' instead."
37
+
38
+ @unmanaged_access_codes ||= Seam::Clients::AccessCodesUnmanaged.new(self)
39
+ end
40
+
41
+ def request_seam_object(method, path, klass, inner_object, config = {})
42
+ response = request_seam(method, path, config)
43
+
44
+ data = response[inner_object]
45
+
46
+ klass.load_from_response(data, self)
47
+ end
48
+
49
+ def request_seam(method, path, config = {})
50
+ Seam::Request.new(
51
+ api_key: api_key,
52
+ base_uri: base_uri,
53
+ debug: debug
54
+ ).perform(
55
+ method, path, config
56
+ )
57
+ end
58
+ end
59
+ end`;
60
+ };
74
61
  //# sourceMappingURL=client.rb.template.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.rb.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/client.rb.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAwEjB,CAAA"}
1
+ {"version":3,"file":"client.rb.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/client.rb.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,eAAe,CAAC,qBAA+B,EAAE,EAAE;IACjD,MAAM,oBAAoB,GAAG,qBAAqB;SAC/C,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;QACnB,OAAO;YACD,WAAW;WACZ,WAAW,uBAAuB,UAAU,CAAC,WAAW,CAAC;;OAE7D,CAAA;IACH,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAA;IAEX,OAAO;;;;;;;;;;;;;QAaD,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAkCtB,CAAA;AACN,CAAC,CAAA"}
@@ -45,7 +45,7 @@ module Seam
45
45
  code = response.status.code
46
46
 
47
47
  if code >= 400 && code < 500 && (err = response.parse["error"])
48
- msg = "Api Error #{err["type"]}\nrequest_id: #{err["request_id"]}\n#{err["message"]}"
48
+ msg = "Api Error #{err["type"]}\\nrequest_id: #{err["request_id"]}\\n#{err["message"]}"
49
49
  end
50
50
 
51
51
  raise Error.new(msg, code, response)
@@ -3,6 +3,8 @@ export default () => `# frozen_string_literal: true
3
3
  module Seam
4
4
  class ResourceError < BaseResource
5
5
  attr_accessor :error_code, :message
6
+
7
+ date_accessor :created_at
6
8
  end
7
9
  end`;
8
10
  //# sourceMappingURL=resource_error.rb.template.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource_error.rb.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/resource_error.rb.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;;IAMjB,CAAA"}
1
+ {"version":3,"file":"resource_error.rb.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/resource_error.rb.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;;;;IAQjB,CAAA"}
@@ -3,6 +3,8 @@ export default () => `# frozen_string_literal: true
3
3
  module Seam
4
4
  class ResourceWarning < BaseResource
5
5
  attr_accessor :warning_code, :message
6
+
7
+ date_accessor :created_at
6
8
  end
7
9
  end`;
8
10
  //# sourceMappingURL=resource_warning.rb.template.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource_warning.rb.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/resource_warning.rb.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;;IAMjB,CAAA"}
1
+ {"version":3,"file":"resource_warning.rb.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/resource_warning.rb.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;;;;IAQjB,CAAA"}
@@ -6,7 +6,7 @@ Gem::Specification.new do |spec|
6
6
  spec.name = "seamapi"
7
7
  spec.version = Seam::VERSION
8
8
  spec.author = "Seam Labs, Inc."
9
- spec.email = "support@getseam.com"
9
+ spec.email = "devops@getseam.com"
10
10
 
11
11
  spec.summary = "Seam API Ruby SDK"
12
12
  spec.description = "Official interface to the Seam Connect API."
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.files = Dir["lib/**/*.rb"]
27
27
  spec.files += Dir["[A-Z]*"]
28
28
 
29
- spec.add_dependency "http", "~> 5.0.0"
29
+ spec.add_dependency "http", "~> 5.0"
30
30
 
31
31
  spec.add_development_dependency "bundler", "~> 2.0"
32
32
  spec.add_development_dependency "gem-release", "~> 2.2"
@@ -0,0 +1,2 @@
1
+ declare const _default: () => string;
2
+ export default _default;
@@ -0,0 +1,28 @@
1
+ export default () => `SLEEP_TIME = 0.2
2
+ MAX_ATTEMPTS = 10
3
+
4
+ def wait_until_finished
5
+ attempts = 0
6
+ while @status == "pending"
7
+ update!
8
+ sleep(SLEEP_TIME)
9
+ attempts += 1
10
+ end
11
+
12
+ raise "Timed out waiting for action attempt to finish" if attempts >= MAX_ATTEMPTS
13
+
14
+ self
15
+ end
16
+
17
+ def update!
18
+ response = @client.request_seam(
19
+ :post,
20
+ "/action_attempts/get",
21
+ body: {
22
+ action_attempt_id: action_attempt_id
23
+ }
24
+ )
25
+
26
+ update_from_response(response["action_attempt"])
27
+ end`;
28
+ //# sourceMappingURL=action-attempt-helpers-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-attempt-helpers-template.js","sourceRoot":"","sources":["../../../../src/lib/generate-ruby-sdk/templates/snippets/action-attempt-helpers-template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;QA0Bb,CAAA"}
@@ -1,15 +1,34 @@
1
- export default ({ pascal_name, attrs, date_attrs, }) => `# frozen_string_literal: true
1
+ import actionAttemptHelpersTemplate from "./action-attempt-helpers-template.js";
2
+ export default ({ pascal_name, attrs, date_attrs, }) => {
3
+ const no_error_warning_attrs = attrs.filter((attr) => attr !== "errors" && attr !== "warnings");
4
+ const has_warnings_attr = attrs.includes("warnings");
5
+ const has_errors_attr = attrs.includes("errors");
6
+ const attr_accessors = no_error_warning_attrs
7
+ .map((attr) => `:${attr}`)
8
+ .join(", ");
9
+ const date_accessors = date_attrs.length > 0
10
+ ? `date_accessor ${date_attrs.map((attr) => `:${attr}`).join(", ")}`
11
+ : "";
12
+ const resource_errors_support = has_errors_attr
13
+ ? "include Seam::ResourceErrorsSupport"
14
+ : "";
15
+ const resource_warnings_support = has_warnings_attr
16
+ ? "include Seam::ResourceWarningsSupport"
17
+ : "";
18
+ const is_action_attempt_resource = pascal_name === "ActionAttempt";
19
+ return `# frozen_string_literal: true
2
20
 
3
21
  module Seam
4
22
  class ${pascal_name} < BaseResource
5
- attr_reader ${attrs.map((attr) => `:${attr}`).join(", ")}
23
+ attr_accessor ${attr_accessors}
6
24
 
7
- ${date_attrs.length > 0
8
- ? `date_accessor ${date_attrs.map((attr) => `:${attr}`).join(", ")}`
9
- : ""}
25
+ ${date_accessors}
10
26
 
11
- include Seam::ResourceErrorsSupport
12
- include Seam::ResourceWarningsSupport
27
+ ${resource_errors_support}
28
+ ${resource_warnings_support}
29
+
30
+ ${is_action_attempt_resource ? actionAttemptHelpersTemplate() : ""}
13
31
  end
14
32
  end`;
33
+ };
15
34
  //# sourceMappingURL=resource.rb.template.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource.rb.template.js","sourceRoot":"","sources":["../../../../src/lib/generate-ruby-sdk/templates/snippets/resource.rb.template.ts"],"names":[],"mappings":"AAAA,eAAe,CAAC,EACd,WAAW,EACX,KAAK,EACL,UAAU,GAKX,EAAE,EAAE,CAAC;;;UAGI,WAAW;kBACH,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;MAGtD,UAAU,CAAC,MAAM,GAAG,CAAC;IACnB,CAAC,CAAC,iBAAiB,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IACpE,CAAC,CAAC,EACN;;;;;IAKA,CAAA"}
1
+ {"version":3,"file":"resource.rb.template.js","sourceRoot":"","sources":["../../../../src/lib/generate-ruby-sdk/templates/snippets/resource.rb.template.ts"],"names":[],"mappings":"AAAA,OAAO,4BAA4B,MAAM,sCAAsC,CAAA;AAE/E,eAAe,CAAC,EACd,WAAW,EACX,KAAK,EACL,UAAU,GAKX,EAAE,EAAE;IACH,MAAM,sBAAsB,GAAG,KAAK,CAAC,MAAM,CACzC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,UAAU,CACnD,CAAA;IACD,MAAM,iBAAiB,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;IACpD,MAAM,eAAe,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAEhD,MAAM,cAAc,GAAG,sBAAsB;SAC1C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;SACzB,IAAI,CAAC,IAAI,CAAC,CAAA;IACb,MAAM,cAAc,GAClB,UAAU,CAAC,MAAM,GAAG,CAAC;QACnB,CAAC,CAAC,iBAAiB,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACpE,CAAC,CAAC,EAAE,CAAA;IAER,MAAM,uBAAuB,GAAG,eAAe;QAC7C,CAAC,CAAC,qCAAqC;QACvC,CAAC,CAAC,EAAE,CAAA;IACN,MAAM,yBAAyB,GAAG,iBAAiB;QACjD,CAAC,CAAC,uCAAuC;QACzC,CAAC,CAAC,EAAE,CAAA;IAEN,MAAM,0BAA0B,GAAG,WAAW,KAAK,eAAe,CAAA;IAElE,OAAO;;;UAGC,WAAW;oBACD,cAAc;;MAE5B,cAAc;;MAEd,uBAAuB;MACvB,yBAAyB;;QAEvB,0BAA0B,CAAC,CAAC,CAAC,4BAA4B,EAAE,CAAC,CAAC,CAAC,EAAE;;IAEpE,CAAA;AACJ,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ declare const _default: () => string;
2
+ export default _default;
@@ -0,0 +1,29 @@
1
+ export default () => `# frozen_string_literal: true
2
+
3
+ require "simplecov"
4
+ require "simplecov-console"
5
+
6
+ SimpleCov.start
7
+
8
+ require "seamapi"
9
+ require "webmock/rspec"
10
+
11
+ require_relative "support/helpers"
12
+
13
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
14
+ SimpleCov::Formatter::HTMLFormatter,
15
+ SimpleCov::Formatter::Console
16
+ ])
17
+
18
+ RSpec.configure do |config|
19
+ config.example_status_persistence_file_path = ".rspec_status"
20
+
21
+ config.disable_monkey_patching!
22
+
23
+ config.expect_with :rspec do |c|
24
+ c.syntax = :expect
25
+ end
26
+
27
+ config.include Helpers
28
+ end`;
29
+ //# sourceMappingURL=spec_helper.rb.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec_helper.rb.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/spec_helper.rb.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;IA2BjB,CAAA"}
@@ -0,0 +1,2 @@
1
+ declare const _default: () => string;
2
+ export default _default;
@@ -0,0 +1,12 @@
1
+ export default () => `# frozen_string_literal: true
2
+
3
+ module Helpers
4
+ def stub_seam_request(method, path, response, status: 200, headers: {})
5
+ stub_request(
6
+ method,
7
+ "https://connect.getseam.com#{path}"
8
+ ).to_return(status: status, body: response.to_json,
9
+ headers: {"Content-Type" => "application/json"}.merge(headers))
10
+ end
11
+ end`;
12
+ //# sourceMappingURL=support-helpers.rb.template.js.map