Class: Pdga::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/pdga_api/client.rb

Overview

API Client for PDGA

Constant Summary collapse

API_ENDPOINT =
"https://api.pdga.com"

Class Method Summary collapse

Class Method Details

.build_params(options) ⇒ Object



68
69
70
71
72
73
74
# File 'lib/pdga_api/client.rb', line 68

def self.build_params(options)
  params = ""
  options.each do |key, value|
    params += "#{key}=#{value}&"
  end
  params.chomp!("&")
end

.build_request(http_method, endpoint, options = {}) ⇒ Object



76
77
78
79
80
81
82
# File 'lib/pdga_api/client.rb', line 76

def self.build_request(http_method, endpoint, options = {})
  request(
    http_method: http_method.to_sym,
    endpoint: endpoint,
    body: options
  )
end

.clientObject



54
55
56
57
58
59
60
61
62
# File 'lib/pdga_api/client.rb', line 54

def self.client
  @client ||= Faraday.new(API_ENDPOINT) do |client|
    client.use Faraday::Response::RaiseError
    client.request :url_encoded
    client.adapter Faraday.default_adapter
    client.headers["Cookie"] = "#{ENV["SESSION_NAME"]}=#{ENV["SESSID"]}"
    client.headers["X-CSRF-Token"] = ENV["TOKEN"]
  end
end

.connectObject



43
44
45
46
# File 'lib/pdga_api/client.rb', line 43

def self.connect
  response = build_request("post", "services/json/system/connect")
  JSON.parse(response.body)
end

.courses(options) ⇒ Object



31
32
33
34
35
# File 'lib/pdga_api/client.rb', line 31

def self.courses(options)
  params = build_params(options)
  response = build_request("get", "services/json/course?#{params}")
  JSON.parse(response.body)
end

.events(options) ⇒ Object



25
26
27
28
29
# File 'lib/pdga_api/client.rb', line 25

def self.events(options)
  params = build_params(options)
  response = build_request("get", "services/json/event?#{params}")
  JSON.parse(response.body)
end

.login(options) ⇒ Object



37
38
39
40
41
# File 'lib/pdga_api/client.rb', line 37

def self.(options)
  response = build_request("post", "services/json/user/login", options)
  update_envs(JSON.parse(response.body))
  JSON.parse(response.body)
end

.logoutObject



48
49
50
51
52
# File 'lib/pdga_api/client.rb', line 48

def self.logout
  response = build_request("post", "services/json/user/logout")
  clear_env
  JSON.parse(response.body)
end

.player_statistics(options) ⇒ Object



19
20
21
22
23
# File 'lib/pdga_api/client.rb', line 19

def self.player_statistics(options)
  params = build_params(options)
  response = build_request("get", "services/json/player-statistics?#{params}")
  JSON.parse(response.body)
end

.players(options) ⇒ Object



13
14
15
16
17
# File 'lib/pdga_api/client.rb', line 13

def self.players(options)
  params = build_params(options)
  response = build_request("get", "services/json/players?#{params}")
  JSON.parse(response.body)
end

.request(http_method:, endpoint:, body: {}) ⇒ Object



64
65
66
# File 'lib/pdga_api/client.rb', line 64

def self.request(http_method:, endpoint:, body: {})
  client.public_send(http_method, endpoint, body)
end

.update_envs(response) ⇒ Object



84
85
86
87
88
89
90
91
# File 'lib/pdga_api/client.rb', line 84

def self.update_envs(response)
  f = File.new("pdga_api.env", "w")
  f.write("SESSID=#{response["sessid"]}\nSESSION_NAME=#{response["session_name"]}\nTOKEN=#{response["token"]}")
  f.close
  ENV["SESSID"] = response["sessid"]
  ENV["SESSION_NAME"] = response["session_name"]
  ENV["TOKEN"] = response["token"]
end