Module: ADN::API

Defined in:
lib/adn/api.rb,
lib/adn/api/file.rb,
lib/adn/api/post.rb,
lib/adn/api/user.rb,
lib/adn/api/token.rb,
lib/adn/api/filter.rb,
lib/adn/api/stream.rb,
lib/adn/api/message.rb,
lib/adn/api/response.rb,
lib/adn/api/subscription.rb

Defined Under Namespace

Modules: File, Filter, Message, Post, Stream, Subscription, Token, User Classes: Response

Constant Summary collapse

Error =
Class.new StandardError

Class Method Summary collapse

Class Method Details

.construct_request(verb, url) ⇒ Object



21
22
23
24
25
26
27
28
29
# File 'lib/adn/api.rb', line 21

def construct_request(verb, url)
  http_method = case verb
    when :post then Net::HTTP::Post
    when :put then Net::HTTP::Put
    when :delete then Net::HTTP::Delete
    else Net::HTTP::Get
  end
  http_method.new(url)
end

.delete(url) ⇒ Object



56
57
58
59
# File 'lib/adn/api.rb', line 56

def delete(url)
  request = construct_request(:delete, url)
  perform(request)
end

.get(url, params = nil) ⇒ Object



31
32
33
34
35
# File 'lib/adn/api.rb', line 31

def get(url, params = nil)
  url = params.nil? ? url : [url, URI.encode_www_form(params)].join("?")
  request = construct_request(:get, url)
  perform(request)
end

.perform(request) ⇒ Object



12
13
14
15
16
17
18
19
# File 'lib/adn/api.rb', line 12

def perform(request)
  request.add_field("Authorization", "Bearer #{ADN.token}")
  response = JSON.parse ADN::HTTP.request(request).body

  Response.new(response).tap { |r|
    raise ADN::API::Error, r.error_message if r.has_error?
  }
end

.post(url, params = nil) ⇒ Object



37
38
39
40
41
42
# File 'lib/adn/api.rb', line 37

def post(url, params = nil)
  request = construct_request(:post, url)
  request.add_field('Content-Type', 'application/json')
  request.body = params.to_json if params
  perform(request)
end

.post_multipart(url, *http_args) ⇒ Object



44
45
46
47
# File 'lib/adn/api.rb', line 44

def post_multipart(url, *http_args)
  request = Net::HTTP::Post::Multipart.new(url, *http_args)
  perform(request)
end

.put(url, params = nil) ⇒ Object



49
50
51
52
53
54
# File 'lib/adn/api.rb', line 49

def put(url, params = nil)
  request = construct_request(:put, url)
  request.add_field('Content-Type', 'application/json')
  request.body = params.to_json if params
  perform(request)
end