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