class Request
Attributes
params_arr[R]
Public Class Methods
new(args)
click to toggle source
# File lib/data/request.rb, line 5 def initialize(args) @jobs = [] @title = args.title @min_salary = args.min_salary @state = args.state @country = args.country @min_grade = args.min_grade @keywords = args.keywords @keywords_or = args.keywords_or @gmail_usr = args.gmail_usr @gmail_pwd = args.gmail_pwd @email_to_addr = args.email_to_addr @params_arr = Array.new build_params @usajobs_uri = 'https://data.usajobs.gov/api/jobs' @usagov_uri = 'http://registry.usa.gov/accounts.json' @usagov_params = {'service_id' => 'github'} end
Public Instance Methods
build_keywords_params(params)
click to toggle source
# File lib/data/request.rb, line 46 def build_keywords_params(params) # only one of keywords or keywords_or is allowed as a param if @keywords.nil? && @keywords_or.nil? @params_arr << params elsif !@keywords.nil? keyword = '' @keywords.each_with_index do |x,i| i == 0 ? keyword = x : keyword << " #{x}" end params.merge!('Keyword' => keyword) @params_arr << params elsif !@keywords_or.nil? @keywords_or.each do |x| new_params = params.clone new_params['Keyword'] = x @params_arr << new_params end end end
build_params()
click to toggle source
# File lib/data/request.rb, line 25 def build_params params = {} unless @title.nil? params.merge!('Title' => @title) end unless @min_salary.nil? params.merge!('MinSalary' => @min_salary) end unless @state.nil? params.merge!('CountrySubDivision' => @state) end unless @country.nil? params.merge!('Country' => @country) end unless @min_grade.nil? params.merge!('GradeLow' => @min_grade) end build_keywords_params(params) end
email()
click to toggle source
# File lib/data/request.rb, line 90 def email unless @gmail_usr.nil? || @gmail_pwd.nil? || @email_to_addr.nil? send_email(@gmail_usr, @gmail_pwd, @email_to_addr) end end
get_jobs()
click to toggle source
# File lib/data/request.rb, line 66 def get_jobs usagov_response = get_data(@usagov_uri, @usagov_params) jobs = [] # at the time, keyword OR searches are not supported by usajobs. so need to make multiple calls for each OR keyword. # if keyword not provided or only one keyword, there will only be one entry in this array. @params_arr.each do |x| jobs = Response.new(get_data(@usajobs_uri, x), usagov_response).jobs if @jobs.length == 0 @jobs << jobs else jobs.each do |x| matches = @jobs.select {|job_data| job_data.id == x.id } if matches.length == 0 @jobs << x end end end @jobs.flatten! end @jobs end