pina 0.10.1 → 0.11.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.
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