internal GetAuthorizationTokenResponse GetAuthorizationToken(GetAuthorizationTokenRequest request)
        {
            var marshaller   = new GetAuthorizationTokenRequestMarshaller();
            var unmarshaller = GetAuthorizationTokenResponseUnmarshaller.Instance;

            return(Invoke <GetAuthorizationTokenRequest, GetAuthorizationTokenResponse>(request, marshaller, unmarshaller));
        }
        /// <summary>
        /// Initiates the asynchronous execution of the GetAuthorizationToken operation.
        /// </summary>
        ///
        /// <param name="request">Container for the necessary parameters to execute the GetAuthorizationToken operation.</param>
        /// <param name="cancellationToken">
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// </param>
        /// <returns>The task object representing the asynchronous operation.</returns>
        /// <seealso href="http://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/GetAuthorizationToken">REST API Reference for GetAuthorizationToken Operation</seealso>
        public Task <GetAuthorizationTokenResponse> GetAuthorizationTokenAsync(GetAuthorizationTokenRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var marshaller   = new GetAuthorizationTokenRequestMarshaller();
            var unmarshaller = GetAuthorizationTokenResponseUnmarshaller.Instance;

            return(InvokeAsync <GetAuthorizationTokenRequest, GetAuthorizationTokenResponse>(request, marshaller,
                                                                                             unmarshaller, cancellationToken));
        }
        public object Execute(ExecutorContext context)
        {
            var cmdletContext = context as CmdletContext;

            var          client = Client ?? CreateClient(_CurrentCredentials, _RegionEndpoint);
            CmdletOutput output;

            try
            {
                var request = new GetAuthorizationTokenRequest();
                if (cmdletContext.RegistryId != null && cmdletContext.RegistryId.Length > 0)
                {
                    request.RegistryIds = new List <string>(cmdletContext.RegistryId);
                }

                var response = CallAWSServiceOperation(client, request);

                var loginInfoObjects = new List <PSObject>();

                foreach (var authData in response.AuthorizationData)
                {
                    var authTokenBytes = Convert.FromBase64String(response.AuthorizationData[0].AuthorizationToken);
                    var authToken      = Encoding.UTF8.GetString(authTokenBytes);
                    var decodedTokens  = authToken.Split(':');
                    var loginCommand   = string.Format("docker login --username {0} --password {1} {2}",
                                                       decodedTokens[0],
                                                       decodedTokens[1],
                                                       response.AuthorizationData[0].ProxyEndpoint);

                    var loginInfo = new PSObject();
                    loginInfo.Properties.Add(new PSNoteProperty("Username", decodedTokens[0]));
                    loginInfo.Properties.Add(new PSNoteProperty("Password", decodedTokens[1]));
                    loginInfo.Properties.Add(new PSNoteProperty("ProxyEndpoint", authData.ProxyEndpoint));
                    loginInfo.Properties.Add(new PSAliasProperty("Endpoint", "ProxyEndpoint"));
                    loginInfo.Properties.Add(new PSNoteProperty("ExpiresAt", authData.ExpiresAt));
                    loginInfo.Properties.Add(new PSNoteProperty("Command", loginCommand));

                    loginInfoObjects.Add(loginInfo);
                }

                output = new CmdletOutput
                {
                    PipelineOutput = loginInfoObjects
                };
            }
            catch (Exception e)
            {
                output = new CmdletOutput {
                    ErrorResponse = e
                };
            }

            return(output);
        }
Exemple #4
0
 /// <summary>
 ///  &lt;p&gt;申请12小时有效期的令牌。 使用&lt;code&gt;docker&lt;/code&gt; CLI push和pull镜像。&lt;/p&gt;
 /// &lt;p&gt;&lt;code&gt;authorizationToken&lt;/code&gt;为每个registry返回一个base64编码的字符串,解码后&lt;code&gt;docker login&lt;/code&gt;命令
 /// 可完成指定registry的鉴权。JCR CLI提供&lt;code&gt;jcr get-login&lt;/code&gt;进行认证处理。&lt;/p&gt;
 ///
 /// </summary>
 /// <param name="request">请求参数信息</param>
 /// <returns>请求结果信息</returns>
 public async Task <GetAuthorizationTokenResponse> GetAuthorizationToken(GetAuthorizationTokenRequest request)
 {
     return(await new GetAuthorizationTokenExecutor().Client(this).Execute <GetAuthorizationTokenResponse, GetAuthorizationTokenResult, GetAuthorizationTokenRequest>(request).ConfigureAwait(false));
 }
Exemple #5
0
 /// <summary>
 ///  &lt;p&gt;申请12小时有效期的令牌。 使用&lt;code&gt;docker&lt;/code&gt; CLI push和pull镜像。&lt;/p&gt;
 /// &lt;p&gt;&lt;code&gt;authorizationToken&lt;/code&gt;为每个registry返回一个base64编码的字符串,解码后&lt;code&gt;docker login&lt;/code&gt;命令
 /// 可完成指定registry的鉴权。JCR CLI提供&lt;code&gt;jcr get-login&lt;/code&gt;进行认证处理。&lt;/p&gt;
 ///
 /// </summary>
 /// <param name="request">请求参数信息</param>
 /// <returns>请求结果信息</returns>
 public GetAuthorizationTokenResponse GetAuthorizationToken(GetAuthorizationTokenRequest request)
 {
     return(new GetAuthorizationTokenExecutor().Client(this).Execute <GetAuthorizationTokenResponse, GetAuthorizationTokenResult, GetAuthorizationTokenRequest>(request));
 }