class Pemilu::API
Attributes
key[R]
Public Class Methods
new(key: nil)
click to toggle source
# File lib/pemilu/api.rb, line 6 def initialize(key: nil) @key = key end
Public Instance Methods
candidate(id)
click to toggle source
# File lib/pemilu/api.rb, line 65 def candidate(id) uri = URI("http://api.pemiluapi.org/candidate/api/caleg/#{id}") params = { apiKey: @key } uri.query = URI.encode_www_form(params) respond = Net::HTTP.get_response(uri) return "Invalid request error. Please check your API key" if respond.is_a?(Net::HTTPUnauthorized) return "Can't get Candidate with id: #{id}" if respond.is_a?(Net::HTTPInternalServerError) data = JSON.parse(respond.body) if respond.is_a?(Net::HTTPSuccess) candidate = data["data"]["results"]["caleg"][0] return Pemilu::Candidate.new( id: candidate["id"], name: candidate["nama"], gender: candidate["jenis_kelamin"], religion: candidate["agama"], birthplace: candidate["tempat_lahir"], date_of_birth: candidate["tanggal_lahir"], marital_status: candidate["status_perkawinan"], name_of_couples: candidate["nama_pasangan"], number_of_children: candidate["jumlah_anak"].to_i, village: candidate["kelurahan_tinggal"], sub_district: candidate["kecamatan_tinggal"], district: candidate["kab_kota_tinggal"], province: { "id" => candidate["provinsi"]["id"], "name" => candidate["provinsi"]["nama"] }, electoral_district: { "id" => candidate["dapil"]["id"], "name" => candidate["dapil"]["nama"] }, election_year: candidate["tahun"], legislative_body: candidate["lembaga"], party: { "id" => candidate["partai"]["id"].to_i, "name" => candidate["partai"]["nama"] }, ordinal: candidate["urutan"], picture: candidate["foto_url"], educations: candidate["riwayat_pendidikan"], jobs: candidate["riwayat_pekerjaan"], organizations: candidate["riwayat_organisasi"]) end
candidates(name: nil, party: nil, electoral_district: nil, election_year: nil, province: nil, gender: nil, religion: nil, legislative_body: nil, limit: 100, offset: nil)
click to toggle source
# File lib/pemilu/api.rb, line 10 def candidates(name: nil, party: nil, electoral_district: nil, election_year: nil, province: nil, gender: nil, religion: nil, legislative_body: nil, limit: 100, offset: nil) uri = URI("http://api.pemiluapi.org/candidate/api/caleg") params = { apiKey: @key, nama: name, partai: party, dapil: electoral_district, tahun: election_year, provinsi: province, jenis_kelamin: gender, agama: religion, lembaga: legislative_body, limit: limit, offset: offset } params.delete_if{ |k,v| v.nil? } uri.query = URI.encode_www_form(params) respond = Net::HTTP.get_response(uri) return "Invalid request error. Please check your API key" if respond.is_a?(Net::HTTPUnauthorized) result = [] data = JSON.parse(respond.body) if respond.is_a?(Net::HTTPSuccess) @total_candidate = data["data"]["results"]["total"] candidates = data["data"]["results"]["caleg"] candidates.each do |caleg| result << Pemilu::Candidate.new( id: caleg["id"], name: caleg["nama"], gender: caleg["jenis_kelamin"], religion: caleg["agama"], birthplace: caleg["tempat_lahir"], date_of_birth: caleg["tanggal_lahir"], marital_status: caleg["status_perkawinan"], name_of_couples: caleg["nama_pasangan"], number_of_children: caleg["jumlah_anak"], village: caleg["kelurahan_tinggal"], sub_district: caleg["kecamatan_tinggal"], district: caleg["kab_kota_tinggal"], province: { "id" => caleg["provinsi"]["id"], "name" => caleg["provinsi"]["nama"] }, electoral_district: { "id" => caleg["dapil"]["id"], "nama" => caleg["dapil"]["nama"] }, election_year: caleg["tahun"], legislative_body: caleg["lembaga"], party: caleg["partai"], ordinal: caleg["urutan"], picture: caleg["foto_url"]) end return result end
electoral_district(id)
click to toggle source
# File lib/pemilu/api.rb, line 227 def electoral_district(id) uri = URI("http://api.pemiluapi.org/candidate/api/dapil/#{id}") params = { apiKey: @key } uri.query = URI.encode_www_form(params) respond = Net::HTTP.get_response(uri) return "Invalid request error. Please check your API key" if respond.is_a?(Net::HTTPUnauthorized) return "Can't get Electoral District with id: #{id}" if respond.is_a?(Net::HTTPInternalServerError) data = JSON.parse(respond.body) if respond.is_a?(Net::HTTPSuccess) ed = data["data"]["results"]["dapil"][0] return Pemilu::ElectoralDistrict.new( id: ed["id"], name: ed["nama"], full_name: ed["nama_lengkap"], legislative_body: ed["nama_lembaga"], available_chairs: ed["jumlah_kursi"], population: ed["jumlah_penduduk"], province: { "id" => ed["provinsi"]["id"], "name" => ed["provinsi"]["nama"] }) end
electoral_districts(province: nil, legislative_body: nil)
click to toggle source
# File lib/pemilu/api.rb, line 195 def electoral_districts(province: nil, legislative_body: nil) uri = URI("http://api.pemiluapi.org/candidate/api/dapil") params = { apiKey: @key, lembaga: legislative_body, provinsi: province } params.delete_if{ |k,v| v.nil? } uri.query = URI.encode_www_form(params) respond = Net::HTTP.get_response(uri) return "Invalid request error. Please check your API key" if respond.is_a?(Net::HTTPUnauthorized) result = [] data = JSON.parse(respond.body) if respond.is_a?(Net::HTTPSuccess) @total_election_districts = data["data"]["results"]["count"] eds = data["data"]["results"]["dapil"] eds.each do |ed| result << Pemilu::ElectoralDistrict.new( id: ed["id"], name: ed["nama"], full_name: ed["nama_lengkap"], legislative_body: ed["nama_lembaga"], available_chairs: ed["jumlah_kursi"], population: ed["jumlah_penduduk"], province: { "id" => ed["provinsi"]["id"], "name" => ed["provinsi"]["nama"] }) end return result end
parties()
click to toggle source
# File lib/pemilu/api.rb, line 108 def parties uri = URI("http://api.pemiluapi.org/candidate/api/partai") params = { apiKey: @key } uri.query = URI.encode_www_form(params) respond = Net::HTTP.get_response(uri) result = [] return "Invalid request error. Please check your API key" if respond.is_a?(Net::HTTPUnauthorized) data = JSON.parse(respond.body) if respond.is_a?(Net::HTTPSuccess) @total_parties = data["data"]["results"]["count"] parties = data["data"]["results"]["partai"] parties.each do |party| result << Pemilu::Party.new( id: party["id"].to_i, nick_name: party["nama"], full_name: party["nama_lengkap"], url: party["url_situs"], facebook: party["url_facebook"], twitter: party["url_twitter"] ) end return result end
party(id)
click to toggle source
# File lib/pemilu/api.rb, line 132 def party(id) uri = URI("http://api.pemiluapi.org/candidate/api/partai/#{id}") params = { apiKey: @key } uri.query = URI.encode_www_form(params) respond = Net::HTTP.get_response(uri) return "Invalid request error. Please check your API key" if respond.is_a?(Net::HTTPUnauthorized) return "Can't get Party with id: #{id}" if respond.is_a?(Net::HTTPBadRequest) data = JSON.parse(respond.body) if respond.is_a?(Net::HTTPSuccess) party = data["data"]["results"]["partai"][0] return Pemilu::Party.new( id: party["id"].to_i, nick_name: party["nama"], full_name: party["nama_lengkap"], url: party["url_situs"], facebook: party["url_facebook"], twitter: party["url_twitter"] ) end
province(id)
click to toggle source
# File lib/pemilu/api.rb, line 174 def province(id) uri = URI("http://api.pemiluapi.org/candidate/api/provinsi/#{id}") params = { apiKey: @key } uri.query = URI.encode_www_form(params) respond = Net::HTTP.get_response(uri) return "Invalid request error. Please check your API key" if respond.is_a?(Net::HTTPUnauthorized) return "Can't get Province with id: #{id}" if respond.is_a?(Net::HTTPBadRequest) data = JSON.parse(respond.body) if respond.is_a?(Net::HTTPSuccess) province = data["data"]["results"]["provinsi"][0] return Pemilu::Province.new( id: province["id"].to_i, name: province["nama"], full_name: province["nama_lengkap"], international_name: province["nama_inggris"], available_chairs: province["jumlah_kursi"], electoral_district: province["dapil"], population: province["jumlah_penduduk"]) end
provinces()
click to toggle source
# File lib/pemilu/api.rb, line 151 def provinces uri = URI("http://api.pemiluapi.org/candidate/api/provinsi") params = { apiKey: @key } uri.query = URI.encode_www_form(params) respond = Net::HTTP.get_response(uri) return "Invalid request error. Please check your API key" if respond.is_a?(Net::HTTPUnauthorized) result = [] data = JSON.parse(respond.body) if respond.is_a?(Net::HTTPSuccess) @total_provinsi = data["data"]["results"]["count"] provinces = data["data"]["results"]["provinsi"] provinces.each do |province| result << Pemilu::Province.new( id: province["id"].to_i, name: province["nama"], full_name: province["nama_lengkap"], international_name: province["nama_inggris"], available_chairs: province["jumlah_kursi"], population: province["jumlah_penduduk"]) end return result end