ruby_api_pack_cloudways 0.1.0 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 032f4359de51e5272ede2f343e9da2b2381ff7690ede8e34c6b5c3be75161e16
4
- data.tar.gz: bfe23a4dfd1f23abeb3dc12a71fc1190ab2db8354dfd4f3fd23ed6173ce7faa8
3
+ metadata.gz: 64e6f4ca33ac70dcd6309f9b74d7f72c3f1b70598756eb35ef54642cc98f5836
4
+ data.tar.gz: 1e83554286f6bc0d6c0803c18e33dd2e7e47706788ccadfa65949cdc81062e94
5
5
  SHA512:
6
- metadata.gz: adcd283753e724c24dccc49bc16d5cf8fa0fa222b3c0647c08fb940686355cb7f887e3c042cf78132a05ea6324970ae72e1a2593d770206719370f8bcad8997c
7
- data.tar.gz: '09a39d106708fd11d900c6143a210478a1ff330e39ea7b599a284c30ae21d515f00993a99204cdb72d772e68f3317aa7d7706c990f1de870ec73a132974c0c7e'
6
+ metadata.gz: 51f40268262aaed80030f2e9343c4b5f31c8784e8fc5da4cee18b086acc18649d52b5f4e0e3f20d5fcf3c66f07fe9966b38d953e62c7c2b787e521dbff1bb876
7
+ data.tar.gz: e6fd7306e44faa0f0ea3c94799c66c2e40d645675a387bf92ffc88c173fd764eee16f36e95ffc90071cde0ef78764403c5f35d6b60194f54acb591be3775d7cd
data/README.md CHANGED
@@ -58,6 +58,10 @@ Or install it yourself as:
58
58
  ```bash
59
59
  $ gem install ruby_api_pack_cloudways
60
60
  ```
61
+ # Documentation Wiki
62
+
63
+ - [Home](https://github.com/phcdevworks/ruby_api_pack_cloudways/wiki)
64
+ - [Server Endpoints](https://github.com/phcdevworks/ruby_api_pack_cloudways/wiki/Cloudways-API-Ruby-Server-Endpoint-Client)
61
65
 
62
66
  ## Contributing
63
67
 
@@ -3,13 +3,116 @@
3
3
  module RubyApiPackCloudways
4
4
  module Api
5
5
  class CwServer
6
+ # Server endpoints
7
+ ENDPOINTS = {
8
+ list: '/server',
9
+ details: '/server/details',
10
+ attach_block_storage: '/server/attach_block_storage',
11
+ clone: '/server/clone',
12
+ create: '/server/create',
13
+ delete: '/server/delete',
14
+ disk_usage: '/server/disk_usage',
15
+ restart: '/server/restart',
16
+ scale_block_storage: '/server/scale_block_storage',
17
+ scale_volume_size: '/server/scale_volume_size',
18
+ start: '/server/start',
19
+ stop: '/server/stop',
20
+ update_label: '/server/update_label',
21
+ upgrade: '/server/upgrade'
22
+ }.freeze
23
+
24
+ # List all servers
6
25
  def self.server_list
7
- fetch_list('/server')['servers']
26
+ fetch_list(ENDPOINTS[:list])['servers']
27
+ end
28
+
29
+ # Get server details
30
+ def self.server_details(server_id)
31
+ fetch_with_id(ENDPOINTS[:details], server_id)
32
+ end
33
+
34
+ # Attach block storage to a server
35
+ def self.attach_block_storage(server_id, params)
36
+ post_with_id(ENDPOINTS[:attach_block_storage], server_id, params)
37
+ end
38
+
39
+ # Clone a server
40
+ def self.clone_server(server_id, params)
41
+ post_with_id(ENDPOINTS[:clone], server_id, params)
42
+ end
43
+
44
+ # Create a new server
45
+ def self.create_server(params)
46
+ post_without_id(ENDPOINTS[:create], params)
47
+ end
48
+
49
+ # Delete a server
50
+ def self.delete_server(server_id)
51
+ fetch_with_id(ENDPOINTS[:delete], server_id)
52
+ end
53
+
54
+ # Get disk usage information
55
+ def self.disk_usage(server_id)
56
+ fetch_with_id(ENDPOINTS[:disk_usage], server_id)
57
+ end
58
+
59
+ # Restart a server
60
+ def self.restart_server(server_id)
61
+ fetch_with_id(ENDPOINTS[:restart], server_id)
62
+ end
63
+
64
+ # Scale block storage of a server
65
+ def self.scale_block_storage(server_id, params)
66
+ post_with_id(ENDPOINTS[:scale_block_storage], server_id, params)
8
67
  end
9
68
 
10
- def self.fetch_list(endpoint)
69
+ # Scale volume size of a server
70
+ def self.scale_volume_size(server_id, params)
71
+ post_with_id(ENDPOINTS[:scale_volume_size], server_id, params)
72
+ end
73
+
74
+ # Start a server
75
+ def self.start_server(server_id)
76
+ fetch_with_id(ENDPOINTS[:start], server_id)
77
+ end
78
+
79
+ # Stop a server
80
+ def self.stop_server(server_id)
81
+ fetch_with_id(ENDPOINTS[:stop], server_id)
82
+ end
83
+
84
+ # Update server label
85
+ def self.update_server_label(server_id, params)
86
+ post_with_id(ENDPOINTS[:update_label], server_id, params)
87
+ end
88
+
89
+ # Upgrade a server
90
+ def self.upgrade_server(server_id, params)
91
+ post_with_id(ENDPOINTS[:upgrade], server_id, params)
92
+ end
93
+
94
+ # Private methods to fetch data
95
+ private_class_method def self.fetch_list(endpoint)
11
96
  Connection::CwConnect.new(RubyApiPackCloudways.configuration.api_url, endpoint).cloudways_api_connection
12
97
  end
98
+
99
+ # Private methods to fetch data with server id
100
+ private_class_method def self.fetch_with_id(endpoint, server_id)
101
+ Connection::CwConnect.new(RubyApiPackCloudways.configuration.api_url, "#{endpoint}/#{server_id}")
102
+ .cloudways_api_connection
103
+ end
104
+
105
+ # Private methods to post data with server id
106
+ private_class_method def self.post_with_id(endpoint, server_id, params)
107
+ connection = Connection::CwConnect.new(RubyApiPackCloudways.configuration.api_url, "#{endpoint}/#{server_id}")
108
+ connection.cloudways_api_post_connection(params)
109
+ end
110
+
111
+ # Private methods to post data without server id
112
+ private_class_method def self.post_without_id(endpoint, params)
113
+ connection = Connection::CwConnect.new(RubyApiPackCloudways.configuration.api_url, endpoint)
114
+ connection.cloudways_api_post_connection(params)
115
+ end
13
116
  end
14
117
  end
15
118
  end
@@ -3,13 +3,16 @@
3
3
  module RubyApiPackCloudways
4
4
  module Connection
5
5
  class CwConnect
6
+ # Initialize Cloudways API URL and path
6
7
  attr_reader :cw_api_url_base, :cw_api_path
7
8
 
9
+ # Initialize Cloudways API URL and path
8
10
  def initialize(cw_api_url_base, cw_api_path)
9
11
  @cw_api_url_base = cw_api_url_base
10
12
  @cw_api_path = cw_api_path
11
13
  end
12
14
 
15
+ # GET request to Cloudways API
13
16
  def cloudways_api_connection
14
17
  token = CwToken.new.cw_api_token
15
18
  response = HTTParty.get(
@@ -19,8 +22,20 @@ module RubyApiPackCloudways
19
22
  handle_response(response)
20
23
  end
21
24
 
25
+ # POST request to Cloudways API
26
+ def cloudways_api_post_connection(params)
27
+ token = CwToken.new.cw_api_token
28
+ response = HTTParty.post(
29
+ "#{@cw_api_url_base}#{@cw_api_path}",
30
+ headers: { 'Authorization' => "Bearer #{token}", 'Content-Type' => 'application/json' },
31
+ body: params.to_json
32
+ )
33
+ handle_response(response)
34
+ end
35
+
22
36
  private
23
37
 
38
+ # Handle response from Cloudways API
24
39
  def handle_response(response)
25
40
  case response.code
26
41
  when 200
@@ -30,6 +45,7 @@ module RubyApiPackCloudways
30
45
  end
31
46
  end
32
47
 
48
+ # Parse response from Cloudways API
33
49
  def parse_response(response)
34
50
  Oj.load(response.body)
35
51
  rescue Oj::ParseError => e
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RubyApiPackCloudways
4
- VERSION = '0.1.0'
4
+ VERSION = '0.2.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_api_pack_cloudways
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - PHCDevworks
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2024-10-27 00:00:00.000000000 Z
12
+ date: 2024-10-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
@@ -39,7 +39,9 @@ dependencies:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: '3.16'
42
- description: Ruby API wrapper to use with Cloudways API.
42
+ description: |-
43
+ RubyApiPackCloudways is a Ruby gem for interacting with the Cloudways API. It provides easy access to
44
+ providers, server sizes, apps, and packages, with built-in OAuth authentication for secure API requests.
43
45
  email:
44
46
  - info@phcdevworks.com
45
47
  - brad.potts@phcdevworks.com
@@ -57,12 +59,12 @@ files:
57
59
  - lib/ruby_api_pack_cloudways/connection/cw_connect.rb
58
60
  - lib/ruby_api_pack_cloudways/connection/cw_token.rb
59
61
  - lib/ruby_api_pack_cloudways/version.rb
60
- homepage: https://phcdevworks.com/
62
+ homepage: https://github.com/phcdevworks/ruby_api_pack_cloudways/wiki
61
63
  licenses:
62
64
  - MIT
63
65
  metadata:
64
66
  allowed_push_host: https://rubygems.org/
65
- homepage_uri: https://phcdevworks.com/
67
+ homepage_uri: https://github.com/phcdevworks/ruby_api_pack_cloudways/wiki
66
68
  source_code_uri: https://github.com/phcdevworks/ruby_api_pack_cloudways/
67
69
  changelog_uri: https://github.com/phcdevworks/ruby_api_pack_cloudways/releases
68
70
  post_install_message: