pina 0.10.1 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a4dd3aab514f9f4c44138264714c6ebe6dbebd20
4
- data.tar.gz: 5f21cbbb3333e7dbe526cf72a552d165c3e88b7a
3
+ metadata.gz: 96fd78cde00f2c1bad9158d3aaea4653f9da6109
4
+ data.tar.gz: 63ee68c11887428db556e1645f13318be08ce797
5
5
  SHA512:
6
- metadata.gz: f384c7d6eb4fd5ecc076faad3969875afd561b12c04220c760e6a59e1fec498205df09901e038b747219fd33438e3aa18a87d668695e4499afa20ae716a3f21a
7
- data.tar.gz: 33a752019b09792ec1dca6a77343056d600e8f18935098325f3e6b12aef899603c62ac9d1c204d82675f11b190f0e153867020e7053902511d7d73071d83d246
6
+ metadata.gz: 510e04baed7121f412732d01358e0445b5bd5290b0fcef672e7a1e36ba9be32ed454167300c00177e85aa92fdd71446331a44336dca3dc43deffde38ea3fd14d
7
+ data.tar.gz: 6b42ec6283b3a8040d295ef0975fec2b3a6d8ffefe238af69508f97fb7465e806597113b29867c4ce4304e16ed3370aead350cd50debe62555f9151797a4974f
data/CHANGELOG.md ADDED
@@ -0,0 +1,18 @@
1
+ # Change Log
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](http://keepachangelog.com/)
5
+ and this project adheres to [Semantic Versioning](http://semver.org/).
6
+
7
+ ## [0.11.0] - 2017-03-10
8
+ ### Changed
9
+ - Typhoeus removed in favour of Net::HTTP
10
+
11
+ ### Added
12
+ - webmock for testing
13
+
14
+ ### Fixed
15
+ - problems with 0 as response code caused by Typhoeus
16
+ - [#9](https://github.com/ucetnictvi-on-line/pina/issues/9) Doesn't raise expeception when connection is refused by Fantozzi server
17
+ - [#10](https://github.com/ucetnictvi-on-line/pina/issues/10) Implement Faraday gem (implemented net::HTTP instead)
18
+
data/lib/pina.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  require 'active_support'
2
2
  require 'base64'
3
3
  require 'json'
4
- require 'typhoeus'
5
4
  require 'virtus'
5
+ require 'net/http'
6
6
  require 'uri'
7
7
 
8
8
  require 'pina/utils/pagination'
@@ -2,53 +2,54 @@ module Pina
2
2
  class RestAdapter
3
3
  class << self
4
4
  def get(resource, id_or_params = nil)
5
- fail ConfigurationNotSet unless Pina.configuration
6
-
7
- request = Typhoeus.get(url(resource, id_or_params), headers: auth)
8
- Response.new(request.response_code, request.body)
5
+ net_http_for(:get, resource, id_or_params)
9
6
  end
10
7
 
11
8
  def post(resource, payload)
12
- fail ConfigurationNotSet unless Pina.configuration
9
+ net_http_for(:post, resource, nil, payload)
10
+ end
13
11
 
14
- request = Typhoeus.post(url(resource, nil), headers: auth
15
- .merge(content_type), body: ActiveSupport::JSON.encode(payload))
12
+ def patch(resource, id, payload)
13
+ net_http_for(:patch, resource, id, payload)
14
+ end
16
15
 
17
- Response.new(request.response_code, request.body)
16
+ def delete(resource, id = nil)
17
+ net_http_for(:delete, resource, id)
18
18
  end
19
19
 
20
- def patch(resource, id, payload)
20
+ private
21
+
22
+ def net_http_for(method, resource, id, payload = nil)
21
23
  fail ConfigurationNotSet unless Pina.configuration
22
24
 
23
- request = Typhoeus.patch(url(resource, id), headers: auth
24
- .merge(content_type), body: ActiveSupport::JSON.encode(payload))
25
+ uri = URI(url(resource, id))
25
26
 
26
- Response.new(request.response_code, request.body)
27
- end
27
+ request = net_http_class_for(method).new(uri)
28
+ headers.each do |k, v|
29
+ request[k] = v
30
+ end
31
+ request.set_form_data(payload.to_h) if payload
28
32
 
29
- def delete(resource, id = nil)
30
- fail ConfigurationNotSet unless Pina.configuration
33
+ response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
34
+ http.request(request)
35
+ end
31
36
 
32
- request = Typhoeus.delete(url(resource, id), headers: auth)
33
- Response.new(request.response_code, request.body)
37
+ Response.new(response.code.to_i, response.body)
34
38
  end
35
39
 
36
- private
40
+ def net_http_class_for(method)
41
+ Kernel.const_get("Net::HTTP::#{method.capitalize}")
42
+ end
37
43
 
38
- def content_type
44
+ def headers
39
45
  {
46
+ 'Authorization' => 'Basic ' + Base64
47
+ .strict_encode64("#{Pina.configuration.email}:#{Pina.configuration.api_token}"),
40
48
  'Accept-Encoding' => 'application/json',
41
49
  'Content-Type' => 'application/json'
42
50
  }
43
51
  end
44
52
 
45
- def auth
46
- { 'Authorization' => 'Basic ' + Base64
47
- .strict_encode64("#{Pina.configuration.email}:"\
48
- "#{Pina.configuration.api_token}")
49
- }
50
- end
51
-
52
53
  def url(resource, id_or_params)
53
54
  if id_or_params.is_a? Hash
54
55
  params = prepare_params_for_request(id_or_params)
@@ -67,8 +68,6 @@ module Pina
67
68
  attr_accessor :body, :status_code
68
69
 
69
70
  def initialize(status_code, body)
70
- raise Pina::ConnectionError if status_code == 0
71
-
72
71
  @status_code = status_code
73
72
  @body = body
74
73
  end
data/lib/pina/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pina
2
- VERSION = '0.10.1'
2
+ VERSION = '0.11.0'
3
3
  end
data/pina.gemspec CHANGED
@@ -28,9 +28,9 @@ Gem::Specification.new do |spec|
28
28
  spec.add_development_dependency 'factory_girl'
29
29
  spec.add_development_dependency 'dotenv'
30
30
  spec.add_development_dependency 'simplecov'
31
- spec.add_development_dependency('codeclimate-test-reporter')
31
+ spec.add_development_dependency 'codeclimate-test-reporter'
32
+ spec.add_development_dependency 'webmock'
32
33
 
33
- spec.add_runtime_dependency 'typhoeus'
34
34
  spec.add_runtime_dependency 'virtus'
35
35
  spec.add_runtime_dependency 'activesupport'
36
36
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pina
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.1
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Hronek
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-13 00:00:00.000000000 Z
11
+ date: 2017-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -151,13 +151,13 @@ dependencies:
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
- name: typhoeus
154
+ name: webmock
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - ">="
158
158
  - !ruby/object:Gem::Version
159
159
  version: '0'
160
- type: :runtime
160
+ type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
@@ -205,6 +205,7 @@ files:
205
205
  - ".ruby-gemset"
206
206
  - ".ruby-version"
207
207
  - ".travis.yml"
208
+ - CHANGELOG.md
208
209
  - Gemfile
209
210
  - LICENSE
210
211
  - README.md