jobs/v3/howto/basic_company_sample.go (120 lines of code) (raw):

// Copyright 2019 Google LLC // // 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 // // https://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. package howto import ( "context" "fmt" "io" "golang.org/x/oauth2/google" talent "google.golang.org/api/jobs/v3" ) // [START job_create_company] // createCompany creates a company as given. func createCompany(w io.Writer, projectID string, companyToCreate *talent.Company) (*talent.Company, error) { ctx := context.Background() client, err := google.DefaultClient(ctx, talent.CloudPlatformScope) if err != nil { return nil, fmt.Errorf("google.DefaultClient: %w", err) } // Create the jobs service client. service, err := talent.New(client) if err != nil { return nil, fmt.Errorf("talent.New: %w", err) } parent := "projects/" + projectID req := &talent.CreateCompanyRequest{ Company: companyToCreate, } company, err := service.Projects.Companies.Create(parent, req).Do() if err != nil { return nil, fmt.Errorf("failed to create company %q: %w", companyToCreate.DisplayName, err) } return company, nil } // [END job_create_company] // [START job_get_company] // getCompany gets an existing company by name. func getCompany(w io.Writer, name string) (*talent.Company, error) { ctx := context.Background() client, err := google.DefaultClient(ctx, talent.CloudPlatformScope) if err != nil { return nil, fmt.Errorf("google.DefaultClient: %w", err) } // Create the jobs service client. service, err := talent.New(client) if err != nil { return nil, fmt.Errorf("talent.New: %w", err) } company, err := service.Projects.Companies.Get(name).Do() if err != nil { return nil, fmt.Errorf("failed to get company %q: %w", name, err) } fmt.Fprintf(w, "Company: %q\n", company.Name) return company, nil } // [END job_get_company] // [START job_update_company] // updateCompany update a company with all fields. func updateCompany(w io.Writer, name string, companyToUpdate *talent.Company) (*talent.Company, error) { ctx := context.Background() client, err := google.DefaultClient(ctx, talent.CloudPlatformScope) if err != nil { return nil, fmt.Errorf("google.DefaultClient: %w", err) } // Create the jobs service client. service, err := talent.New(client) if err != nil { return nil, fmt.Errorf("talent.New: %w", err) } updateCompanyRequest := &talent.UpdateCompanyRequest{ Company: companyToUpdate, } company, err := service.Projects.Companies.Patch(name, updateCompanyRequest).Do() if err != nil { return nil, fmt.Errorf("failed to update company %q: %w", name, err) } return company, nil } // [END job_update_company] // [START job_update_company_with_field_mask] // updateCompanyWithMask updates a company with specific fields. // mask is a comma separated list of top-level fields of talent.Company. func updateCompanyWithMask(w io.Writer, name string, mask string, companyToUpdate *talent.Company) (*talent.Company, error) { ctx := context.Background() client, err := google.DefaultClient(ctx, talent.CloudPlatformScope) if err != nil { return nil, fmt.Errorf("google.DefaultClient: %w", err) } // Create the jobs service client. service, err := talent.New(client) if err != nil { return nil, fmt.Errorf("talent.New: %w", err) } req := &talent.UpdateCompanyRequest{ Company: companyToUpdate, UpdateMask: mask, } company, err := service.Projects.Companies.Patch(name, req).Do() if err != nil { return nil, fmt.Errorf("failed to update company %q with mask %q: %w", name, mask, err) } return company, nil } // [END job_update_company_with_field_mask] // [START job_delete_company] // deleteCompany deletes an existing company by name. func deleteCompany(w io.Writer, name string) error { ctx := context.Background() client, err := google.DefaultClient(ctx, talent.CloudPlatformScope) if err != nil { return fmt.Errorf("google.DefaultClient: %w", err) } // Create the jobs service client. service, err := talent.New(client) if err != nil { return fmt.Errorf("talent.New: %w", err) } if _, err := service.Projects.Companies.Delete(name).Do(); err != nil { return fmt.Errorf("failed to delete company %q: %w", name, err) } return nil } // [END job_delete_company] // [START job_list_companies] // listCompanies lists all companies in the project. func listCompanies(w io.Writer, projectID string) (*talent.ListCompaniesResponse, error) { ctx := context.Background() client, err := google.DefaultClient(ctx, talent.CloudPlatformScope) if err != nil { return nil, fmt.Errorf("google.DefaultClient: %w", err) } // Create the jobs service client. service, err := talent.New(client) if err != nil { return nil, fmt.Errorf("talent.New: %w", err) } parent := "projects/" + projectID resp, err := service.Projects.Companies.List(parent).Do() if err != nil { return nil, fmt.Errorf("failed to list companies: %w", err) } fmt.Fprintln(w, "Companies:") for _, c := range resp.Companies { fmt.Fprintf(w, "\t%q\n", c.Name) } return resp, nil } // [END job_list_companies]