tops_connect 0.6.3 → 0.7.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
  SHA256:
3
- metadata.gz: c1da159c957169c864437ed7a8125f908903a22f529618e5ac44ea113eabe7a4
4
- data.tar.gz: e4c412f6145319bb92afe3347fbcaa9e96c30e7d0bb1436ca3602bfa20a7f846
3
+ metadata.gz: 25146db0b362c11ca40ef5bbdeee94bdf96b553621c2e17ec89a71ddf4191d3a
4
+ data.tar.gz: b8452b408a025c569ada9f92bfcb98634a57e530b3c40d91fab710b8b33a240c
5
5
  SHA512:
6
- metadata.gz: e68a54baaeb1e084cc883432a344faf46a3563234365319c0462cf9e01b51a5035a029869af8d8f30534acc730133b32da627879695302188b74f9c8d5baf56c
7
- data.tar.gz: e6712c7f64c7c30d529e5436e08fdac9a39c051339268b7df679757c29083fbf183607ad89bdd978462a5df7394efae2a311bf7d0f7684d7681fc3da70c8002a
6
+ metadata.gz: b1fbaa926f85020a68ea1dc3025066959d071d5a359a9a486b95fba4b1741ad20ed2ddc3bb0fb9405fd35246d5f22fc9113f80064b9ed148e31b912f60bdba7c
7
+ data.tar.gz: e81c9290de6fc9ba3ac4aa036bef8be2421fc6d5885afba375b78890c94b2edef1a2fee1b5c4ce407385e35190038cdd88bb7036f18a1cecb9bc5a33d1ada360
data/.rubocop.yml CHANGED
@@ -10,3 +10,11 @@ Layout/MultilineMethodCallIndentation:
10
10
  Metrics/BlockLength:
11
11
  Exclude:
12
12
  - 'spec/**/*.rb'
13
+
14
+ Style/Copyright:
15
+ # AutocorrectNotice: |
16
+ # # Copyright (c) 2019 Valencia Management Group
17
+ # # All rights reserved.
18
+ Notice: '^# Copyright (\(c\) )?2[0-9]{3} .+'
19
+ Exclude:
20
+ - 'bin/**/*'
data/Gemfile CHANGED
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Copyright (c) 2019 Valencia Management Group
4
+ # All rights reserved.
5
+
3
6
  source 'https://rubygems.org'
4
7
 
5
8
  # Specify your gem's dependencies in tops_connect.gemspec
data/Rakefile CHANGED
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Copyright (c) 2019 Valencia Management Group
4
+ # All rights reserved.
5
+
3
6
  require 'rspec/core/rake_task'
4
7
  require 'bundler/gem_tasks'
5
8
 
data/lib/tops_connect.rb CHANGED
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Copyright (c) 2019 Valencia Management Group
4
+ # All rights reserved.
5
+
3
6
  require 'base64'
4
7
  require 'httparty'
5
8
  require 'json'
@@ -15,6 +18,7 @@ require 'tops_connect/base'
15
18
  require 'tops_connect/community'
16
19
  require 'tops_connect/owner'
17
20
  require 'tops_connect/property'
21
+ require 'tops_connect/address'
18
22
 
19
23
  require 'tops_connect/configuration'
20
24
  require 'tops_connect/client'
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright (c) 2019 Valencia Management Group
4
+ # All rights reserved.
5
+
6
+ module TopsConnect
7
+ class Address < Base
8
+ attr_reader :owner
9
+
10
+ TYPES = {
11
+ 'Main' => 1,
12
+ 'Home' => 2,
13
+ 'Work' => 3,
14
+ 'Other' => 4,
15
+ 'Return Payment' => 5,
16
+ 'Lockbox' => 6,
17
+ 'Community Office' => 7,
18
+ 'Management Office' => 8,
19
+ 'Alternate' => 9,
20
+ 'Billing' => 10,
21
+ 'Property' => 11,
22
+ 'Shipping' => 12
23
+ }.freeze
24
+
25
+ def initialize(data, owner:)
26
+ super(data)
27
+
28
+ @owner = owner
29
+ end
30
+
31
+ def type
32
+ @data['Type']['Name']
33
+ end
34
+
35
+ def to_s
36
+ lines = address_lines
37
+
38
+ return if lines.empty?
39
+
40
+ # Foreign addresses do not have City/State/Zip
41
+ if @data['City'] && @data['State'] && @data['Zip']
42
+ lines << "#{@data['City']}, #{@data['State']} #{@data['Zip']}"
43
+ end
44
+
45
+ lines.map(&:strip).join("\n")
46
+ end
47
+ alias formatted to_s
48
+
49
+ protected
50
+
51
+ def address_lines
52
+ lines = []
53
+
54
+ if @data['AddressLine1'].match?(/[[:graph:]]/)
55
+ lines << @data['AddressLine1']
56
+ end
57
+
58
+ if @data['AddressLine2'].match?(/[[:graph:]]/)
59
+ lines << @data['AddressLine2']
60
+ end
61
+
62
+ lines
63
+ end
64
+ end
65
+ end
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Copyright (c) 2019 Valencia Management Group
4
+ # All rights reserved.
5
+
3
6
  module TopsConnect
4
7
  class Base
5
8
  attr_reader :data
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Copyright (c) 2019 Valencia Management Group
4
+ # All rights reserved.
5
+
3
6
  module TopsConnect
4
7
  class Client
5
8
  include HTTParty
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Copyright (c) 2019 Valencia Management Group
4
+ # All rights reserved.
5
+
3
6
  module TopsConnect
4
7
  module Communities
5
8
  # Method: GET
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Copyright (c) 2019 Valencia Management Group
4
+ # All rights reserved.
5
+
3
6
  module TopsConnect
4
7
  class Community < Base
5
8
  def community_key
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Copyright (c) 2019 Valencia Management Group
4
+ # All rights reserved.
5
+
3
6
  module TopsConnect
4
7
  class Configuration
5
8
  attr_reader :subscription_key, :client_id, :software_key, :zone
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Copyright (c) 2019 Valencia Management Group
4
+ # All rights reserved.
5
+
3
6
  module TopsConnect
4
7
  class ApiError < ::RuntimeError
5
8
  def initialize(response)
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Copyright (c) 2019 Valencia Management Group
4
+ # All rights reserved.
5
+
3
6
  module TopsConnect
4
7
  class Owner < Base
5
8
  def owner_key
@@ -7,10 +10,16 @@ module TopsConnect
7
10
  end
8
11
  alias id owner_key
9
12
 
13
+ def addresses
14
+ @addresses ||= data['Addresses'].map do |record|
15
+ TopsConnect::Address.new(record, owner: self)
16
+ end
17
+ end
18
+
10
19
  def alternate_mailing_addresses
11
20
  data['Addresses']
12
- .select { |row| row['Type']['Name'] == 'Alternate' }
13
- .map { |row| offsite_address(row) }
21
+ .select { |address| address.type == 'Alternate' }
22
+ .map(&:formatted)
14
23
  .compact
15
24
  end
16
25
 
@@ -93,31 +102,5 @@ module TopsConnect
93
102
  def tops_id
94
103
  data['Metadata']['TopsId']
95
104
  end
96
-
97
- protected
98
-
99
- def offsite_address(address)
100
- lines = address_lines(address)
101
-
102
- return if lines.empty?
103
-
104
- lines << "#{address['City']}, #{address['State']} #{address['Zip']}"
105
-
106
- lines.map(&:strip).join("\n")
107
- end
108
-
109
- def address_lines(address)
110
- lines = []
111
-
112
- if address['AddressLine1'].match?(/[[:graph:]]/)
113
- lines << address['AddressLine1']
114
- end
115
-
116
- if address['AddressLine2'].match?(/[[:graph:]]/)
117
- lines << address['AddressLine2']
118
- end
119
-
120
- lines
121
- end
122
105
  end
123
106
  end
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Copyright (c) 2019 Valencia Management Group
4
+ # All rights reserved.
5
+
3
6
  module TopsConnect
4
7
  module Owners
5
8
  # Method: GET
@@ -34,5 +37,12 @@ module TopsConnect
34
37
  def charges(owner_key)
35
38
  get "/charge/#{owner_key}"
36
39
  end
40
+
41
+ # Method: PUT
42
+ # Endpoint: Owner_Put
43
+ # Returns: Hash
44
+ def update_owner!(owner_key, data)
45
+ put "/owner/#{owner_key}", body: data
46
+ end
37
47
  end
38
48
  end
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Copyright (c) 2019 Valencia Management Group
4
+ # All rights reserved.
5
+
3
6
  module TopsConnect
4
7
  module Properties
5
8
  # Method: GET
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Copyright (c) 2019 Valencia Management Group
4
+ # All rights reserved.
5
+
3
6
  module TopsConnect
4
7
  class Property < Base
5
8
  def property_key
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Copyright (c) 2019 Valencia Management Group
4
+ # All rights reserved.
5
+
3
6
  module TopsConnect
4
- VERSION = '0.6.3'
7
+ VERSION = '0.7.0'
5
8
  end
data/tops_connect.gemspec CHANGED
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Copyright (c) 2019 Valencia Management Group
4
+ # All rights reserved.
5
+
3
6
  lib = File.expand_path('lib', __dir__)
4
7
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
8
  require 'tops_connect/version'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tops_connect
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steven Hoffman
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-05-24 00:00:00.000000000 Z
11
+ date: 2019-12-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -97,6 +97,7 @@ files:
97
97
  - bin/console
98
98
  - bin/setup
99
99
  - lib/tops_connect.rb
100
+ - lib/tops_connect/address.rb
100
101
  - lib/tops_connect/base.rb
101
102
  - lib/tops_connect/client.rb
102
103
  - lib/tops_connect/communities.rb
@@ -128,7 +129,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
129
  - !ruby/object:Gem::Version
129
130
  version: '0'
130
131
  requirements: []
131
- rubygems_version: 3.0.3
132
+ rubygems_version: 3.1.2
132
133
  signing_key:
133
134
  specification_version: 4
134
135
  summary: Make use of the Tops Connect API