Module: BoxView::Http

Included in:
Session
Defined in:
lib/box_view/http.rb

Instance Method Summary collapse

Instance Method Details

#base_uri(path, params = {}) ⇒ Object



6
7
8
9
10
11
# File 'lib/box_view/http.rb', line 6

def base_uri(path, params = {})
  uri = URI.parse("https://view-api.box.com")
  uri.path = path
  uri.query = URI.encode_www_form(convert_params(params)) if params.any?
  uri
end

#convert_params(params) ⇒ Object



64
65
66
67
68
69
70
71
# File 'lib/box_view/http.rb', line 64

def convert_params(params)
  params.each_pair do |key, val|
    if [Date, Time, DateTime].include?(val.class)
      params[key] = val.iso8601
    end
  end
  params
end

#delete(path, parse = true) ⇒ Object



36
37
38
39
40
# File 'lib/box_view/http.rb', line 36

def delete(path, parse=true)
  uri = base_uri("#{api_prefix}/#{path}")
  req = Net::HTTP::Delete.new(uri.request_uri)
  make_api_request(req, uri, parse)
end

#get(path, params = {}, parse = true) ⇒ Object



13
14
15
16
17
# File 'lib/box_view/http.rb', line 13

def get(path, params={}, parse=true)
  uri = base_uri("#{api_prefix}/#{path}", params)
  req = Net::HTTP::Get.new(uri.to_s)
  make_api_request(req, uri, parse)
end

#make_api_request(req, uri, parse = true) ⇒ Object



42
43
44
45
46
47
# File 'lib/box_view/http.rb', line 42

def make_api_request(req, uri, parse=true)
  puts "BoxView::Http#make_api_request token not availble #{uri}" if self.token.nil? || self.token.empty?
  return if self.token.nil? || self.token.empty?
  req.add_field("Authorization", "Token #{self.token}")
  make_request(req, uri, parse)
end

#make_request(req, uri, parse = true) ⇒ Object



49
50
51
52
53
54
55
56
57
58
# File 'lib/box_view/http.rb', line 49

def make_request(req, uri, parse=true)
  req.add_field("Accept", "text/json")
  n = Net::HTTP.new(uri.host, uri.port)
  n.use_ssl = true
  res = n.start do |http|
    http.request(req)
  end
  puts "BoxView::Http#make_request #{uri} response: #{res.body}#{" Parsing" if parse}"
  parse_response(res, parse)
end

#parse_response(res, parse = true) ⇒ Object



60
61
62
# File 'lib/box_view/http.rb', line 60

def parse_response(res, parse=true)
  parse ? JSON.parse(res.body) : res.body
end

#post(path, body = "", parse = true) ⇒ Object



20
21
22
23
24
25
26
# File 'lib/box_view/http.rb', line 20

def post(path, body="", parse=true)
  uri = base_uri("#{api_prefix}/#{path}")
  req = Net::HTTP::Post.new(uri.request_uri)
  req.body = body
  req.add_field("Content-Type", "application/json")
  make_api_request(req, uri, parse)
end

#put(path, body = "", parse = true) ⇒ Object



28
29
30
31
32
33
34
# File 'lib/box_view/http.rb', line 28

def put(path, body="", parse=true)
  uri = base_uri("#{api_prefix}/#{path}")
  req = Net::HTTP::Put.new(uri.request_uri)
  req.body = body
  req.add_field("Content-Type", "application/json")
  make_api_request(req, uri, parse)
end