jobs/V3/basic_job_sample.rb (149 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_generate_job company_name:, requisition_id:
# [START job_discovery_generate_job]
# company_name = "The resource name of the company listing the job. The format is 'projects/{project_id}/companies/{company_id}'"
# requisition_id = "The posting ID, assigned by the client to identify a job"
require "google/apis/jobs_v3"
jobs = Google::Apis::JobsV3
application_info = jobs::ApplicationInfo.new uris: ["http://careers.google.com"]
job_generated = jobs::Job.new requisition_id: requisition_id,
title: " Lab Technician",
company_name: company_name,
employment_types: ["FULL_TIME"],
language_code: "en-US",
application_info: application_info,
description: "Design, develop, test, deploy, " +
"maintain and improve software."
# set compensation to 12 USD/hour
compensation_entry = jobs::CompensationEntry.new type: "BASE",
unit: "HOURLY",
amount: (jobs::Money.new currency_code: "USD",
units: 12)
compensation_info = jobs::CompensationInfo.new entries: [compensation_entry]
job_generated.compensation_info = compensation_info
puts "Job generated: #{job_generated.to_json}"
job_generated
# [END job_discovery_generate_job]
end
def job_discovery_create_job project_id:, job_to_be_created:
# [START job_discovery_create_job]
# project_id = "Id of the project"
# job_to_be_created = "Job to be created"
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
create_job_request = jobs::CreateJobRequest.new job: job_to_be_created
job_created = talent_solution_client.create_job project_id, create_job_request
puts "Job created: #{job_created.to_json}"
job_created
rescue StandardError => e
puts "Exception occurred while creating job: #{e}"
end
# [END job_discovery_create_job]
end
def job_discovery_get_job job_name:
# [START job_discovery_get_job]
# job_name = "The name of the job you want to get"
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.get_project_job job_name
puts "Job got: #{job_got.to_json}"
job_got
rescue StandardError => e
puts "Exception occurred while getting job: #{e}"
end
# [END job_discovery_get_job]
end
def job_discovery_update_job job_name:, job_to_be_updated:
# [START job_discovery_update_job]
# job_name = "The name of the job you want to update"
# job_to_be_updated = "The new job object to be updated"
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
update_job_request = jobs::UpdateJobRequest.new job: job_to_be_updated
job_updated = talent_solution_client.patch_project_job job_name, update_job_request
puts "Job updated: #{job_updated.to_json}"
job_updated
rescue StandardError => e
puts "Exception occurred while updating job: #{e}"
end
# [END job_discovery_update_job]
end
def job_discovery_update_job_with_field_mask job_name:, field_mask:, job_to_be_updated:
# [START job_discovery_update_job_with_field_mask]
# job_name = "The name of the job you want to update"
# field_mask = "The field mask you want to update"
# job_updated = "The new job object to be updated"
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
update_job_request = jobs::UpdateJobRequest.new job: job_to_be_updated,
update_mask: field_mask
job_updated = talent_solution_client.patch_project_job job_name, update_job_request
puts "Job updated with filedMask #{update_job_request.update_mask}. "
puts "Updated job: #{job_updated.to_json}"
job_updated
rescue StandardError => e
puts "Exception occurred while updating job with field mask: #{e}"
end
# [END job_discovery_update_job_with_field_mask]
end
def job_discovery_delete_job job_name:
# [START job_discovery_delete_job]
# job_name = "The name of the job you want to delete"
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
talent_solution_client.delete_project_job job_name
puts "Job deleted. jobName: #{job_name}"
rescue StandardError => e
puts "Exception occurred while deleting job: #{e}"
end
# [END job_discovery_delete_job]
end
def run_basic_job_sample arguments
require_relative "basic_company_sample"
command = arguments.shift
default_project_id = "projects/#{ENV['GOOGLE_CLOUD_PROJECT']}"
user_input = arguments.shift
if command == "create_job"
company_name = "#{default_project_id}/companies/#{user_input}"
else
job_name = "#{default_project_id}/jobs/#{user_input}"
end
case command
when "create_job"
company_got = job_discovery_get_company company_name: company_name
job_generated = job_discovery_generate_job company_name: company_got.name,
requisition_id: arguments.shift
job_created = job_discovery_create_job job_to_be_created: job_generated,
project_id: default_project_id
when "get_job"
job_discovery_get_job job_name: job_name
when "update_job"
job_got = job_discovery_get_job job_name: job_name
job_got.description = "Updated description"
job_discovery_update_job job_name: job_got.name,
job_to_be_updated: job_got
when "update_job_with_field_mask"
job_got = job_discovery_get_job job_name: job_name
job_got.title = "Updated title software Engineer"
job_discovery_update_job_with_field_mask job_name: job_got.name,
field_mask: "title",
job_to_be_updated: job_created
when "delete_job"
job_discovery_delete_job job_name: job_name
else
puts <<~USAGE
Usage: bundle exec ruby basic_job_sample.rb [command] [arguments]
Commands:
create_job <company_id> <posting_id> Create a job with a posting ID under a company.
get_job <job_id> Get a job by name.
update_job <job_id> Update a job.
update_job_with_field_mask <job_id> Update a job with field mask.
delete_job <job_id> Delete a job.
Environment variables:
GOOGLE_CLOUD_PROJECT must be set to your Google Cloud project ID
USAGE
end
end
if $PROGRAM_NAME == __FILE__
run_basic_job_sample ARGV
end