jobs/V3/batch_operation_sample.rb (190 lines of code) (raw):

# Copyright 2018 Google, Inc # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. def job_discovery_batch_create_jobs project_id:, company_name: # [START job_discovery_batch_create_jobs] # project_id = "Id of the project" # company_name = "The resource name of the company listing the job. The format is "projects/{project_id}/companies/{company_id}"" require "google/apis/jobs_v3" jobs = Google::Apis::JobsV3 talent_solution_client = jobs::CloudTalentSolutionService.new # @see https://developers.google.com/identity/protocols/application-default-credentials#callingruby talent_solution_client.authorization = Google::Auth.get_application_default( "https://www.googleapis.com/auth/jobs" ) jobs_created = [] job_generated1 = jobs::Job.new requisition_id: "Job: #{company_name} 1", title: " Lab Technician", company_name: company_name, employment_types: ["FULL_TIME"], language_code: "en-US", application_info: (jobs::ApplicationInfo.new uris: ["http://careers.google.com"]), description: "Design and improve software." job_generated2 = jobs::Job.new requisition_id: "Job: #{company_name} 2", title: "Systems Administrator", company_name: company_name, employment_types: ["FULL_TIME"], language_code: "en-US", application_info: (jobs::ApplicationInfo.new uris: ["http://careers.google.com"]), description: "System Administrator for software." create_job_request1 = jobs::CreateJobRequest.new job: job_generated1 create_job_request2 = jobs::CreateJobRequest.new job: job_generated2 talent_solution_client.batch do |client| client.create_job project_id, create_job_request1 do |job, err| if err.nil? jobs_created.push job else puts "Batch job create error message: #{err.message}" end end client.create_job project_id, create_job_request2 do |job, err| if err.nil? jobs_created.push job else puts "Batch job create error message: #{err.message}" end end end # jobCreated = batchCreate.create_job(project_id, create_job_request1) puts "Batch job created: #{jobs_created.to_json}" jobs_created # [END job_discovery_batch_create_jobs] end def job_discovery_batch_update_jobs job_to_be_updated: # [START job_discovery_batch_update_jobs] # job_to_be_updated = "Updated job objects" require "google/apis/jobs_v3" jobs = Google::Apis::JobsV3 talent_solution_client = jobs::CloudTalentSolutionService.new # @see # https://developers.google.com/identity/protocols/application-default-credentials#callingruby talent_solution_client.authorization = Google::Auth.get_application_default( "https://www.googleapis.com/auth/jobs" ) jobs_updated = [] update_job_requests = [] job_to_be_updated.each do |job| request = jobs::UpdateJobRequest.new job: job update_job_requests.push request end talent_solution_client.batch do |client| update_job_requests.each do |update_job_request| client.patch_project_job update_job_request.job.name, update_job_request do |job, err| if err.nil? jobs_updated.push job else puts "Batch job updated error message: #{err.message}" end end end end # jobCreated = batchCreate.create_job(project_id, create_job_request1) puts "Batch job updated: #{jobs_updated.to_json}" jobs_updated # [END job_discovery_batch_update_jobs] end def job_discovery_batch_update_jobs_with_mask job_to_be_updated: # [START job_discovery_batch_update_jobs_with_mask] # job_to_be_updated = "Updated job objects" require "google/apis/jobs_v3" jobs = Google::Apis::JobsV3 talent_solution_client = jobs::CloudTalentSolutionService.new # @see # https://developers.google.com/identity/protocols/application-default-credentials#callingruby talent_solution_client.authorization = Google::Auth.get_application_default( "https://www.googleapis.com/auth/jobs" ) jobs_updated = [] update_job_with_mask_requests = [] job_to_be_updated.each do |job| request = jobs::UpdateJobRequest.new job: job, update_mask: "title" update_job_with_mask_requests.push request end talent_solution_client.batch do |client| update_job_with_mask_requests.each do |update_job_with_mask_request| client.patch_project_job(update_job_with_mask_request.job.name, update_job_with_mask_request) do |job, err| if err.nil? jobs_updated.push job else puts "Batch job updated error message: #{err.message}" end end end end puts "Batch job updated with Mask: #{jobs_updated.to_json}" jobs_updated # [END job_discovery_batch_update_jobs_with_mask] end def job_discovery_batch_delete_jobs job_to_be_deleted: # [START job_discovery_batch_delete_jobs] # job_to_be_deleted = "Name of the jobs to be deleted" require "google/apis/jobs_v3" jobs = Google::Apis::JobsV3 talent_solution_client = jobs::CloudTalentSolutionService.new # @see # https://developers.google.com/identity/protocols/application-default-credentials#callingruby talent_solution_client.authorization = Google::Auth.get_application_default( "https://www.googleapis.com/auth/jobs" ) jobs_deleted = 0 talent_solution_client.batch do |client| job_to_be_deleted.each do |job_name| client.delete_project_job job_name do |_job, err| if err.nil? jobs_deleted += 1 else puts "Batch job deleted error message: #{err.message}" end end end end puts "Batch job deleted." jobs_deleted # [END job_discovery_batch_delete_jobs] end def job_discovery_list_jobs project_id:, company_name: # [START job_discovery_list_jobs] # project_id = "Id of the project" # company_name = "The company's name which has the job you want to list. The format is "projects/{project_id}/companies/{company_id}"" require "google/apis/jobs_v3" jobs = Google::Apis::JobsV3 talent_solution_client = jobs::CloudTalentSolutionService.new talent_solution_client.authorization = Google::Auth.get_application_default( "https://www.googleapis.com/auth/jobs" ) begin job_got = talent_solution_client.list_project_jobs project_id, filter: "companyName = \"#{company_name}\"" puts "Job got: #{job_got.to_json}" job_got rescue StandardError => e puts "Exception occurred while getting job: #{e}" end # [END job_discovery_list_jobs] end def run_batch_operation_sample arguments command = arguments.shift default_project_id = "projects/#{ENV['GOOGLE_CLOUD_PROJECT']}" user_input = arguments.shift company_name = "#{default_project_id}/companies/#{user_input}" jobs_created = [] job_names = [] case command when "batch_create_jobs" jobs_created = job_discovery_batch_create_jobs company_name: company_name, project_id: default_project_id when "batch_update_jobs" list_job_response = job_discovery_list_jobs company_name: company_name, project_id: default_project_id jobs_got = list_job_response.jobs jobs_got.each do |job| job.title = "#{job.title} updated" job.description = "#{job.description} updated" end job_discovery_batch_update_jobs job_to_be_updated: jobs_got when "batch_update_jobs_with_mask" list_job_response = job_discovery_list_jobs company_name: company_name, project_id: default_project_id jobs_got = list_job_response.jobs jobs_got.each do |job| job.title = "#{job.title} updated with mask" end job_discovery_batch_update_jobs_with_mask job_to_be_updated: jobs_got when "batch_delete_jobs" list_job_response = job_discovery_list_jobs company_name: company_name, project_id: default_project_id jobs_got = list_job_response.jobs jobs_got.each do |job| job_names.push job.name end job_discovery_batch_delete_jobs job_to_be_deleted: job_names else puts <<~USAGE Usage: bundle exec ruby batch_operation_sample.rb [command] [arguments] Commands: batch_create_jobs <company_id> Batch create jobs under provided company. batch_update_jobs <company_id> Batch update jobs. batch_update_jobs_with_mask <company_id> Batch update jobs with mask. batch_delete_jobs <company_id> Batch delete jobs. Environment variables: GOOGLE_CLOUD_PROJECT must be set to your Google Cloud project ID USAGE end end if $PROGRAM_NAME == __FILE__ run_batch_operation_sample ARGV end