trav3 0.2.0 → 0.2.1

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.
data/lib/trav3/get.rb CHANGED
@@ -1,27 +1,30 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'net/http'
3
4
  require 'uri'
4
5
  require 'json'
5
6
 
6
7
  module Trav3
7
8
  module GET
9
+ # rubocop:disable Metrics/MethodLength
8
10
  def self.call(travis, url, raw_reply = false)
9
11
  uri = URI(url)
10
12
  req = Net::HTTP::Get.new(uri.request_uri)
11
- travis.headers.each_pair { |header, value|
13
+ travis.headers.each_pair do |header, value|
12
14
  req[header] = value
13
- }
15
+ end
14
16
  http = Net::HTTP.new(uri.host, uri.port)
15
- http.use_ssl = (uri.scheme == "https")
17
+ http.use_ssl = (uri.scheme == 'https')
16
18
  response = http.request(req)
17
19
 
18
- if raw_reply
19
- response.body
20
- elsif Net::HTTPOK == response.code_type
20
+ return response.body if raw_reply
21
+
22
+ if Net::HTTPOK == response.code_type
21
23
  Success.new(travis, response)
22
24
  else
23
25
  RequestError.new(travis, response)
24
26
  end
25
27
  end
28
+ # rubocop:enable Metrics/MethodLength
26
29
  end
27
30
  end
data/lib/trav3/headers.rb CHANGED
@@ -12,7 +12,7 @@ module Trav3
12
12
  def build(**args)
13
13
  @heads ||= {}
14
14
 
15
- for (key, value) in args
15
+ args.each do |(key, value)|
16
16
  @heads[key] = value
17
17
  end
18
18
 
@@ -24,7 +24,8 @@ module Trav3
24
24
  end
25
25
 
26
26
  def +(other)
27
- raise ArgumentError, "Invalid type provided." unless other.is_a?(Headers)
27
+ raise TypeError, "Headers type expected, #{other.class} given" unless other.is_a? Headers
28
+
28
29
  @heads.merge(other.instance_variable_get(:@heads))
29
30
 
30
31
  self
data/lib/trav3/options.rb CHANGED
@@ -15,7 +15,7 @@ module Trav3
15
15
  def build(**args)
16
16
  @opts ||= []
17
17
 
18
- for (key, value) in args
18
+ args.each do |(key, value)|
19
19
  remove(key)
20
20
  @opts.push("#{key}=#{value}")
21
21
  end
@@ -24,13 +24,26 @@ module Trav3
24
24
  end
25
25
 
26
26
  def remove(key)
27
- @opts = @opts.keep_if {|item, _|
28
- !(/^#{key}=/ === "#{item}")
29
- }
27
+ return_value = nil
28
+
29
+ @opts = @opts.keep_if do |item, value|
30
+ if entry_match?(key, item)
31
+ return_value = value
32
+ false
33
+ else
34
+ true
35
+ end
36
+ end
37
+
38
+ return_value
39
+ end
40
+
41
+ def reset!
42
+ @opts = []
30
43
  end
31
44
 
32
45
  def +(other)
33
- raise ArgumentError, "Invalid type provided." unless other.is_a?(Options)
46
+ raise TypeError, "Options type expected, #{other.class} given" unless other.is_a? Options
34
47
 
35
48
  @opts += other.instance_variable_get(:@opts)
36
49
 
@@ -42,7 +55,13 @@ module Trav3
42
55
  end
43
56
 
44
57
  def to_h
45
- @opts.map {|item| item.split("=") }.to_h
58
+ @opts.map { |item| item.split('=') }.to_h
59
+ end
60
+
61
+ private
62
+
63
+ def entry_match?(entry, item)
64
+ /^#{entry}=/.match? item.to_s
46
65
  end
47
66
  end
48
67
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Trav3
3
4
  class Pagination
4
5
  def initialize(travis, result)
@@ -11,19 +12,19 @@ module Trav3
11
12
  end
12
13
 
13
14
  def next
14
- get("#{API_ROOT}#{self.dig("@pagination").dig("next").dig("@href")}")
15
+ get("#{API_ROOT}#{dig('@pagination').dig('next').dig('@href')}")
15
16
  end
16
17
 
17
18
  def first
18
- get("#{API_ROOT}#{self.dig("@pagination").dig("first").dig("@href")}")
19
+ get("#{API_ROOT}#{dig('@pagination').dig('first').dig('@href')}")
19
20
  end
20
21
 
21
22
  def last
22
- get("#{API_ROOT}#{self.dig("@pagination").dig("last").dig("@href")}")
23
+ get("#{API_ROOT}#{dig('@pagination').dig('last').dig('@href')}")
23
24
  end
24
25
 
25
- def get(x)
26
- Trav3::GET.(travis, x)
26
+ def get(url)
27
+ Trav3::GET.call(travis, url)
27
28
  end
28
29
  private :get
29
30
 
data/lib/trav3/post.rb CHANGED
@@ -1,26 +1,31 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'net/http'
3
4
  require 'uri'
4
5
  require 'json'
5
6
 
6
7
  module Trav3
7
8
  module POST
8
- def self.call(travis, url, fields={})
9
+ # rubocop:disable Metrics/MethodLength
10
+ def self.call(travis, url, **fields)
9
11
  uri = URI( url.sub(/\?.*$/, '') )
10
12
  req = Net::HTTP::Post.new(uri.request_uri)
11
- travis.headers.each_pair { |header, value|
13
+ travis.headers.each_pair do |header, value|
12
14
  req[header] = value
13
- }
15
+ end
16
+ body = fields.delete(:body)
17
+ req.body = body if body
14
18
  req.set_form_data(**fields) unless fields.empty?
15
19
  http = Net::HTTP.new(uri.host, uri.port)
16
- http.use_ssl = (uri.scheme == "https")
20
+ http.use_ssl = (uri.scheme == 'https')
17
21
  response = http.request(req)
18
-
22
+
19
23
  if [Net::HTTPAccepted, Net::HTTPOK].include? response.code_type
20
24
  Success.new(travis, response)
21
25
  else
22
26
  RequestError.new(travis, response)
23
27
  end
24
28
  end
29
+ # rubocop:enable Metrics/MethodLength
25
30
  end
26
31
  end
data/lib/trav3/result.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'forwardable'
3
4
 
4
5
  module Trav3
@@ -20,7 +21,7 @@ module Trav3
20
21
 
21
22
  class Unimplemented < StandardError
22
23
  def message
23
- "This feature is not implemented."
24
+ 'This feature is not implemented.'
24
25
  end
25
26
  end
26
27
 
@@ -29,10 +30,10 @@ module Trav3
29
30
  attr_reader :travis
30
31
  def_delegators :@json, :[], :dig, :keys, :values, :has_key?
31
32
  def_delegators :@response, :code, :code_type, :uri, :message, :read_header,
32
- :header, :value, :entity, :response, :body,
33
- :decode_content, :msg, :reading_body, :read_body,
34
- :http_version, :connection_close?, :connection_keep_alive?,
35
- :initialize_http_header, :get_fields, :each_header
33
+ :header, :value, :entity, :response, :body, :decode_content,
34
+ :msg, :reading_body, :read_body, :http_version,
35
+ :connection_close?, :connection_keep_alive?,
36
+ :initialize_http_header, :get_fields, :each_header
36
37
  def initialize(travis, response)
37
38
  @travis = travis
38
39
  @response = response
@@ -40,11 +41,16 @@ module Trav3
40
41
  end
41
42
 
42
43
  def inspect
43
- "<#{self.class} Response: keys = #{self.keys}>"
44
+ "<#{self.class} Response: keys = #{keys}>"
45
+ end
46
+
47
+ def success?
48
+ raise Unimplemented
44
49
  end
45
50
 
46
- def success?; raise Unimplemented end
47
- def failure?; raise Unimplemented end
51
+ def failure?
52
+ raise Unimplemented
53
+ end
48
54
  private :travis
49
55
  end
50
56
 
@@ -53,12 +59,22 @@ module Trav3
53
59
  Trav3::Pagination.new(travis, self)
54
60
  end
55
61
 
56
- def success?; true end
57
- def failure?; false end
62
+ def success?
63
+ true
64
+ end
65
+
66
+ def failure?
67
+ false
68
+ end
58
69
  end
59
70
 
60
71
  class RequestError < Response
61
- def success?; false end
62
- def failure?; true end
72
+ def success?
73
+ false
74
+ end
75
+
76
+ def failure?
77
+ true
78
+ end
63
79
  end
64
80
  end
data/lib/trav3/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Trav3
2
- VERSION = "0.2.0"
2
+ VERSION = '0.2.1'.freeze
3
3
  end
data/trav3.gemspec CHANGED
@@ -1,31 +1,30 @@
1
-
2
- lib = File.expand_path("../lib", __FILE__)
1
+ lib = File.expand_path('lib', __dir__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require "trav3/version"
3
+ require 'trav3/version'
5
4
 
6
5
  Gem::Specification.new do |spec|
7
- spec.name = "trav3"
6
+ spec.name = 'trav3'
8
7
  spec.version = Trav3::VERSION
9
- spec.authors = ["Daniel P. Clark"]
10
- spec.email = ["6ftdan@gmail.com"]
8
+ spec.authors = ['Daniel P. Clark']
9
+ spec.email = ['6ftdan@gmail.com']
11
10
 
12
- spec.summary = %q{Simple Travis V3 API Client}
13
- spec.description = %q{A Simple client abstraction for the Travis V3 API}
14
- spec.homepage = "https://github.com/danielpclark/trav3"
15
- spec.license = "MIT"
11
+ spec.summary = 'Simple Travis V3 API Client'
12
+ spec.description = 'A Simple client abstraction for the Travis V3 API'
13
+ spec.homepage = 'https://github.com/danielpclark/trav3'
14
+ spec.license = 'MIT'
16
15
 
17
16
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
- f.match(%r{^(test|spec|features)/})
17
+ f.match(/^(test|spec|features)\//)
19
18
  end
20
- spec.bindir = "exe"
21
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
- spec.require_paths = ["lib"]
19
+ spec.bindir = 'exe'
20
+ spec.executables = spec.files.grep(/^exe\//) { |f| File.basename(f) }
21
+ spec.require_paths = ['lib']
23
22
 
24
23
  # Generate YARD DOC on install
25
- spec.metadata["yard.run"] = "yri"
24
+ spec.metadata['yard.run'] = 'yri'
26
25
 
27
- spec.add_development_dependency "bundler", "~> 1.16"
28
- spec.add_development_dependency "rake", "~> 10.0"
29
- spec.add_development_dependency "rspec", "~> 3.8"
30
- spec.add_development_dependency "factory_bot", "~> 4.11"
26
+ spec.add_development_dependency 'bundler', '~> 1.16'
27
+ spec.add_development_dependency 'factory_bot', '~> 4.11'
28
+ spec.add_development_dependency 'rake', '~> 10.0'
29
+ spec.add_development_dependency 'rspec', '~> 3.8'
31
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trav3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel P. Clark
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-01-12 00:00:00.000000000 Z
11
+ date: 2019-01-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -25,47 +25,47 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.16'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: factory_bot
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '4.11'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '4.11'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.8'
47
+ version: '10.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.8'
54
+ version: '10.0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: factory_bot
56
+ name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '4.11'
61
+ version: '3.8'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '4.11'
68
+ version: '3.8'
69
69
  description: A Simple client abstraction for the Travis V3 API
70
70
  email:
71
71
  - 6ftdan@gmail.com
@@ -73,8 +73,10 @@ executables: []
73
73
  extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
+ - ".codeclimate.yml"
76
77
  - ".gitignore"
77
78
  - ".rspec"
79
+ - ".rubocop.yml"
78
80
  - ".travis.yml"
79
81
  - ".yardopts"
80
82
  - Gemfile