Class: Crawlbase::API

Inherits:
Object
  • Object
show all
Defined in:
lib/crawlbase/api.rb

Direct Known Subclasses

ScraperAPI, ScreenshotsAPI

Constant Summary collapse

INVALID_TOKEN =
'Token is required'
INVALID_URL =
'URL is required'
DEFAULT_TIMEOUT =
90

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ API

Returns a new instance of API.

Raises:



15
16
17
18
19
20
# File 'lib/crawlbase/api.rb', line 15

def initialize(options = {})
  raise INVALID_TOKEN if options[:token].nil?

  @token = options[:token]
  @timeout = options.fetch(:timeout, DEFAULT_TIMEOUT)
end

Instance Attribute Details

#bodyObject (readonly)

Returns the value of attribute body.



9
10
11
# File 'lib/crawlbase/api.rb', line 9

def body
  @body
end

#original_statusObject (readonly)

Returns the value of attribute original_status.



9
10
11
# File 'lib/crawlbase/api.rb', line 9

def original_status
  @original_status
end

#pc_statusObject (readonly)

Returns the value of attribute pc_status.



9
10
11
# File 'lib/crawlbase/api.rb', line 9

def pc_status
  @pc_status
end

#status_codeObject (readonly)

Returns the value of attribute status_code.



9
10
11
# File 'lib/crawlbase/api.rb', line 9

def status_code
  @status_code
end

#storage_urlObject (readonly)

Returns the value of attribute storage_url.



9
10
11
# File 'lib/crawlbase/api.rb', line 9

def storage_url
  @storage_url
end

#timeoutObject (readonly)

Returns the value of attribute timeout.



9
10
11
# File 'lib/crawlbase/api.rb', line 9

def timeout
  @timeout
end

#tokenObject (readonly)

Returns the value of attribute token.



9
10
11
# File 'lib/crawlbase/api.rb', line 9

def token
  @token
end

#urlObject (readonly)

Returns the value of attribute url.



9
10
11
# File 'lib/crawlbase/api.rb', line 9

def url
  @url
end

Instance Method Details

#get(url, options = {}) ⇒ Object

Raises:



22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/crawlbase/api.rb', line 22

def get(url, options = {})
  raise INVALID_URL if url.empty?

  uri = prepare_uri(url, options)
  http = build_http(uri)
  request = Net::HTTP::Get.new(uri.request_uri)
  response = http.request(request)

  prepare_response(response, options[:format])

  self
end

#post(url, data, options = {}) ⇒ Object

Raises:



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/crawlbase/api.rb', line 35

def post(url, data, options = {})
  raise INVALID_URL if url.empty?

  uri = prepare_uri(url, options)
  http = build_http(uri)

  content_type = options[:post_content_type].to_s.include?('json') ? { 'Content-Type': 'text/json' } : nil

  request = Net::HTTP::Post.new(uri.request_uri, content_type)

  if options[:post_content_type].to_s.include?('json')
    request.body = data.to_json
  else
    request.set_form_data(data)
  end

  response = http.request(request)

  prepare_response(response, options[:format])

  self
end