jobs/V3/location_search_sample.rb (155 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_basic_location_search project_id:, company_name:, location:, distance:
# [START job_discovery_basic_location_search]
# 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}""
# location = "Location of the center where the search is based on."
# distance = "The distance from the provided location in miles in which to search."
require "google/apis/jobs_v3"
# Instantiate the client
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"
)
# Make sure to set the requestMetadata the same as the associated search request
request_metadata = jobs::RequestMetadata.new user_id: "HashedUserId",
session_id: "HashedSessionId",
domain: "www.google.com"
# Set location filter
location_filter = jobs::LocationFilter.new address: location,
distance_in_miles: distance
# Perform a search for analyst related jobs
job_query = jobs::JobQuery.new location_filters: [location_filter],
company_names: [company_name]
search_jobs_request = jobs::SearchJobsRequest.new request_metadata: request_metadata,
job_query: job_query,
search_mode: "JOB_SEARCH"
search_jobs_response = talent_solution_client.search_jobs project_id, search_jobs_request
puts search_jobs_response.to_json
search_jobs_response
# [END job_discovery_basic_location_search]
end
def job_discovery_keyword_location_search project_id:, company_name:, location:, distance:, keyword:
# [START job_discovery_keyword_location_search]
# 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}""
# location = "Location of the center where the search is based on."
# distance = "The distance from the provided location in miles in which to search."
# keyword = "Keyword of the search."
require "google/apis/jobs_v3"
# Instantiate the client
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"
)
# Make sure to set the requestMetadata the same as the associated search request
request_metadata = jobs::RequestMetadata.new user_id: "HashedUserId",
session_id: "HashedSessionId",
domain: "www.google.com"
# Set location filter
location_filter = jobs::LocationFilter.new address: location,
distance_in_miles: distance
# Perform a search for analyst related jobs
job_query = jobs::JobQuery.new location_filters: [location_filter],
query: keyword,
company_names: [company_name]
search_jobs_request = jobs::SearchJobsRequest.new request_metadata: request_metadata,
job_query: job_query,
search_mode: "JOB_SEARCH"
search_jobs_response = talent_solution_client.search_jobs project_id, search_jobs_request
puts search_jobs_response.to_json
search_jobs_response
# [END job_discovery_keyword_location_search]
end
def job_discovery_city_location_search project_id:, company_name:, city:
# [START job_discovery_city_location_search]
# 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}""
# city = "Name of the city where we want to do the job search."
require "google/apis/jobs_v3"
# Instantiate the client
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"
)
# Make sure to set the requestMetadata the same as the associated search request
request_metadata = jobs::RequestMetadata.new user_id: "HashedUserId",
session_id: "HashedSessionId",
domain: "www.google.com"
# Set location filter
location_filter = jobs::LocationFilter.new address: city
# Perform a search for analyst related jobs
job_query = jobs::JobQuery.new location_filters: [location_filter],
company_names: [company_name]
search_jobs_request = jobs::SearchJobsRequest.new request_metadata: request_metadata,
job_query: job_query,
search_mode: "JOB_SEARCH"
search_jobs_response = talent_solution_client.search_jobs project_id, search_jobs_request
puts search_jobs_response.to_json
search_jobs_response
# [END job_discovery_city_location_search]
end
def job_discovery_multi_location_search project_id:, company_name:, location1:, distance1:, city2:
# [START job_discovery_multi_location_search]
# 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}""
# location1 = "Location of the center where the first search is based on"
# distance1 = "The distance from the provided location in miles in which to search."
# city = "Name of the city where we want to do the second search."
require "google/apis/jobs_v3"
# Instantiate the client
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"
)
# Make sure to set the requestMetadata the same as the associated search request
request_metadata = jobs::RequestMetadata.new user_id: "HashedUserId",
session_id: "HashedSessionId",
domain: "www.google.com"
# Set location filter
location_filter1 = jobs::LocationFilter.new address: location1,
distance_in_miles: distance1
location_filter2 = jobs::LocationFilter.new address: city2
# Perform a search for analyst related jobs
job_query = jobs::JobQuery.new location_filters: [location_filter1, location_filter2],
company_names: [company_name]
search_jobs_request = jobs::SearchJobsRequest.new request_metadata: request_metadata,
job_query: job_query,
search_mode: "JOB_SEARCH"
search_jobs_response = talent_solution_client.search_jobs project_id, search_jobs_request
puts search_jobs_response.to_json
search_jobs_response
# [END job_discovery_multi_location_search]
end
def job_discovery_broadening_location_search project_id:, company_name:, city:
# [START job_discovery_broadening_location_search]
# 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}""
# city = "Name of the city where we want to do the job search."
require "google/apis/jobs_v3"
# Instantiate the client
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"
)
# Make sure to set the requestMetadata the same as the associated search request
request_metadata = jobs::RequestMetadata.new user_id: "HashedUserId",
session_id: "HashedSessionId",
domain: "www.google.com"
# Set location filter
location_filter = jobs::LocationFilter.new address: city
# Perform a search for analyst related jobs
job_query = jobs::JobQuery.new location_filters: [location_filter],
company_names: [company_name]
search_jobs_request = jobs::SearchJobsRequest.new request_metadata: request_metadata,
job_query: job_query,
search_mode: "JOB_SEARCH",
enable_broadening: true
search_jobs_response = talent_solution_client.search_jobs project_id, search_jobs_request
puts search_jobs_response.to_json
search_jobs_response
# [END job_discovery_broadening_location_search]
end
def run_location_search_sample arguments
require_relative "basic_company_sample"
require_relative "basic_job_sample"
command = arguments.shift
default_project_id = "projects/#{ENV['GOOGLE_CLOUD_PROJECT']}"
company_name = "#{default_project_id}/companies/#{arguments.shift}"
case command
when "basic_location_search"
job_discovery_basic_location_search company_name: company_name,
location: arguments.shift,
distance: arguments.shift,
project_id: default_project_id
when "keyword_location_search"
job_discovery_keyword_location_search company_name: company_name,
location: arguments.shift,
distance: arguments.shift,
keyword: arguments.shift,
project_id: default_project_id
when "city_location_search"
job_discovery_city_location_search company_name: company_name,
city: arguments.shift,
project_id: default_project_id
when "multi_location_search"
job_discovery_multi_location_search company_name: company_name,
location1: arguments.shift,
distance1: arguments.shift,
city2: arguments.shift,
project_id: default_project_id
when "broadening_location_search"
job_discovery_broadening_location_search company_name: company_name,
city: arguments.shift,
project_id: default_project_id
else
puts <<~USAGE
Usage: bundle exec ruby filter_search_sample.rb [command] [arguments]
Commands:
basic_location_search <company_id> <location> <distance> Search jobs in given searching area under a provided company.
keyword_location_search <company_id> <location> <distance> <search_keyword> Search jobs with keyword in given searching area under a provided company.
city_location_search <company_id> <city> Search jobs in a city under a provided company.
multi_location_search <company_id> <location> <distance> <city> Search jobs with multi condition under a provided company.
broadening_location_search <company_id> <city> Broaden search in a city under a provided company.
Environment variables:
GOOGLE_CLOUD_PROJECT must be set to your Google Cloud project ID
USAGE
end
end
if $PROGRAM_NAME == __FILE__
run_location_search_sample ARGV
end