basic_api_client 1.1.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/basic_api_client.rb +46 -44
  3. metadata +4 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2ec4537be034ae24cc1669827f84ff405a2209c8
4
- data.tar.gz: 454c667842535fce5112bedfcc56746e7f6c8d6f
3
+ metadata.gz: 20e7c36a1f799484ef9491436647986933287950
4
+ data.tar.gz: a979582b06128b2976b261eb3009dfc15ca52c23
5
5
  SHA512:
6
- metadata.gz: 04ca334680d7de2b799a3c6c670275a54aca7e500c2dfdff5521e9986b55638835f6625299d20706be6e3ebbf0123d4d95daff5f56f4da025ae553859ca113da
7
- data.tar.gz: f03c73904c65ccd3f2b93c5c690ae3494b28be7b02f020018cd7304a5b7db0ef348b4c1355d60e8ede16f108477d6c67b3e9bee378d7d72ba10c4790a181a3bf
6
+ metadata.gz: 4650dd17e0c88fbc905d4d1f5b615fc28d5908472c7922f8bc267418ecea83bb42b1a59ad614cdc88a59e771acff1d9f5089f0827296decbf29ec2ff10726eea
7
+ data.tar.gz: 3f56203af9fca4bc82f10c4fa817ee049fc8aaf8cb5bc6e5f85c99af848746369edb14862292ca62ed1af631dc23348894b32800c67c894061fd790ae02fe623
@@ -1,77 +1,79 @@
1
- require 'faraday'
1
+ require 'curb'
2
2
  require 'json'
3
3
 
4
4
  class BasicApiClient
5
5
  AUTH_HEADERS = %w{ access-token token-type uid expiry client }.sort
6
6
 
7
7
  attr_reader :headers
8
- attr_accessor :last_response
8
+ attr_accessor :last_response, :last_return
9
9
 
10
- def initialize(cn, password, site, auth_url)
10
+ def initialize(cn, password, site, auth_path)
11
11
  @cn = cn
12
12
  @password = password
13
13
  @site = site
14
- @auth_url = auth_url
14
+ @site.sub!(/\/+$/, '')
15
+ @auth_url = url_for(auth_path)
15
16
  end
16
17
 
17
18
  def headers
18
19
  @headers ||= {}
19
20
  end
20
21
 
21
- def conn
22
- @conn ||= begin
23
- Faraday.new(url: @site) do |faraday|
24
- faraday.request :url_encoded
25
- faraday.response :logger
26
- faraday.adapter Faraday.default_adapter
27
- end
28
- end
22
+ def authorize
23
+ @headers = {}
24
+ params = { cn: @cn, password: @password }
25
+ Curl.post(@auth_url, params, &method(:setup_request))
26
+ last_return
29
27
  end
30
28
 
31
- def authorize
32
- res = conn.post do |req|
33
- req.url @auth_url
34
- req.params['cn'] = @cn
35
- req.params['password'] = @password
36
- end
29
+ def get(path, params = {})
30
+ authorize unless auth_headers?
37
31
 
38
- handle_response(res)
32
+ url = url_for(path)
33
+ Curl.get(url, params, &method(:setup_request))
34
+ last_return
39
35
  end
40
36
 
41
- def get(url, params = {})
37
+ def post(path, params = {})
42
38
  authorize unless auth_headers?
43
39
 
44
- res = conn.get do |req|
45
- req.url url
46
- req.params = params.merge(req.params)
47
- req.headers = headers
48
- end
40
+ url = url_for(path)
41
+ Curl.post(url, params, &method(:setup_request))
42
+ last_return
43
+ end
49
44
 
50
- handle_response(res)
45
+ private
46
+ def url_for(path)
47
+ path = path.sub(/^\/+/, '')
48
+ [@site, path].join('/')
51
49
  end
52
50
 
53
- def post(url, params = {})
54
- authorize unless auth_headers?
51
+ def setup_request(req)
52
+ req.headers = headers
53
+ req.on_failure &method(:handle_failure)
54
+ req.on_missing &method(:handle_failure)
55
+ req.on_success &method(:handle_success)
56
+ end
55
57
 
56
- res = conn.post do |req|
57
- req.url url
58
- req.params = params.merge(req.params)
59
- req.headers = headers
60
- end
58
+ def handle_success(res)
59
+ @last_response = res
60
+ @headers = parse_headers(res).select { |name, _|
61
+ AUTH_HEADERS.include?(name) }
62
+ @last_return = JSON.parse(res.body_str)
63
+ end
61
64
 
62
- handle_response(res)
65
+ def handle_failure(res, code)
66
+ @last_response = res
67
+ @headers = {}
68
+ @last_return = nil
63
69
  end
64
70
 
65
- private
66
- def handle_response(res)
67
- self.last_response = res
68
- if res.success?
69
- @headers = res.headers.select { |k, v| AUTH_HEADERS.include?(k) }
70
- JSON.parse(res.body)
71
- else
72
- @headers = {}
73
- false
74
- end
71
+ def parse_headers(res)
72
+ lines = res.header_str.split("\r\n").drop(1)
73
+ lines.each_with_object({}) { |line, headers|
74
+ name, value = line.split(": ")
75
+ name.downcase!
76
+ headers[name] = value }
75
77
  end
76
78
 
77
79
  def auth_headers?
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: basic_api_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - jphager2
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-11 00:00:00.000000000 Z
11
+ date: 2016-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: faraday
14
+ name: curb
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -67,7 +67,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
67
67
  version: '0'
68
68
  requirements: []
69
69
  rubyforge_project:
70
- rubygems_version: 2.4.6
70
+ rubygems_version: 2.5.1
71
71
  signing_key:
72
72
  specification_version: 4
73
73
  summary: Example of a basic api client that keeps access-token headers