File: actions_secrets.rb

package info (click to toggle)
ruby-octokit 10.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 24,092 kB
  • sloc: ruby: 13,339; sh: 99; makefile: 7; javascript: 3
file content (161 lines) | stat: -rw-r--r-- 7,028 bytes parent folder | download | duplicates (2)
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
# frozen_string_literal: true

module Octokit
  class Client
    # Methods for the Actions Secrets API
    #
    # @see https://developer.github.com/v3/actions/secrets/
    module ActionsSecrets
      # Get public key for secrets encryption
      #
      # @param repo [Integer, String, Hash, Repository] A GitHub repository
      # @return [Hash] key_id and key
      # @see https://developer.github.com/v3/actions/secrets/#get-your-public-key
      def get_actions_public_key(repo)
        get "#{Repository.path repo}/actions/secrets/public-key"
      end

      # Get public key for secrets encryption
      #
      # @param org [String] A GitHub organization
      # @return [Hash] key_id and key
      # @see https://developer.github.com/v3/actions/secrets/#get-your-public-key
      def get_org_actions_public_key(org)
        get "#{Organization.path org}/actions/secrets/public-key"
      end

      # List secrets
      #
      # @param repo [Integer, String, Hash, Repository] A GitHub repository
      # @return [Hash] total_count and list of secrets (each item is hash with name, created_at and updated_at)
      # @see https://developer.github.com/v3/actions/secrets/#list-secrets-for-a-repository
      def list_actions_secrets(repo)
        paginate "#{Repository.path repo}/actions/secrets" do |data, last_response|
          data.secrets.concat last_response.data.secrets
        end
      end

      # List org secrets
      #
      # @param org [String] A GitHub organization
      # @return [Hash] total_count and list of secrets (each item is hash with name, created_at and updated_at)
      # @see https://developer.github.com/v3/actions/secrets/#list-organization-secrets
      def list_org_actions_secrets(org)
        paginate "#{Organization.path org}/actions/secrets" do |data, last_response|
          data.secrets.concat last_response.data.secrets
        end
      end

      # Get a secret
      #
      # @param repo [Integer, String, Hash, Repository] A GitHub repository
      # @param name [String] Name of secret
      # @return [Hash] name, created_at and updated_at
      # @see https://developer.github.com/v3/actions/secrets/#get-a-secret
      def get_actions_secret(repo, name)
        get "#{Repository.path repo}/actions/secrets/#{name}"
      end

      # Get an org secret
      #
      # @param org [String] A GitHub organization
      # @param name [String] Name of secret
      # @return [Hash] name, created_at and updated_at
      # @see https://developer.github.com/v3/actions/secrets/#get-a-secret
      def get_org_actions_secret(org, name)
        get "#{Organization.path org}/actions/secrets/#{name}"
      end

      # Create or update secrets
      #
      # @param repo [Integer, String, Hash, Repository] A GitHub repository
      # @param name [String] Name of secret
      # @param options [Hash] encrypted_value and key_id
      # @see https://developer.github.com/v3/actions/secrets/#create-or-update-a-secret-for-a-repository
      def create_or_update_actions_secret(repo, name, options)
        put "#{Repository.path repo}/actions/secrets/#{name}", options
      end

      # Create or update org secrets
      #
      # @param org [String] A GitHub organization
      # @param name [String] Name of secret
      # @param options [Hash] encrypted_value and key_id
      # @see https://developer.github.com/v3/actions/secrets/#create-or-update-a-secret
      def create_or_update_org_actions_secret(org, name, options)
        put "#{Organization.path org}/actions/secrets/#{name}", options
      end

      # Delete a secret
      #
      # @param repo [Integer, String, Hash, Repository] A GitHub repository
      # @param name [String] Name of secret
      # @see https://developer.github.com/v3/actions/secrets/#delete-a-secret-from-a-repository
      def delete_actions_secret(repo, name)
        boolean_from_response :delete, "#{Repository.path repo}/actions/secrets/#{name}"
      end

      # Delete an org secret
      #
      # @param org [String] A GitHub organization
      # @param name [String] Name of secret
      # @see https://developer.github.com/v3/actions/secrets/#delete-a-secret
      def delete_org_actions_secret(org, name)
        boolean_from_response :delete, "#{Organization.path org}/actions/secrets/#{name}"
      end

      # Get environment public key for secrets encryption
      #
      # @param repo [Integer, String, Hash, Repository] A GitHub repository
      # @param environment [String] Name of environment
      # @return [Hash] key_id and key
      # @see https://docs.github.com/en/rest/actions/secrets#get-an-environment-public-key
      def get_actions_environment_public_key(repo, environment)
        get "#{Repository.path repo}/environments/#{environment}/secrets/public-key"
      end

      # List environment secrets
      #
      # @param repo [Integer, String, Hash, Repository] A GitHub repository
      # @param environment [String] Name of environment
      # @return [Hash] total_count and list of secrets (each item is hash with name, created_at and updated_at)
      # @see https://developer.github.com/v3/actions/secrets/#list-environment-secrets
      def list_actions_environment_secrets(repo, environment)
        paginate "#{Repository.path repo}/environments/#{environment}/secrets" do |data, last_response|
          data.secrets.concat last_response.data.secrets
        end
      end

      # Get an environment secret
      #
      # @param repo [Integer, String, Hash, Repository] A GitHub repository
      # @param environment [String] Name of environment
      # @param name [String] Name of secret
      # @return [Hash] name, created_at and updated_at
      # @see https://docs.github.com/en/rest/actions/secrets#get-an-environment-secret
      def get_actions_environment_secret(repo, environment, name)
        get "#{Repository.path repo}/environments/#{environment}/secrets/#{name}"
      end

      # Create or update an environment secret
      #
      # @param repo [Integer, String, Hash, Repository] A GitHub repository
      # @param environment [String] Name of environment
      # @param name [String] Name of secret
      # @param options [Hash] encrypted_value and key_id
      # @see https://docs.github.com/en/rest/actions/secrets#create-or-update-an-environment-secret
      def create_or_update_actions_environment_secret(repo, environment, name, options)
        put "#{Repository.path repo}/environments/#{environment}/secrets/#{name}", options
      end

      # Delete environment secret
      # @param repo [Integer, String, Hash, Repository] A GitHub repository
      # @param environment [String] Name of environment
      # @param name [String] Name of secret
      # @see https://docs.github.com/en/rest/actions/secrets#delete-an-environment-secret
      def delete_actions_environment_secret(repo, environment, name)
        boolean_from_response :delete, "#{Repository.path repo}/environments/#{environment}/secrets/#{name}"
      end
    end
  end
end