@seamapi/nextlove-sdk-generator 1.13.0 → 1.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/generate-ruby-sdk/generate-ruby-sdk.js +7 -60
- package/lib/generate-ruby-sdk/generate-ruby-sdk.js.map +1 -1
- package/package.json +1 -1
- package/src/lib/generate-ruby-sdk/generate-ruby-sdk.ts +7 -65
- package/lib/generate-ruby-sdk/templates/.rspec.template.d.ts +0 -2
- package/lib/generate-ruby-sdk/templates/.rspec.template.js +0 -4
- package/lib/generate-ruby-sdk/templates/.rspec.template.js.map +0 -1
- package/lib/generate-ruby-sdk/templates/.ruby-version.template.d.ts +0 -2
- package/lib/generate-ruby-sdk/templates/.ruby-version.template.js +0 -2
- package/lib/generate-ruby-sdk/templates/.ruby-version.template.js.map +0 -1
- package/lib/generate-ruby-sdk/templates/base_client.rb.template.d.ts +0 -2
- package/lib/generate-ruby-sdk/templates/base_client.rb.template.js +0 -22
- package/lib/generate-ruby-sdk/templates/base_client.rb.template.js.map +0 -1
- package/lib/generate-ruby-sdk/templates/base_resource.rb.template.d.ts +0 -2
- package/lib/generate-ruby-sdk/templates/base_resource.rb.template.js +0 -59
- package/lib/generate-ruby-sdk/templates/base_resource.rb.template.js.map +0 -1
- package/lib/generate-ruby-sdk/templates/client.rb.template.d.ts +0 -2
- package/lib/generate-ruby-sdk/templates/client.rb.template.js +0 -79
- package/lib/generate-ruby-sdk/templates/client.rb.template.js.map +0 -1
- package/lib/generate-ruby-sdk/templates/gemfile.template.d.ts +0 -2
- package/lib/generate-ruby-sdk/templates/gemfile.template.js +0 -7
- package/lib/generate-ruby-sdk/templates/gemfile.template.js.map +0 -1
- package/lib/generate-ruby-sdk/templates/logger.rb.template.d.ts +0 -2
- package/lib/generate-ruby-sdk/templates/logger.rb.template.js +0 -13
- package/lib/generate-ruby-sdk/templates/logger.rb.template.js.map +0 -1
- package/lib/generate-ruby-sdk/templates/lts_version.rb.template.d.ts +0 -2
- package/lib/generate-ruby-sdk/templates/lts_version.rb.template.js +0 -6
- package/lib/generate-ruby-sdk/templates/lts_version.rb.template.js.map +0 -1
- package/lib/generate-ruby-sdk/templates/rakefile.template.d.ts +0 -2
- package/lib/generate-ruby-sdk/templates/rakefile.template.js +0 -23
- package/lib/generate-ruby-sdk/templates/rakefile.template.js.map +0 -1
- package/lib/generate-ruby-sdk/templates/readme.md.template.d.ts +0 -2
- package/lib/generate-ruby-sdk/templates/readme.md.template.js +0 -184
- package/lib/generate-ruby-sdk/templates/readme.md.template.js.map +0 -1
- package/lib/generate-ruby-sdk/templates/request.rb.template.d.ts +0 -2
- package/lib/generate-ruby-sdk/templates/request.rb.template.js +0 -74
- package/lib/generate-ruby-sdk/templates/request.rb.template.js.map +0 -1
- package/lib/generate-ruby-sdk/templates/seamapi.gemspec.template.d.ts +0 -2
- package/lib/generate-ruby-sdk/templates/seamapi.gemspec.template.js +0 -41
- package/lib/generate-ruby-sdk/templates/seamapi.gemspec.template.js.map +0 -1
- package/lib/generate-ruby-sdk/templates/spec_helper.rb.template.d.ts +0 -2
- package/lib/generate-ruby-sdk/templates/spec_helper.rb.template.js +0 -29
- package/lib/generate-ruby-sdk/templates/spec_helper.rb.template.js.map +0 -1
- package/lib/generate-ruby-sdk/templates/support-helpers.rb.template.d.ts +0 -2
- package/lib/generate-ruby-sdk/templates/support-helpers.rb.template.js +0 -12
- package/lib/generate-ruby-sdk/templates/support-helpers.rb.template.js.map +0 -1
- package/lib/generate-ruby-sdk/templates/version.rb.template.d.ts +0 -2
- package/lib/generate-ruby-sdk/templates/version.rb.template.js +0 -6
- package/lib/generate-ruby-sdk/templates/version.rb.template.js.map +0 -1
- package/src/lib/generate-ruby-sdk/templates/.rspec.template.ts +0 -3
- package/src/lib/generate-ruby-sdk/templates/.ruby-version.template.ts +0 -1
- package/src/lib/generate-ruby-sdk/templates/base_client.rb.template.ts +0 -21
- package/src/lib/generate-ruby-sdk/templates/base_resource.rb.template.ts +0 -58
- package/src/lib/generate-ruby-sdk/templates/client.rb.template.ts +0 -80
- package/src/lib/generate-ruby-sdk/templates/gemfile.template.ts +0 -6
- package/src/lib/generate-ruby-sdk/templates/logger.rb.template.ts +0 -12
- package/src/lib/generate-ruby-sdk/templates/lts_version.rb.template.ts +0 -5
- package/src/lib/generate-ruby-sdk/templates/rakefile.template.ts +0 -22
- package/src/lib/generate-ruby-sdk/templates/readme.md.template.ts +0 -183
- package/src/lib/generate-ruby-sdk/templates/request.rb.template.ts +0 -73
- package/src/lib/generate-ruby-sdk/templates/seamapi.gemspec.template.ts +0 -40
- package/src/lib/generate-ruby-sdk/templates/spec_helper.rb.template.ts +0 -28
- package/src/lib/generate-ruby-sdk/templates/support-helpers.rb.template.ts +0 -11
- package/src/lib/generate-ruby-sdk/templates/version.rb.template.ts +0 -5
|
@@ -3,21 +3,6 @@ import resourceRbTemplate from "./templates/snippets/resource.rb.template.js";
|
|
|
3
3
|
import { pascalCase } from "change-case";
|
|
4
4
|
import { RubyClient } from "./ruby-client.js";
|
|
5
5
|
import { getParameterAndResponseSchema } from "../../lib/openapi/get-parameter-and-response-schema.js";
|
|
6
|
-
import base_clientRbTemplate from "./templates/base_client.rb.template.js";
|
|
7
|
-
import readmeMdTemplate from "./templates/readme.md.template.js";
|
|
8
|
-
import rakefileTemplate from "./templates/rakefile.template.js";
|
|
9
|
-
import versionRbTemplate from "./templates/version.rb.template.js";
|
|
10
|
-
import ltsVersionRbTemplate from "./templates/lts_version.rb.template.js";
|
|
11
|
-
import requestRbTemplate from "./templates/request.rb.template.js";
|
|
12
|
-
import loggerRbTemplate from "./templates/logger.rb.template.js";
|
|
13
|
-
import clientRbTemplate from "./templates/client.rb.template.js";
|
|
14
|
-
import gemfileTemplate from "./templates/gemfile.template.js";
|
|
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";
|
|
20
|
-
import base_resourceRbTemplate from "./templates/base_resource.rb.template.js";
|
|
21
6
|
import resource_errorRbTemplate from "./templates/resource_error.rb.template.js";
|
|
22
7
|
import resource_warningRbTemplate from "./templates/resource_warning.rb.template.js";
|
|
23
8
|
import resource_errors_supportRbTemplate from "./templates/resource_errors_support.rb.template.js";
|
|
@@ -32,52 +17,24 @@ export const generateRubySDK = async (options = {}) => {
|
|
|
32
17
|
...v,
|
|
33
18
|
}));
|
|
34
19
|
const fs = {};
|
|
35
|
-
fs["
|
|
36
|
-
fs["
|
|
37
|
-
|
|
38
|
-
fs["
|
|
39
|
-
fs["spec/smoketest.rb"] = "";
|
|
40
|
-
fs["Gemfile"] = gemfileTemplate();
|
|
41
|
-
fs["seamapi.gemspec"] = seamapiGemspecTemplate();
|
|
42
|
-
fs[".rspec"] = rspecTemplate();
|
|
43
|
-
fs[".ruby-version"] = rubyVersionTemplate();
|
|
44
|
-
fs["lib/seam/version.rb"] = versionRbTemplate();
|
|
45
|
-
fs["lib/seam/lts_version.rb"] = ltsVersionRbTemplate();
|
|
46
|
-
fs["lib/seam/request.rb"] = requestRbTemplate();
|
|
47
|
-
fs["lib/seam/logger.rb"] = loggerRbTemplate();
|
|
48
|
-
fs["lib/seam/clients/base_client.rb"] = base_clientRbTemplate();
|
|
49
|
-
fs["lib/seam/resources/base_resource.rb"] = base_resourceRbTemplate();
|
|
50
|
-
fs["lib/seam/resources/resource_error.rb"] = resource_errorRbTemplate();
|
|
51
|
-
fs["lib/seam/resources/resource_warning.rb"] = resource_warningRbTemplate();
|
|
52
|
-
fs["lib/seam/resources/resource_errors_support.rb"] =
|
|
20
|
+
fs["lib/seam/routes/resources/resource_error.rb"] = resource_errorRbTemplate();
|
|
21
|
+
fs["lib/seam/routes/resources/resource_warning.rb"] =
|
|
22
|
+
resource_warningRbTemplate();
|
|
23
|
+
fs["lib/seam/routes/resources/resource_errors_support.rb"] =
|
|
53
24
|
resource_errors_supportRbTemplate();
|
|
54
|
-
fs["lib/seam/resources/resource_warnings_support.rb"] =
|
|
25
|
+
fs["lib/seam/routes/resources/resource_warnings_support.rb"] =
|
|
55
26
|
resource_warnings_supportRbTemplate();
|
|
56
|
-
const seamapi_rb_requires = [
|
|
57
|
-
"seam/version",
|
|
58
|
-
"seam/lts_version",
|
|
59
|
-
"seam/request",
|
|
60
|
-
"seam/logger",
|
|
61
|
-
"seam/client",
|
|
62
|
-
"seam/clients/base_client",
|
|
63
|
-
"seam/resources/base_resource",
|
|
64
|
-
"seam/resources/resource_error",
|
|
65
|
-
"seam/resources/resource_warning",
|
|
66
|
-
"seam/resources/resource_errors_support",
|
|
67
|
-
"seam/resources/resource_warnings_support",
|
|
68
|
-
];
|
|
69
27
|
const resources = Object.entries(openapi.components.schemas).map(([schema_name, schema]) => [schema_name, flattenObjSchema(schema)]);
|
|
70
28
|
for (const [snake_name, schema] of resources) {
|
|
71
29
|
const params = Object.entries(schema.properties).map(([name, property_schema]) => ({
|
|
72
30
|
name,
|
|
73
31
|
is_date_time: "format" in property_schema && property_schema.format === "date-time",
|
|
74
32
|
}));
|
|
75
|
-
fs[`lib/seam/resources/${snake_name}.rb`] = resourceRbTemplate({
|
|
33
|
+
fs[`lib/seam/routes/resources/${snake_name}.rb`] = resourceRbTemplate({
|
|
76
34
|
pascal_name: pascalCase(snake_name),
|
|
77
35
|
attrs: params.filter((p) => !p.is_date_time).map((p) => p.name),
|
|
78
36
|
date_attrs: params.filter((p) => p.is_date_time).map((p) => p.name),
|
|
79
37
|
});
|
|
80
|
-
seamapi_rb_requires.push(`seam/resources/${snake_name}`);
|
|
81
38
|
}
|
|
82
39
|
const clients = {};
|
|
83
40
|
const parent_to_child_resources_map = mapParentToChildResources(routes);
|
|
@@ -138,18 +95,8 @@ export const generateRubySDK = async (options = {}) => {
|
|
|
138
95
|
});
|
|
139
96
|
}
|
|
140
97
|
for (const client of Object.values(clients)) {
|
|
141
|
-
fs[`lib/seam/clients/${client.snake_name}.rb`] = client.serialize();
|
|
142
|
-
seamapi_rb_requires.push(`seam/clients/${client.snake_name}`);
|
|
98
|
+
fs[`lib/seam/routes/clients/${client.snake_name}.rb`] = client.serialize();
|
|
143
99
|
}
|
|
144
|
-
fs["lib/seam/client.rb"] = clientRbTemplate(Object.keys(parent_to_child_resources_map));
|
|
145
|
-
fs["lib/seamapi.rb"] = [
|
|
146
|
-
`# frozen_string_literal: true`,
|
|
147
|
-
"",
|
|
148
|
-
...seamapi_rb_requires.map((r) => `require_relative "${r}"`),
|
|
149
|
-
"",
|
|
150
|
-
`module Seam`,
|
|
151
|
-
`end\n`,
|
|
152
|
-
].join("\n");
|
|
153
100
|
return fs;
|
|
154
101
|
};
|
|
155
102
|
//# sourceMappingURL=generate-ruby-sdk.js.map
|
|
@@ -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,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,
|
|
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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"}
|
package/package.json
CHANGED
|
@@ -4,21 +4,6 @@ import resourceRbTemplate from "./templates/snippets/resource.rb.template.js"
|
|
|
4
4
|
import { pascalCase } from "change-case"
|
|
5
5
|
import { RubyClient } from "./ruby-client.js"
|
|
6
6
|
import { getParameterAndResponseSchema } from "lib/openapi/get-parameter-and-response-schema.js"
|
|
7
|
-
import base_clientRbTemplate from "./templates/base_client.rb.template.js"
|
|
8
|
-
import readmeMdTemplate from "./templates/readme.md.template.js"
|
|
9
|
-
import rakefileTemplate from "./templates/rakefile.template.js"
|
|
10
|
-
import versionRbTemplate from "./templates/version.rb.template.js"
|
|
11
|
-
import ltsVersionRbTemplate from "./templates/lts_version.rb.template.js"
|
|
12
|
-
import requestRbTemplate from "./templates/request.rb.template.js"
|
|
13
|
-
import loggerRbTemplate from "./templates/logger.rb.template.js"
|
|
14
|
-
import clientRbTemplate from "./templates/client.rb.template.js"
|
|
15
|
-
import gemfileTemplate from "./templates/gemfile.template.js"
|
|
16
|
-
import seamapiGemspecTemplate from "./templates/seamapi.gemspec.template.js"
|
|
17
|
-
import rspecTemplate from "./templates/.rspec.template.js"
|
|
18
|
-
import rubyVersionTemplate from "./templates/.ruby-version.template.js"
|
|
19
|
-
import supportHelpersTemplate from "./templates/support-helpers.rb.template.js"
|
|
20
|
-
import specHelperTemplate from "./templates/spec_helper.rb.template.js"
|
|
21
|
-
import base_resourceRbTemplate from "./templates/base_resource.rb.template.js"
|
|
22
7
|
import resource_errorRbTemplate from "./templates/resource_error.rb.template.js"
|
|
23
8
|
import resource_warningRbTemplate from "./templates/resource_warning.rb.template.js"
|
|
24
9
|
import resource_errors_supportRbTemplate from "./templates/resource_errors_support.rb.template.js"
|
|
@@ -36,42 +21,14 @@ export const generateRubySDK = async (options: SdkGeneratorOptions = {}) => {
|
|
|
36
21
|
|
|
37
22
|
const fs: Record<string, string> = {}
|
|
38
23
|
|
|
39
|
-
fs["
|
|
40
|
-
fs["
|
|
41
|
-
|
|
42
|
-
fs["
|
|
43
|
-
fs["spec/smoketest.rb"] = ""
|
|
44
|
-
fs["Gemfile"] = gemfileTemplate()
|
|
45
|
-
fs["seamapi.gemspec"] = seamapiGemspecTemplate()
|
|
46
|
-
fs[".rspec"] = rspecTemplate()
|
|
47
|
-
fs[".ruby-version"] = rubyVersionTemplate()
|
|
48
|
-
fs["lib/seam/version.rb"] = versionRbTemplate()
|
|
49
|
-
fs["lib/seam/lts_version.rb"] = ltsVersionRbTemplate()
|
|
50
|
-
fs["lib/seam/request.rb"] = requestRbTemplate()
|
|
51
|
-
fs["lib/seam/logger.rb"] = loggerRbTemplate()
|
|
52
|
-
fs["lib/seam/clients/base_client.rb"] = base_clientRbTemplate()
|
|
53
|
-
fs["lib/seam/resources/base_resource.rb"] = base_resourceRbTemplate()
|
|
54
|
-
fs["lib/seam/resources/resource_error.rb"] = resource_errorRbTemplate()
|
|
55
|
-
fs["lib/seam/resources/resource_warning.rb"] = resource_warningRbTemplate()
|
|
56
|
-
fs["lib/seam/resources/resource_errors_support.rb"] =
|
|
24
|
+
fs["lib/seam/routes/resources/resource_error.rb"] = resource_errorRbTemplate()
|
|
25
|
+
fs["lib/seam/routes/resources/resource_warning.rb"] =
|
|
26
|
+
resource_warningRbTemplate()
|
|
27
|
+
fs["lib/seam/routes/resources/resource_errors_support.rb"] =
|
|
57
28
|
resource_errors_supportRbTemplate()
|
|
58
|
-
fs["lib/seam/resources/resource_warnings_support.rb"] =
|
|
29
|
+
fs["lib/seam/routes/resources/resource_warnings_support.rb"] =
|
|
59
30
|
resource_warnings_supportRbTemplate()
|
|
60
31
|
|
|
61
|
-
const seamapi_rb_requires = [
|
|
62
|
-
"seam/version",
|
|
63
|
-
"seam/lts_version",
|
|
64
|
-
"seam/request",
|
|
65
|
-
"seam/logger",
|
|
66
|
-
"seam/client",
|
|
67
|
-
"seam/clients/base_client",
|
|
68
|
-
"seam/resources/base_resource",
|
|
69
|
-
"seam/resources/resource_error",
|
|
70
|
-
"seam/resources/resource_warning",
|
|
71
|
-
"seam/resources/resource_errors_support",
|
|
72
|
-
"seam/resources/resource_warnings_support",
|
|
73
|
-
]
|
|
74
|
-
|
|
75
32
|
const resources = Object.entries(openapi.components.schemas).map(
|
|
76
33
|
([schema_name, schema]) =>
|
|
77
34
|
[schema_name, flattenObjSchema(schema as any)] as [string, ObjSchema]
|
|
@@ -85,12 +42,11 @@ export const generateRubySDK = async (options: SdkGeneratorOptions = {}) => {
|
|
|
85
42
|
})
|
|
86
43
|
)
|
|
87
44
|
|
|
88
|
-
fs[`lib/seam/resources/${snake_name}.rb`] = resourceRbTemplate({
|
|
45
|
+
fs[`lib/seam/routes/resources/${snake_name}.rb`] = resourceRbTemplate({
|
|
89
46
|
pascal_name: pascalCase(snake_name),
|
|
90
47
|
attrs: params.filter((p) => !p.is_date_time).map((p) => p.name),
|
|
91
48
|
date_attrs: params.filter((p) => p.is_date_time).map((p) => p.name),
|
|
92
49
|
})
|
|
93
|
-
seamapi_rb_requires.push(`seam/resources/${snake_name}`)
|
|
94
50
|
}
|
|
95
51
|
|
|
96
52
|
const clients: Record<string, RubyClient> = {}
|
|
@@ -168,22 +124,8 @@ export const generateRubySDK = async (options: SdkGeneratorOptions = {}) => {
|
|
|
168
124
|
}
|
|
169
125
|
|
|
170
126
|
for (const client of Object.values(clients)) {
|
|
171
|
-
fs[`lib/seam/clients/${client.snake_name}.rb`] = client.serialize()
|
|
172
|
-
seamapi_rb_requires.push(`seam/clients/${client.snake_name}`)
|
|
127
|
+
fs[`lib/seam/routes/clients/${client.snake_name}.rb`] = client.serialize()
|
|
173
128
|
}
|
|
174
129
|
|
|
175
|
-
fs["lib/seam/client.rb"] = clientRbTemplate(
|
|
176
|
-
Object.keys(parent_to_child_resources_map)
|
|
177
|
-
)
|
|
178
|
-
|
|
179
|
-
fs["lib/seamapi.rb"] = [
|
|
180
|
-
`# frozen_string_literal: true`,
|
|
181
|
-
"",
|
|
182
|
-
...seamapi_rb_requires.map((r) => `require_relative "${r}"`),
|
|
183
|
-
"",
|
|
184
|
-
`module Seam`,
|
|
185
|
-
`end\n`,
|
|
186
|
-
].join("\n")
|
|
187
|
-
|
|
188
130
|
return fs
|
|
189
131
|
}
|
|
@@ -1 +0,0 @@
|
|
|
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;;wBAEG,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
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,SAAS,CAAA"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
export default () => `# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Seam
|
|
4
|
-
module Clients
|
|
5
|
-
class BaseClient
|
|
6
|
-
attr_accessor :client
|
|
7
|
-
|
|
8
|
-
def initialize(client)
|
|
9
|
-
@client = client
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def request_seam_object(*attrs)
|
|
13
|
-
client.request_seam_object(*attrs)
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def request_seam(*attrs)
|
|
17
|
-
client.request_seam(*attrs)
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end\n`;
|
|
22
|
-
//# sourceMappingURL=base_client.rb.template.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base_client.rb.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/base_client.rb.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;MAoBf,CAAA"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
export default () => `# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Seam
|
|
4
|
-
class BaseResource
|
|
5
|
-
attr_accessor :data, :client
|
|
6
|
-
|
|
7
|
-
def initialize(data, client = nil)
|
|
8
|
-
@data = data
|
|
9
|
-
@client = client
|
|
10
|
-
|
|
11
|
-
@data.each do |key, value|
|
|
12
|
-
instance_variable_set("@#{key}", value)
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def update_from_response(data)
|
|
17
|
-
@data = data
|
|
18
|
-
@data.each do |key, value|
|
|
19
|
-
instance_variable_set("@#{key}", value)
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def self.load_from_response(data, client = nil)
|
|
24
|
-
if data.is_a?(Array)
|
|
25
|
-
data.map { |d| new(d, client) }
|
|
26
|
-
else
|
|
27
|
-
new(data, client)
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def inspect
|
|
32
|
-
"<#{self.class.name}:#{"0x00%x" % (object_id << 1)}\\n" + # rubocop:disable Style/StringConcatenation, Style/FormatString
|
|
33
|
-
instance_variables
|
|
34
|
-
.map { |k| k.to_s.sub("@", "") }
|
|
35
|
-
.filter { |k| k != "data" and k != "client" and respond_to? k }
|
|
36
|
-
.map { |k| " #{k}=#{send(k).inspect}" }
|
|
37
|
-
.join("\\n") + ">"
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def self.date_accessor(*attrs)
|
|
41
|
-
attrs.each do |attr|
|
|
42
|
-
define_method(attr) do
|
|
43
|
-
value = instance_variable_get("@#{attr}")
|
|
44
|
-
|
|
45
|
-
raise "No value for #{attr} set" if value.nil?
|
|
46
|
-
|
|
47
|
-
parse_datetime(value)
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
protected
|
|
53
|
-
|
|
54
|
-
def parse_datetime(value)
|
|
55
|
-
Time.parse(value)
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end\n`;
|
|
59
|
-
//# sourceMappingURL=base_resource.rb.template.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base_resource.rb.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/base_resource.rb.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAyDf,CAAA"}
|
|
@@ -1,79 +0,0 @@
|
|
|
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\n`;
|
|
9
|
-
})
|
|
10
|
-
.join("");
|
|
11
|
-
return `# frozen_string_literal: true
|
|
12
|
-
|
|
13
|
-
module Seam
|
|
14
|
-
class Client
|
|
15
|
-
attr_accessor :api_key, :base_uri, :debug, :wait_for_action_attempt
|
|
16
|
-
|
|
17
|
-
def self.lts_version
|
|
18
|
-
Seam::LTS_VERSION
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def initialize(api_key: nil, base_uri: nil, wait_for_action_attempt: false, debug: false)
|
|
22
|
-
@api_key = api_key || ENV["SEAM_API_KEY"]
|
|
23
|
-
@base_uri = base_uri || ENV["SEAM_API_URL"] || ENV["SEAM_ENDPOINT"] || "https://connect.getseam.com"
|
|
24
|
-
@debug = debug
|
|
25
|
-
@wait_for_action_attempt = wait_for_action_attempt
|
|
26
|
-
|
|
27
|
-
raise ArgumentError, "SEAM_API_KEY not found in environment, and api_key not provided" if @api_key.to_s.empty?
|
|
28
|
-
|
|
29
|
-
if ENV["SEAM_API_URL"]
|
|
30
|
-
warn 'Using the SEAM_API_URL environment variable is deprecated. ' \\
|
|
31
|
-
'Support will be removed in a later major version. Use SEAM_ENDPOINT instead.'
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def lts_version
|
|
37
|
-
Seam::LTS_VERSION
|
|
38
|
-
end
|
|
39
|
-
${resource_client_defs}
|
|
40
|
-
|
|
41
|
-
def health
|
|
42
|
-
request_seam(:get, "/health")
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
# @deprecated Please use {#devices.unmanaged} instead.
|
|
46
|
-
def unmanaged_devices
|
|
47
|
-
warn "[DEPRECATION] 'unmanaged_devices' is deprecated. Please use 'devices.unmanaged' instead."
|
|
48
|
-
|
|
49
|
-
@unmanaged_devices ||= Seam::Clients::DevicesUnmanaged.new(self)
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
# @deprecated Please use {#access_codes.unmanaged} instead.
|
|
53
|
-
def unmanaged_access_codes
|
|
54
|
-
warn "[DEPRECATION] 'unmanaged_access_codes' is deprecated. Please use 'access_codes.unmanaged' instead."
|
|
55
|
-
|
|
56
|
-
@unmanaged_access_codes ||= Seam::Clients::AccessCodesUnmanaged.new(self)
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def request_seam_object(method, path, klass, inner_object, config = {})
|
|
60
|
-
response = request_seam(method, path, config)
|
|
61
|
-
|
|
62
|
-
data = response[inner_object]
|
|
63
|
-
|
|
64
|
-
klass.load_from_response(data, self)
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
def request_seam(method, path, config = {})
|
|
68
|
-
Seam::Request.new(
|
|
69
|
-
api_key: api_key,
|
|
70
|
-
base_uri: base_uri,
|
|
71
|
-
debug: debug
|
|
72
|
-
).perform(
|
|
73
|
-
method, path, config
|
|
74
|
-
)
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end\n`;
|
|
78
|
-
};
|
|
79
|
-
//# sourceMappingURL=client.rb.template.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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;UACH,WAAW;SACZ,WAAW,uBAAuB,UAAU,CAAC,WAAW,CAAC;UACxD,CAAA;IACN,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAA;IAEX,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BP,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAsChB,CAAA;AACN,CAAC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gemfile.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/gemfile.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;UAKX,CAAA"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export default () => `# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "logger"
|
|
4
|
-
|
|
5
|
-
module Seam
|
|
6
|
-
class Logger
|
|
7
|
-
def self.info(message)
|
|
8
|
-
logger = ::Logger.new($stdout)
|
|
9
|
-
logger.info(message)
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end\n`;
|
|
13
|
-
//# sourceMappingURL=logger.rb.template.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.rb.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/logger.rb.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;;;;;;;MAWf,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lts_version.rb.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/lts_version.rb.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;MAIf,CAAA"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export default () => `# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "bundler/gem_tasks"
|
|
4
|
-
require "rspec/core/rake_task"
|
|
5
|
-
require "standard/rake"
|
|
6
|
-
|
|
7
|
-
RSpec::Core::RakeTask.new(:spec)
|
|
8
|
-
|
|
9
|
-
task default: %i[lint test]
|
|
10
|
-
|
|
11
|
-
task test: "spec"
|
|
12
|
-
task lint: "standard"
|
|
13
|
-
task format: "standard:fix"
|
|
14
|
-
|
|
15
|
-
desc "Open an interactive ruby console"
|
|
16
|
-
task :console do
|
|
17
|
-
require "irb"
|
|
18
|
-
require "bundler/setup"
|
|
19
|
-
require "seamapi"
|
|
20
|
-
ARGV.clear
|
|
21
|
-
IRB.start
|
|
22
|
-
end\n`;
|
|
23
|
-
//# sourceMappingURL=rakefile.template.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rakefile.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/rakefile.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;MAqBf,CAAA"}
|