lib/google/cloud/dialogflow/v2/environments/paths.rb in google-cloud-dialogflow-v2-0.7.0 vs lib/google/cloud/dialogflow/v2/environments/paths.rb in google-cloud-dialogflow-v2-0.8.0

- old
+ new

@@ -25,18 +25,117 @@ # Path helper methods for the Environments API. module Paths ## # Create a fully-qualified Agent resource string. # - # The resource will be in the following format: + # @overload agent_path(project:) + # The resource will be in the following format: # - # `projects/{project}/agent` + # `projects/{project}/agent` # - # @param project [String] + # @param project [String] # + # @overload agent_path(project:, location:) + # The resource will be in the following format: + # + # `projects/{project}/locations/{location}/agent` + # + # @param project [String] + # @param location [String] + # # @return [::String] - def agent_path project: - "projects/#{project}/agent" + def agent_path **args + resources = { + "project" => (proc do |project:| + "projects/#{project}/agent" + end), + "location:project" => (proc do |project:, location:| + raise ::ArgumentError, "project cannot contain /" if project.to_s.include? "/" + + "projects/#{project}/locations/#{location}/agent" + end) + } + + resource = resources[args.keys.sort.join(":")] + raise ::ArgumentError, "no resource found for values #{args.keys}" if resource.nil? + resource.call(**args) + end + + ## + # Create a fully-qualified Environment resource string. + # + # @overload environment_path(project:, environment:) + # The resource will be in the following format: + # + # `projects/{project}/agent/environments/{environment}` + # + # @param project [String] + # @param environment [String] + # + # @overload environment_path(project:, location:, environment:) + # The resource will be in the following format: + # + # `projects/{project}/locations/{location}/agent/environments/{environment}` + # + # @param project [String] + # @param location [String] + # @param environment [String] + # + # @return [::String] + def environment_path **args + resources = { + "environment:project" => (proc do |project:, environment:| + raise ::ArgumentError, "project cannot contain /" if project.to_s.include? "/" + + "projects/#{project}/agent/environments/#{environment}" + end), + "environment:location:project" => (proc do |project:, location:, environment:| + raise ::ArgumentError, "project cannot contain /" if project.to_s.include? "/" + raise ::ArgumentError, "location cannot contain /" if location.to_s.include? "/" + + "projects/#{project}/locations/#{location}/agent/environments/#{environment}" + end) + } + + resource = resources[args.keys.sort.join(":")] + raise ::ArgumentError, "no resource found for values #{args.keys}" if resource.nil? + resource.call(**args) + end + + ## + # Create a fully-qualified Fulfillment resource string. + # + # @overload fulfillment_path(project:) + # The resource will be in the following format: + # + # `projects/{project}/agent/fulfillment` + # + # @param project [String] + # + # @overload fulfillment_path(project:, location:) + # The resource will be in the following format: + # + # `projects/{project}/locations/{location}/agent/fulfillment` + # + # @param project [String] + # @param location [String] + # + # @return [::String] + def fulfillment_path **args + resources = { + "project" => (proc do |project:| + "projects/#{project}/agent/fulfillment" + end), + "location:project" => (proc do |project:, location:| + raise ::ArgumentError, "project cannot contain /" if project.to_s.include? "/" + + "projects/#{project}/locations/#{location}/agent/fulfillment" + end) + } + + resource = resources[args.keys.sort.join(":")] + raise ::ArgumentError, "no resource found for values #{args.keys}" if resource.nil? + resource.call(**args) end extend self end end