API docs and sample Ruby scripts
This commit is contained in:
65
doc/api/examples/ruby/example_2.rb
Normal file
65
doc/api/examples/ruby/example_2.rb
Normal file
@@ -0,0 +1,65 @@
|
||||
require 'http'
|
||||
|
||||
API_ENDPOINT = 'https://decide.madrid.es/graphql'
|
||||
|
||||
def make_request(query_string)
|
||||
HTTP.headers('User-Agent' => 'Mozilla/5.0', accept: 'application/json')
|
||||
.get(
|
||||
API_ENDPOINT,
|
||||
params: { query: query_string.gsub("\n", '').gsub(" ", '') }
|
||||
)
|
||||
end
|
||||
|
||||
def build_query(options = {})
|
||||
page_size = options[:page_size] || 25
|
||||
page_size_parameter = "first: #{page_size}"
|
||||
|
||||
page_number = options[:page_number] || 0
|
||||
after_parameter = page_number > 0 ? ", after: \"#{options[:next_cursor]}\"" : ""
|
||||
|
||||
"""
|
||||
{
|
||||
proposals(#{page_size_parameter}#{after_parameter}) {
|
||||
pageInfo {
|
||||
endCursor,
|
||||
hasNextPage
|
||||
},
|
||||
edges {
|
||||
node {
|
||||
id,
|
||||
title,
|
||||
public_created_at
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
"""
|
||||
end
|
||||
|
||||
page_number = 0
|
||||
next_cursor = nil
|
||||
proposals = []
|
||||
|
||||
loop do
|
||||
|
||||
puts "> Requesting page #{page_number}"
|
||||
|
||||
query = build_query(page_size: 25, page_number: page_number, next_cursor: next_cursor)
|
||||
response = make_request(query)
|
||||
|
||||
response_hash = JSON.parse(response.body)
|
||||
page_info = response_hash['data']['proposals']['pageInfo']
|
||||
has_next_page = page_info['hasNextPage']
|
||||
next_cursor = page_info['endCursor']
|
||||
proposal_edges = response_hash['data']['proposals']['edges']
|
||||
|
||||
puts "\tHTTP code: #{response.code}"
|
||||
|
||||
proposal_edges.each do |edge|
|
||||
proposals << edge['node']
|
||||
end
|
||||
|
||||
page_number += 1
|
||||
|
||||
break if !has_next_page
|
||||
end
|
||||
Reference in New Issue
Block a user