Skip to content

Commit 2a7e6e1

Browse files
authored
Add apps resource (#330)
* Add apps resource * Update .rubocop_todo.yml * Update README.md
1 parent 85a4f47 commit 2a7e6e1

15 files changed

Lines changed: 2497 additions & 6 deletions

File tree

.rubocop_todo.yml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# This configuration was generated by
22
# `rubocop --auto-gen-config`
3-
# on 2024-10-07 22:05:47 UTC using RuboCop version 1.66.1.
3+
# on 2024-10-09 19:14:26 UTC using RuboCop version 1.66.1.
44
# The point is for the user to remove these configuration records
55
# one by one as the offenses are removed from the code base.
66
# Note that changes in the inspected code, or installation of new
@@ -70,7 +70,7 @@ Metrics/MethodLength:
7070
# Offense count: 1
7171
# Configuration parameters: CountComments, CountAsOne.
7272
Metrics/ModuleLength:
73-
Max: 188
73+
Max: 295
7474

7575
# Offense count: 1
7676
# This cop supports unsafe autocorrection (--autocorrect-all).
@@ -110,7 +110,7 @@ RSpec/ContextWording:
110110
- 'spec/lib/droplet_kit/resources/vpc_resource_spec.rb'
111111
- 'spec/support/resource_context.rb'
112112

113-
# Offense count: 130
113+
# Offense count: 131
114114
# Configuration parameters: CountAsOne.
115115
RSpec/ExampleLength:
116116
Max: 43
@@ -125,7 +125,7 @@ RSpec/LeakyConstantDeclaration:
125125
Exclude:
126126
- 'spec/lib/droplet_kit/client_spec.rb'
127127

128-
# Offense count: 129
128+
# Offense count: 131
129129
RSpec/MultipleExpectations:
130130
Max: 30
131131

@@ -145,7 +145,7 @@ RSpec/NestedGroups:
145145
RSpec/SpecFilePathFormat:
146146
Enabled: false
147147

148-
# Offense count: 186
148+
# Offense count: 293
149149
# Configuration parameters: AllowedConstants.
150150
Style/Documentation:
151151
Enabled: false
@@ -168,6 +168,7 @@ Style/MissingRespondToMissing:
168168
# AllowedMethods: define_method
169169
Style/SymbolProc:
170170
Exclude:
171+
- 'lib/droplet_kit/resources/app_resource.rb'
171172
- 'lib/droplet_kit/resources/container_registry_resource.rb'
172173
- 'lib/droplet_kit/resources/droplet_action_resource.rb'
173174
- 'lib/droplet_kit/resources/kubernetes_cluster_resource.rb'

README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -685,6 +685,19 @@ Actions supported:
685685
* `client.one_clicks.all(type: 'kubernetes|droplet')`
686686
* `client.one_clicks.create_kubernetes(one_click_kubernetes)`
687687

688+
## App resource
689+
690+
client = DropletKit::Client.new(access_token: 'TOKEN')
691+
client.apps #=> DropletKit::AppResource
692+
693+
Actions supported:
694+
695+
* `client.apps.all(with_projects: bool)`
696+
* `client.apps.find(id: 'id')`
697+
* `client.apps.create(app)`
698+
* `client.apps.update(app, id: 'id')`
699+
* `client.apps.delete(id: 'id')`
700+
688701
## Contributing
689702

690703
1. Fork it ( https://github.com/digitalocean/droplet_kit/fork )

lib/droplet_kit.rb

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,59 @@ module DropletKit
8181
autoload :VPCPeering, 'droplet_kit/models/vpc_peering'
8282
autoload :OneClick, 'droplet_kit/models/one_click'
8383
autoload :OneClickKubernetes, 'droplet_kit/models/one_click_kubernetes'
84+
autoload :AppDomainSpec, 'droplet_kit/models/app_spec'
85+
autoload :AppGitSourceSpec, 'droplet_kit/models/app_spec'
86+
autoload :AppGitHubSourceSpec, 'droplet_kit/models/app_spec'
87+
autoload :AppGitLabSourceSpec, 'droplet_kit/models/app_spec'
88+
autoload :AppImageDeployOnPush, 'droplet_kit/models/app_spec'
89+
autoload :AppImageSourceSpec, 'droplet_kit/models/app_spec'
90+
autoload :AppVariableDefinition, 'droplet_kit/models/app_spec'
91+
autoload :AppLogDestinationSpecPapertrail, 'droplet_kit/models/app_spec'
92+
autoload :AppLogDestinationSpecDatadog, 'droplet_kit/models/app_spec'
93+
autoload :AppLogDestinationSpecLogtail, 'droplet_kit/models/app_spec'
94+
autoload :OpenSearchBasicAuth, 'droplet_kit/models/app_spec'
95+
autoload :AppLogDestinationSpecOpenSearch, 'droplet_kit/models/app_spec'
96+
autoload :AppLogDestinationSpec, 'droplet_kit/models/app_spec'
97+
autoload :AppAutoscalingSpecMetricCPU, 'droplet_kit/models/app_spec'
98+
autoload :AppAutoscalingSpecMetrics, 'droplet_kit/models/app_spec'
99+
autoload :AppAutoscalingSpec, 'droplet_kit/models/app_spec'
100+
autoload :AppServiceSpecHealthCheck, 'droplet_kit/models/app_spec'
101+
autoload :AppServiceSpecTermination, 'droplet_kit/models/app_spec'
102+
autoload :AppServiceSpec, 'droplet_kit/models/app_spec'
103+
autoload :AppStaticSiteSpec, 'droplet_kit/models/app_spec'
104+
autoload :AppJobSpecTermination, 'droplet_kit/models/app_spec'
105+
autoload :AppJobSpec, 'droplet_kit/models/app_spec'
106+
autoload :AppWorkerSpecTermination, 'droplet_kit/models/app_spec'
107+
autoload :AppWorkerSpec, 'droplet_kit/models/app_spec'
108+
autoload :AppAlertSpec, 'droplet_kit/models/app_spec'
109+
autoload :AppFunctionSpec, 'droplet_kit/models/app_spec'
110+
autoload :AppDatabaseSpec, 'droplet_kit/models/app_spec'
111+
autoload :AppIngressSpecRuleStringMatch, 'droplet_kit/models/app_spec'
112+
autoload :AppIngressSpecRuleMatch, 'droplet_kit/models/app_spec'
113+
autoload :AppStringMatch, 'droplet_kit/models/app_spec'
114+
autoload :AppCorsPolicy, 'droplet_kit/models/app_spec'
115+
autoload :AppIngressSpecRuleRoutingComponent, 'droplet_kit/models/app_spec'
116+
autoload :AppIngressSpecRuleRoutingRedirect, 'droplet_kit/models/app_spec'
117+
autoload :AppIngressSpecRule, 'droplet_kit/models/app_spec'
118+
autoload :AppIngressSpec, 'droplet_kit/models/app_spec'
119+
autoload :AppEgressSpec, 'droplet_kit/models/app_spec'
120+
autoload :AppSpec, 'droplet_kit/models/app_spec'
121+
autoload :DeploymentJob, 'droplet_kit/models/deployment'
122+
autoload :DeploymentFunction, 'droplet_kit/models/deployment'
123+
autoload :DeploymentProgressStepReason, 'droplet_kit/models/deployment'
124+
autoload :DeploymentProgressStep, 'droplet_kit/models/deployment'
125+
autoload :DeploymentProgress, 'droplet_kit/models/deployment'
126+
autoload :DeploymentService, 'droplet_kit/models/deployment'
127+
autoload :DeploymentStaticSite, 'droplet_kit/models/deployment'
128+
autoload :DeploymentWorker, 'droplet_kit/models/deployment'
129+
autoload :Deployment, 'droplet_kit/models/deployment'
130+
autoload :AppDomainProgress, 'droplet_kit/models/app'
131+
autoload :AppDomainSpec, 'droplet_kit/models/app'
132+
autoload :AppDomainValidation, 'droplet_kit/models/app'
133+
autoload :AppDomain, 'droplet_kit/models/app'
134+
autoload :AppRegion, 'droplet_kit/models/app'
135+
autoload :AppDedicatedIp, 'droplet_kit/models/app'
136+
autoload :App, 'droplet_kit/models/app'
84137

85138
# Resources
86139
autoload :DropletResource, 'droplet_kit/resources/droplet_resource'
@@ -118,6 +171,7 @@ module DropletKit
118171
autoload :VPCResource, 'droplet_kit/resources/vpc_resource'
119172
autoload :VPCPeeringResource, 'droplet_kit/resources/vpc_peering_resource'
120173
autoload :OneClickResource, 'droplet_kit/resources/one_click_resource'
174+
autoload :AppResource, 'droplet_kit/resources/app_resource'
121175

122176
# JSON Maps
123177
autoload :DropletMapping, 'droplet_kit/mappings/droplet_mapping'
@@ -192,6 +246,59 @@ module DropletKit
192246
autoload :VPCPeeringMapping, 'droplet_kit/mappings/vpc_peering_mapping'
193247
autoload :OneClickMapping, 'droplet_kit/mappings/one_click_mapping'
194248
autoload :OneClickKubernetesMapping, 'droplet_kit/mappings/one_click_kubernetes_mapping'
249+
autoload :AppDomainSpecMapping, 'droplet_kit/mappings/app_spec_mapping'
250+
autoload :AppGitSourceSpecMapping, 'droplet_kit/mappings/app_spec_mapping'
251+
autoload :AppGitHubSourceSpecMapping, 'droplet_kit/mappings/app_spec_mapping'
252+
autoload :AppGitLabSourceSpecMapping, 'droplet_kit/mappings/app_spec_mapping'
253+
autoload :AppImageDeployOnPushMapping, 'droplet_kit/mappings/app_spec_mapping'
254+
autoload :AppImageSourceSpecMapping, 'droplet_kit/mappings/app_spec_mapping'
255+
autoload :AppVariableDefinitionMapping, 'droplet_kit/mappings/app_spec_mapping'
256+
autoload :AppLogDestinationSpecPapertrailMapping, 'droplet_kit/mappings/app_spec_mapping'
257+
autoload :AppLogDestinationSpecDatadogMapping, 'droplet_kit/mappings/app_spec_mapping'
258+
autoload :AppLogDestinationSpecLogtailMapping, 'droplet_kit/mappings/app_spec_mapping'
259+
autoload :OpenSearchBasicAuthMapping, 'droplet_kit/mappings/app_spec_mapping'
260+
autoload :AppLogDestinationSpecOpenSearchMapping, 'droplet_kit/mappings/app_spec_mapping'
261+
autoload :AppLogDestinationSpecMapping, 'droplet_kit/mappings/app_spec_mapping'
262+
autoload :AppAutoscalingSpecMetricCPUMapping, 'droplet_kit/mappings/app_spec_mapping'
263+
autoload :AppAutoscalingSpecMetricsMapping, 'droplet_kit/mappings/app_spec_mapping'
264+
autoload :AppAutoscalingSpecMapping, 'droplet_kit/mappings/app_spec_mapping'
265+
autoload :AppServiceSpecHealthCheckMapping, 'droplet_kit/mappings/app_spec_mapping'
266+
autoload :AppServiceSpecTerminationMapping, 'droplet_kit/mappings/app_spec_mapping'
267+
autoload :AppServiceSpecMapping, 'droplet_kit/mappings/app_spec_mapping'
268+
autoload :AppStaticSiteSpecMapping, 'droplet_kit/mappings/app_spec_mapping'
269+
autoload :AppJobSpecTerminationMapping, 'droplet_kit/mappings/app_spec_mapping'
270+
autoload :AppJobSpecMapping, 'droplet_kit/mappings/app_spec_mapping'
271+
autoload :AppWorkerSpecTerminationMapping, 'droplet_kit/mappings/app_spec_mapping'
272+
autoload :AppWorkerSpecMapping, 'droplet_kit/mappings/app_spec_mapping'
273+
autoload :AppAlertSpecMapping, 'droplet_kit/mappings/app_spec_mapping'
274+
autoload :AppFunctionSpecMapping, 'droplet_kit/mappings/app_spec_mapping'
275+
autoload :AppDatabaseSpecMapping, 'droplet_kit/mappings/app_spec_mapping'
276+
autoload :AppIngressSpecRuleStringMatchMapping, 'droplet_kit/mappings/app_spec_mapping'
277+
autoload :AppIngressSpecRuleMatchMapping, 'droplet_kit/mappings/app_spec_mapping'
278+
autoload :AppStringMatchMapping, 'droplet_kit/mappings/app_spec_mapping'
279+
autoload :AppCorsPolicyMapping, 'droplet_kit/mappings/app_spec_mapping'
280+
autoload :AppIngressSpecRuleRoutingComponentMapping, 'droplet_kit/mappings/app_spec_mapping'
281+
autoload :AppIngressSpecRuleRoutingRedirectMapping, 'droplet_kit/mappings/app_spec_mapping'
282+
autoload :AppIngressSpecRuleMapping, 'droplet_kit/mappings/app_spec_mapping'
283+
autoload :AppIngressSpecMapping, 'droplet_kit/mappings/app_spec_mapping'
284+
autoload :AppEgressSpecMapping, 'droplet_kit/mappings/app_spec_mapping'
285+
autoload :AppSpecMapping, 'droplet_kit/mappings/app_spec_mapping'
286+
autoload :DeploymentJobMapping, 'droplet_kit/mappings/deployment_mapping'
287+
autoload :DeploymentFunctionMapping, 'droplet_kit/mappings/deployment_mapping'
288+
autoload :DeploymentProgressStepReasonMapping, 'droplet_kit/mappings/deployment_mapping'
289+
autoload :DeploymentProgressStepMapping, 'droplet_kit/mappings/deployment_mapping'
290+
autoload :DeploymentProgressMapping, 'droplet_kit/mappings/deployment_mapping'
291+
autoload :DeploymentServiceMapping, 'droplet_kit/mappings/deployment_mapping'
292+
autoload :DeploymentStaticSiteMapping, 'droplet_kit/mappings/deployment_mapping'
293+
autoload :DeploymentWorkerMapping, 'droplet_kit/mappings/deployment_mapping'
294+
autoload :DeploymentMapping, 'droplet_kit/mappings/deployment_mapping'
295+
autoload :AppDomainProgressMapping, 'droplet_kit/mappings/app_mapping'
296+
autoload :AppDomainSpecMapping, 'droplet_kit/mappings/app_mapping'
297+
autoload :AppDomainValidationMapping, 'droplet_kit/mappings/app_mapping'
298+
autoload :AppDomainMapping, 'droplet_kit/mappings/app_mapping'
299+
autoload :AppRegionMapping, 'droplet_kit/mappings/app_mapping'
300+
autoload :AppDedicatedIpMapping, 'droplet_kit/mappings/app_mapping'
301+
autoload :AppMapping, 'droplet_kit/mappings/app_mapping'
195302

196303
# Utils
197304
autoload :PaginatedResource, 'droplet_kit/paginated_resource'

lib/droplet_kit/client.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,8 @@ def self.resources
8282
volume_actions: VolumeActionResource,
8383
vpcs: VPCResource,
8484
vpc_peerings: VPCPeeringResource,
85-
one_clicks: OneClickResource
85+
one_clicks: OneClickResource,
86+
apps: AppResource
8687
}
8788
end
8889

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
# frozen_string_literal: true
2+
3+
module DropletKit
4+
class AppDomainProgressMapping
5+
include Kartograph::DSL
6+
7+
kartograph do
8+
mapping AppDomainProgress
9+
scoped :read do
10+
property :steps
11+
end
12+
end
13+
end
14+
15+
class AppDomainSpecMapping
16+
include Kartograph::DSL
17+
18+
kartograph do
19+
mapping AppDomainSpec
20+
scoped :read do
21+
property :domain
22+
property :type
23+
property :wildcard
24+
property :zone
25+
property :minimum_tls_version
26+
end
27+
end
28+
end
29+
30+
class AppDomainValidationMapping
31+
include Kartograph::DSL
32+
33+
kartograph do
34+
mapping AppDomainValidation
35+
scoped :read do
36+
property :txt_name
37+
property :txt_value
38+
end
39+
end
40+
end
41+
42+
class AppDomainMapping
43+
include Kartograph::DSL
44+
45+
kartograph do
46+
mapping AppDomain
47+
scoped :read do
48+
property :id
49+
property :phase
50+
property :progress, include: AppDomainProgressMapping
51+
property :spec, include: AppDomainSpecMapping
52+
property :validation, plural: true, include: AppDomainValidationMapping
53+
property :rotate_validation_records
54+
property :certificate_expires_at
55+
end
56+
end
57+
end
58+
59+
class AppRegionMapping
60+
include Kartograph::DSL
61+
62+
kartograph do
63+
mapping AppRegion
64+
scoped :read do
65+
property :continent
66+
property :data_centers
67+
property :default
68+
property :disabled
69+
property :flag
70+
property :label
71+
property :reason
72+
property :slug
73+
end
74+
end
75+
end
76+
77+
class AppDedicatedIpMapping
78+
include Kartograph::DSL
79+
80+
kartograph do
81+
mapping AppDedicatedIp
82+
scoped :read do
83+
property :ip
84+
property :id
85+
property :status
86+
end
87+
end
88+
end
89+
90+
class AppMapping
91+
include Kartograph::DSL
92+
93+
kartograph do
94+
mapping App
95+
root_key plural: 'apps', singular: 'app', scopes: [:read]
96+
97+
property :spec, include: AppSpecMapping, scopes: %i[create update read]
98+
property :project_id, scopes: %i[create read]
99+
property :update_all_source_versions, scopes: [:update]
100+
scoped :read do
101+
property :active_deployment, include: DeploymentMapping
102+
property :created_at
103+
property :default_ingress
104+
property :domains, plural: true, include: AppDomainMapping
105+
property :id
106+
property :in_progress_deployment, include: DeploymentMapping
107+
property :last_deployment_created_at
108+
property :live_domain
109+
property :live_url
110+
property :live_url_base
111+
property :owner_uuid
112+
property :pending_deployment, include: DeploymentMapping
113+
property :region, include: AppRegionMapping
114+
property :tier_slug
115+
property :updated_at
116+
property :pinned_deployment, include: DeploymentMapping
117+
property :dedicated_ips, plural: true, include: AppDedicatedIpMapping
118+
end
119+
end
120+
end
121+
end

0 commit comments

Comments
 (0)