jobs/V3/basic_company_sample.rb (137 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_company display_name:, headquarters_address:, external_id:
# [START job_discovery_generate_company]
# display_name = "Your company display name"
# headquarters_address = "Your company headquarters address"
# external_id = "Your internal ID for this company, allowing mapping internal identifiers to the company in Google's system"
require "google/apis/jobs_v3"
require "securerandom"
jobs = Google::Apis::JobsV3
company_generated = jobs::Company.new display_name: display_name,
headquarters_address: headquarters_address,
external_id: external_id
puts "Company generated: #{company_generated.to_json}"
company_generated
# [END job_discovery_generate_company]
end
def job_discovery_create_company project_id:, company_to_be_created:
# [START job_discovery_create_company]
# project_id = "Id of the project"
# company_to_be_created = "Company to be created"
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"
)
begin
create_company_request = jobs::CreateCompanyRequest.new company: company_to_be_created
company_created = talent_solution_client.create_company project_id, create_company_request
puts "Company created: #{company_created.to_json}"
company_created
rescue StandardError => e
puts "Exception occurred while creating company: #{e}"
end
# [END job_discovery_create_company]
end
def job_discovery_get_company company_name:
# [START job_discovery_get_company]
# company_name = "The name of the company you want to get. 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"
)
begin
company_got = talent_solution_client.get_project_company company_name
puts "Company got: #{company_got.to_json}"
company_got
rescue StandardError => e
puts "Exception occurred while getting company: #{e}"
end
# [END job_discovery_get_company]
end
def job_discovery_update_company company_name:, company_updated:
# [START job_discovery_update_company]
# company_name = "The name of the company you want to update. The format is "projects/{project_id}/companies/{company_id}""
# company_updated = "The new company object to be updated"
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"
)
begin
update_company_request = jobs::UpdateCompanyRequest.new company: company_updated
company_updated = talent_solution_client
.patch_project_company(company_name, update_company_request)
puts "Company updated: #{company_updated.to_json}"
company_updated
rescue StandardError => e
puts "Exception occurred while updating company: #{e}"
end
# [END job_discovery_update_company]
end
def job_discovery_update_company_with_field_mask company_name:, field_mask:, company_updated:
# [START job_discovery_update_company_with_field_mask]
# company_name = "The name of the company you want to update. The format is "projects/{project_id}/companies/{company_id}""
# field_mask = "The field mask you want to update"
# company_updated = "The new company object to be updated"
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"
)
begin
update_company_request = jobs::UpdateCompanyRequest.new company: company_updated,
update_mask: field_mask
company_updated = talent_solution_client
.patch_project_company(company_name, update_company_request)
puts "Company updated with filedMask #{update_company_request.update_mask}. "
puts "Updated company: #{company_updated.to_json}"
company_updated
rescue StandardError => e
puts "Exception occurred while updating company with fieldMask: #{e}"
end
# [END job_discovery_update_company_with_field_mask]
end
def job_discovery_delete_company company_name:
# [START job_discovery_delete_company]
# company_name = "The name of the company you want to delete. 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"
)
begin
talent_solution_client.delete_project_company company_name
puts "Company deleted. CompanyName: #{company_name}"
rescue StandardError => e
puts "Exception occurred while deleting company: #{e}"
end
# [END job_discovery_delete_company]
end
def run_basic_company_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}" if command != "create_company"
case command
when "create_company"
company_generated =
job_discovery_generate_company display_name: user_input,
external_id: arguments.shift,
headquarters_address: arguments.shift
company_created =
job_discovery_create_company company_to_be_created: company_generated,
project_id: default_project_id
when "get_company"
job_discovery_get_company company_name: company_name
when "update_company"
company_to_be_updated = job_discovery_get_company company_name: company_name
company_to_be_updated.display_name = "Updated name Google"
job_discovery_update_company company_name: company_name,
company_updated: company_to_be_updated
when "update_company_with_field_mask"
company_to_be_updated = job_discovery_get_company company_name: company_name
company_to_be_updated.display_name = "Updated name Google"
job_discovery_update_company_with_field_mask company_name: company_name,
field_mask: "DisplayName",
company_updated: company_to_be_updated
when "delete_company"
job_discovery_delete_company company_name: company_name
else
puts <<~USAGE
Usage: bundle exec ruby basic_company_sample.rb [command] [arguments]
Commands:
create_company <display_name> <external_id> <headquarters_address> Create a company with display name and headquaters address
get_company <company_id> Get company with name.
update_company <company_id> Update a company.
update_company_with_field_mask <company_id> Update a company with field mask.
delete_company <company_id> Delete a company.
Environment variables:
GOOGLE_CLOUD_PROJECT must be set to your Google Cloud project ID
USAGE
end
end
if $PROGRAM_NAME == __FILE__
run_basic_company_sample ARGV
end