trav3 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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