@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.
- package/lib/generate-csharp-sdk/codegen.d.ts +1 -0
- package/lib/generate-csharp-sdk/codegen.js +1 -0
- package/lib/generate-csharp-sdk/codegen.js.map +1 -1
- package/lib/generate-csharp-sdk/generate-csharp-sdk.js +10 -3
- package/lib/generate-csharp-sdk/generate-csharp-sdk.js.map +1 -1
- package/lib/generate-csharp-sdk/templates/dataclass.d.ts +1 -0
- package/lib/generate-csharp-sdk/templates/dataclass.js +46 -27
- package/lib/generate-csharp-sdk/templates/dataclass.js.map +1 -1
- package/lib/generate-php-sdk/generate-php-sdk.js +4 -4
- package/lib/generate-php-sdk/generate-php-sdk.js.map +1 -1
- package/lib/generate-python-sdk/class-file.js +4 -4
- package/lib/generate-python-sdk/class-file.js.map +1 -1
- package/lib/generate-python-sdk/generate-python-sdk.js +3 -4
- package/lib/generate-python-sdk/generate-python-sdk.js.map +1 -1
- package/lib/generate-ruby-sdk/generate-ruby-sdk.js +33 -14
- package/lib/generate-ruby-sdk/generate-ruby-sdk.js.map +1 -1
- package/lib/generate-ruby-sdk/ruby-client.d.ts +8 -2
- package/lib/generate-ruby-sdk/ruby-client.js +25 -6
- package/lib/generate-ruby-sdk/ruby-client.js.map +1 -1
- package/lib/generate-ruby-sdk/templates/.rspec.template.d.ts +2 -0
- package/lib/generate-ruby-sdk/templates/.rspec.template.js +4 -0
- package/lib/generate-ruby-sdk/templates/.rspec.template.js.map +1 -0
- package/lib/generate-ruby-sdk/templates/.ruby-version.template.d.ts +2 -0
- package/lib/generate-ruby-sdk/templates/.ruby-version.template.js +2 -0
- package/lib/generate-ruby-sdk/templates/.ruby-version.template.js.map +1 -0
- package/lib/generate-ruby-sdk/templates/base_resource.rb.template.js +2 -2
- package/lib/generate-ruby-sdk/templates/client.rb.template.d.ts +1 -1
- package/lib/generate-ruby-sdk/templates/client.rb.template.js +60 -73
- package/lib/generate-ruby-sdk/templates/client.rb.template.js.map +1 -1
- package/lib/generate-ruby-sdk/templates/request.rb.template.js +1 -1
- package/lib/generate-ruby-sdk/templates/resource_error.rb.template.js +2 -0
- package/lib/generate-ruby-sdk/templates/resource_error.rb.template.js.map +1 -1
- package/lib/generate-ruby-sdk/templates/resource_warning.rb.template.js +2 -0
- package/lib/generate-ruby-sdk/templates/resource_warning.rb.template.js.map +1 -1
- package/lib/generate-ruby-sdk/templates/seamapi.gemspec.template.js +2 -2
- package/lib/generate-ruby-sdk/templates/snippets/action-attempt-helpers-template.d.ts +2 -0
- package/lib/generate-ruby-sdk/templates/snippets/action-attempt-helpers-template.js +28 -0
- package/lib/generate-ruby-sdk/templates/snippets/action-attempt-helpers-template.js.map +1 -0
- package/lib/generate-ruby-sdk/templates/snippets/resource.rb.template.js +26 -7
- package/lib/generate-ruby-sdk/templates/snippets/resource.rb.template.js.map +1 -1
- package/lib/generate-ruby-sdk/templates/spec_helper.rb.template.d.ts +2 -0
- package/lib/generate-ruby-sdk/templates/spec_helper.rb.template.js +29 -0
- package/lib/generate-ruby-sdk/templates/spec_helper.rb.template.js.map +1 -0
- package/lib/generate-ruby-sdk/templates/support-helpers.rb.template.d.ts +2 -0
- package/lib/generate-ruby-sdk/templates/support-helpers.rb.template.js +12 -0
- package/lib/generate-ruby-sdk/templates/support-helpers.rb.template.js.map +1 -0
- package/lib/generate-ruby-sdk/templates/version.rb.template.js +1 -1
- package/lib/openapi/get-parameter-and-response-schema.d.ts +7 -0
- package/lib/openapi/get-parameter-and-response-schema.js +2 -0
- package/lib/openapi/get-parameter-and-response-schema.js.map +1 -1
- package/lib/openapi/map-parent-to-children-resource.d.ts +2 -2
- package/lib/openapi/map-parent-to-children-resource.js +2 -2
- package/lib/openapi/map-parent-to-children-resource.js.map +1 -1
- package/package.json +1 -1
- package/src/lib/generate-csharp-sdk/codegen.ts +1 -0
- package/src/lib/generate-csharp-sdk/generate-csharp-sdk.ts +24 -4
- package/src/lib/generate-csharp-sdk/templates/dataclass.ts +68 -46
- package/src/lib/generate-php-sdk/generate-php-sdk.ts +4 -4
- package/src/lib/generate-python-sdk/class-file.ts +4 -4
- package/src/lib/generate-python-sdk/generate-python-sdk.ts +3 -4
- package/src/lib/generate-ruby-sdk/generate-ruby-sdk.ts +47 -14
- package/src/lib/generate-ruby-sdk/ruby-client.ts +42 -7
- package/src/lib/generate-ruby-sdk/templates/.rspec.template.ts +3 -0
- package/src/lib/generate-ruby-sdk/templates/.ruby-version.template.ts +1 -0
- package/src/lib/generate-ruby-sdk/templates/base_resource.rb.template.ts +2 -2
- package/src/lib/generate-ruby-sdk/templates/client.rb.template.ts +62 -73
- package/src/lib/generate-ruby-sdk/templates/request.rb.template.ts +1 -1
- package/src/lib/generate-ruby-sdk/templates/resource_error.rb.template.ts +2 -0
- package/src/lib/generate-ruby-sdk/templates/resource_warning.rb.template.ts +2 -0
- package/src/lib/generate-ruby-sdk/templates/seamapi.gemspec.template.ts +2 -2
- package/src/lib/generate-ruby-sdk/templates/snippets/action-attempt-helpers-template.ts +27 -0
- package/src/lib/generate-ruby-sdk/templates/snippets/resource.rb.template.ts +34 -9
- package/src/lib/generate-ruby-sdk/templates/spec_helper.rb.template.ts +28 -0
- package/src/lib/generate-ruby-sdk/templates/support-helpers.rb.template.ts +11 -0
- package/src/lib/generate-ruby-sdk/templates/version.rb.template.ts +1 -1
- package/src/lib/openapi/get-parameter-and-response-schema.ts +2 -0
- 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.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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[
|
|
108
|
+
const client = clients[client_name];
|
|
88
109
|
if (!client) {
|
|
89
|
-
console.warn(`No client for "${
|
|
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
|
-
|
|
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(
|
|
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":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/C,OAAO,kBAAkB,MAAM,8CAA8C,CAAA;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,6BAA6B,EAAE,MAAM,kDAAkD,CAAA;AAChG,OAAO,qBAAqB,MAAM,wCAAwC,CAAA;AAC1E,OAAO,gBAAgB,MAAM,mCAAmC,CAAA;AAChE,OAAO,gBAAgB,MAAM,kCAAkC,CAAA;AAC/D,OAAO,iBAAiB,MAAM,oCAAoC,CAAA;AAClE,OAAO,iBAAiB,MAAM,oCAAoC,CAAA;AAClE,OAAO,gBAAgB,MAAM,mCAAmC,CAAA;AAChE,OAAO,gBAAgB,MAAM,mCAAmC,CAAA;AAChE,OAAO,eAAe,MAAM,iCAAiC,CAAA;AAC7D,OAAO,sBAAsB,MAAM,yCAAyC,CAAA;AAC5E,OAAO,uBAAuB,MAAM,0CAA0C,CAAA;AAC9E,OAAO,wBAAwB,MAAM,2CAA2C,CAAA;AAChF,OAAO,0BAA0B,MAAM,6CAA6C,CAAA;AACpF,OAAO,iCAAiC,MAAM,oDAAoD,CAAA;AAClG,OAAO,mCAAmC,MAAM,sDAAsD,CAAA;
|
|
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
|
-
|
|
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
|
-
`
|
|
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
|
-
.
|
|
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":"
|
|
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 @@
|
|
|
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 @@
|
|
|
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)}
|
|
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("
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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
|
|
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"]}
|
|
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)
|
|
@@ -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
|
|
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"}
|
|
@@ -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
|
|
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 = "
|
|
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
|
|
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,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
|
-
|
|
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
|
-
|
|
23
|
+
attr_accessor ${attr_accessors}
|
|
6
24
|
|
|
7
|
-
${
|
|
8
|
-
? `date_accessor ${date_attrs.map((attr) => `:${attr}`).join(", ")}`
|
|
9
|
-
: ""}
|
|
25
|
+
${date_accessors}
|
|
10
26
|
|
|
11
|
-
|
|
12
|
-
|
|
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
|
|
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,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,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
|