Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

hawatel_search_jobs

Package Overview
Dependencies
Maintainers
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

hawatel_search_jobs

  • 0.3.0
  • Rubygems
  • Socket score

Version published
Maintainers
2
Created
Source

Build Status Code Climate Inline docs Gem Version Dependency Status

Hawatel Search Jobs

Hawatel_search_jobs, it is gem which provides ease access to API from popular job websites to get current job offers. At this moment, supported backends are indeed.com, careerjet.com, xing.com, careerbuilder.com, reed.co.uk, and upwork.com.

Before you can start using the gem, you need have an accounts/tokens for each portal where is required by API.

Installation

Add this line to your application's Gemfile:

gem 'hawatel_search_jobs'

And then execute:

$ bundle

Or install it yourself as:

$ gem install hawatel_search_jobs

Usage

How to configure access to search engine APIs
HawatelSearchJobs.configure do |config|
  config.indeed[:activated] = true
  config.indeed[:api]       = 'api.indeed.com'
  config.indeed[:version]   = '2'
  config.indeed[:publisher] = 'secret-key'
  config.indeed[:page_size] = 25 # allowed range <1,25>

  config.xing[:activated]           = true
  config.xing[:consumer_key]        = 'secret-key'
  config.xing[:consumer_secret]     = 'secret-key'
  config.xing[:oauth_token]         = 'secret-key'
  config.xing[:oauth_token_secret]  = 'secret-key'
  config.xing[:page_size]           = 25 # allowed range <1,100>

  config.reed[:activated] = true
  config.reed[:api]       = 'reed.co.uk/api'
  config.reed[:clientid]  = 'secret-key'
  config.reed[:version]   = '1.0'
  config.reed[:page_size] = 25 # allowed range <1,100>

  config.careerbuilder[:activated]  = true
  config.careerbuilder[:api]        = 'api.careerbuilder.com'
  config.careerbuilder[:clientid]   = 'secret-key'
  config.careerbuilder[:version]    = 'v2'
  config.careerbuilder[:page_size]  = 25 # allowed range <1,100>

  config.careerjet[:activated]   = true
  config.careerjet[:api]         = 'public.api.careerjet.net'
  config.careerjet[:page_size]   = 25 # allowed range <1,99>
  
  config.upwork[:activated]           = true
  config.upwork[:consumer_key]        = 'secret-key'
  config.upwork[:consumer_secret]     = 'secret-key'
  config.upwork[:oauth_token]         = 'secret-key'
  config.upwork[:oauth_token_secret]  = 'secret-key'
  config.upwork[:page_size]           = 25 # allowed range <1,100>
end
Where to get a secret-key
  1. Indeed: http://www.indeed.com/jsp/apiinfo.jsp
  2. Xing: https://dev.xing.com
  3. Reed: https://www.reed.co.uk/developers/jobseeker
  4. Careerbuilder: http://developer.careerbuilder.com
  5. Careerjet: secret-key is no needed (http://www.careerjet.com/partners/api/)
  6. Upwork: https://developers.upwork.com
Get first page of job offers

There are two ways to read the returned job offers.

  • Returned job offers by search_jobs method:
  client = HawatelSearchJobs::Client.new
  result = client.search_jobs({:keywords => 'ruby'})
    p result[:indeed]
    p result[:xing]
    p result[:reed]
    p result[:careerbuilder]
    p result[:careerjet]
    p result[:upwork]
  • Access to the instance variable jobs_table. Instance variable jobs_table always has last returned job offers.
  client = HawatelSearchJobs::Client.new
  client.search_jobs({:keywords => 'ruby'})
  p client.jobs_table

Each API has a default limit of returned records. For consistency, each API returns maximum 25 records. You can change this behavior by setting page_size option in block of HawatelSearchJobs.configure method.

Get next page of job offers
  client = HawatelSearchJobs::Client.new
  client.search_jobs({:keywords => 'ruby'})
  p client.next
Get all pages of job offers
  client = HawatelSearchJobs::Client.new
  client.search_jobs({:keywords => 'ruby'})

  job_offers = Array.new

  begin
    job_offers << client.jobs_table
  end while(client.next)

If keywords will be too general probably each API will return loads of data and then a daily limit for an API provider can be exceeded. Reed about your daily limit for each API on the provider side.

How many job offers were found
  client = HawatelSearchJobs::Client.new
  client.search_jobs({:keywords => 'ruby'})
  p client.count # for all APIs
  p client.count('indeed') # for a particular API

The client.count returns count of total results for each APIs which can be returned to you if you use client.next method.

Structure of job offers table

Below is an example for indeed but each API has the same result structure.

  client = HawatelSearchJobs::Client.new
  client.search_jobs({:keywords => 'ruby'})
  result = client.jobs_table

  result[:indeed][:code]            # HTTP status code (see https://en.wikipedia.org/wiki/List_of_HTTP_status_codes)
  result[:indeed][:message]         # HTTP message (seee https://en.wikipedia.org/wiki/List_of_HTTP_status_codes)

  result[:indeed][:totalResults]    # Total results of job offers which matches to your search criteria on API provider
  result[:indeed][:page]            # Current results page number counted from index 0
  result[:indeed][:last]            # Last results page number
  result[:indeed][:key]             # Internal key which usuely keep last URL sent to API or last used keywords

  result[:indeed][:jobs]            # OpenStruct array which store returned job offers from API provider
  result[:indeed][:jobs].jobtitle   # Job title
  result[:indeed][:jobs].location   # Job location
  result[:indeed][:jobs].company    # Company name which posted the job
  result[:indeed][:jobs].date       # Date of the posted job (format %d/%m/%y)
  result[:indeed][:jobs].url        # Source URL to the job offer

Contributing

See CONTRIBUTING

License

The gem is available as open source under the terms of the MIT License.

FAQs

Package last updated on 12 Jul 2016

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc