Class: Leetcoder::BaseResource

Inherits:
Object
  • Object
show all
Includes:
Helpers::GqlQueries
Defined in:
lib/leetcoder/leetcoder/resources/base_resource.rb

Direct Known Subclasses

QuestionsResource, SubmissionsResource

Defined Under Namespace

Classes: Response

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Helpers::GqlQueries

#default_limit, #problemset_query, #question_data_query, #submissions_query

Constructor Details

#initialize(args = {}) ⇒ BaseResource

Returns a new instance of BaseResource.



11
12
13
14
# File 'lib/leetcoder/leetcoder/resources/base_resource.rb', line 11

def initialize(args = {})
  @client = Client.new
  @args = args
end

Instance Attribute Details

#argsObject (readonly)

Returns the value of attribute args.



9
10
11
# File 'lib/leetcoder/leetcoder/resources/base_resource.rb', line 9

def args
  @args
end

Instance Method Details

#cache_response(file_path, request, update: false) ⇒ Object

@params: file_path:string, request:proc cache response in file_path and return it



18
19
20
21
22
23
24
25
26
27
# File 'lib/leetcoder/leetcoder/resources/base_resource.rb', line 18

def cache_response(file_path, request, update: false)
  data = YAML.load_file(file_path) if File.exist? file_path
  return Response.new(body: data) unless update || data.nil?

  puts 'Caching Response..'

  request.call.tap do |response|
    File.write(file_path, response.body.to_yaml)
  end
end

#get_request(endpoint, params: {}) ⇒ Object



29
30
31
# File 'lib/leetcoder/leetcoder/resources/base_resource.rb', line 29

def get_request(endpoint, params: {})
  @client.call('get', endpoint, params:)
end

#gql_request(query: {}, variables: {}) ⇒ Object



37
38
39
# File 'lib/leetcoder/leetcoder/resources/base_resource.rb', line 37

def gql_request(query: {}, variables: {})
  @client.call('post', 'graphql', payload: { query:, variables: })
end

#post_request(endpoint, payload: {}, params: {}) ⇒ Object



33
34
35
# File 'lib/leetcoder/leetcoder/resources/base_resource.rb', line 33

def post_request(endpoint, payload: {}, params: {})
  @client.call('post', endpoint, payload:, params:)
end