class Familyseach2::Client
Public Class Methods
new(params = {})
click to toggle source
# File lib/familysearch2.rb, line 10 def initialize(params = {}) @logger = params[:logger] @key = params[:key] @base_url = get_base_url(params[:environment]) @agent = Faraday.new(@base_url) do |faraday| faraday.headers['Accept'] = 'application/x-fs-v1+json,application/x-gedcomx-atom+json,application/json' faraday.adapter Faraday.default_adapter # make requests with Net::HTTP end get_access_token(params[:username],params[:password],params[:environment],@key ) @agent end
Public Instance Methods
get_access_token(username,password,env,key)
click to toggle source
# File lib/familysearch2.rb, line 34 def get_access_token(username,password,env,key) meta url = JSON.parse(@discovery)['links']['fs-identity-v2-login']['href'] @client_id = key RestClient::Resource.new url, username, password request_url = get_base_url(env) + "/identity/v2/request_token" time = Time.now.utc.to_i.to_s request_response = "" begin request_response = RestClient. get "#{request_url}?oauth_consumer_key=#{@client_id}&oauth_signature_method=PLAINTEXT&oauth_signature=%26&oauth_timestamp=#{time}&oauth_nonce=123456789" rescue => e puts e end access_token = JSON.parse(CGI::parse(request_response).to_json)['oauth_token'] @access_token = access_token.to_s.sub!('["', '')[0...-2] @agent.authorization('Bearer',@access_token) end
get_agent()
click to toggle source
# File lib/familysearch2.rb, line 22 def get_agent @agent end
get_base_url(env)
click to toggle source
# File lib/familysearch2.rb, line 26 def get_base_url(env) base_url = "" base_url = 'https://familysearch.org' if env == 'production' base_url = 'https://stage.familysearch.org' if env == 'staging' base_url = 'https://sandbox.familysearch.org' if env == 'sandbox' base_url end
get_url(call)
click to toggle source
gets the url in api-library
# File lib/familysearch2.rb, line 57 def get_url(call) lines = [] url = "" File.open("api_library", "r").each_line do |line| lines << line end lines.each do |x| line = x.split("=>") url = line[1].strip if line[0].strip == call end url end
meta()
click to toggle source
# File lib/familysearch2.rb, line 94 def meta @discovery ||= get_meta end
update_library()
click to toggle source
# File lib/familysearch2.rb, line 71 def update_library link_names = [] name_hrefs = [] # get links parsed_links = JSON.parse(@discovery)['links'] parsed_links.each do |x| link_names << x.to_s.split(' ')[0].sub!('["', '')[0...-2] end # get hrefs link_names.each do |x| temp = JSON.parse(@discovery)['links'][x]['href'] if temp.to_s != "" name_hrefs << ("#{x} => #{temp}") end end File.open('api_library', "w+") do |f| name_hrefs.each { |element| f.puts(element) } end end
Private Instance Methods
get_meta()
click to toggle source
# File lib/familysearch2.rb, line 99 def get_meta result = @agent.get('/.well-known/app-meta') result.body end