cass-fmadata-client 1.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 18a987d2d1861c4756ba663387c9bbe9e4e78c4406b37230e6104b504eb46b9d
4
+ data.tar.gz: 2e262e89f78afd028ac96ff3dbf7d4208a55e0624ab3cd712ee8e0a95645ce04
5
+ SHA512:
6
+ metadata.gz: f7cfe638839f07737ce7c1b9cc18772042bde3ea11e09c9a0f6e91d59afd5906381006f7d8db1b9f8dfbf66e7abef2048d413cba9533733b8fb9544adbc6f4ee
7
+ data.tar.gz: af45a0e61737a9cd8688cc993f6799d7b7b827af8c85cfc7942213e6693773faa0a3d2b0aaa87f3d418d32904aa4eef6cce0d15f132f02f87016713d39d90c1b
@@ -0,0 +1,104 @@
1
+ module CassClient
2
+ class Base
3
+ include Connection
4
+
5
+ def initialize(p={})
6
+ setup_connection(p)
7
+ end
8
+
9
+ def tiger(p = {})
10
+ send_request(p, tiger_url)
11
+ end
12
+
13
+ def city_county(p = {})
14
+ send_request(p, city_county_url)
15
+ end
16
+
17
+ def search_by_address(p = {})
18
+ send_request(p, search_by_address_url)
19
+ end
20
+
21
+ def state_county(p = {})
22
+ send_request(p, state_county_url)
23
+ end
24
+
25
+ def city_zip(p = {})
26
+ send_request(p, city_zip_url)
27
+ end
28
+
29
+ def address(p = {})
30
+ send_request(p, address_url)
31
+ end
32
+
33
+ private
34
+
35
+ def prepare_url(p, url)
36
+ uri = URI.parse(url)
37
+
38
+ #Add params to URI
39
+ uri.query = URI.encode_www_form(p)
40
+ uri
41
+ end
42
+
43
+ def send_request(p, url)
44
+ uri = prepare_url(p, url)
45
+
46
+ request = Net::HTTP::Get.new(uri)
47
+ request["Token"] = @token
48
+
49
+ req_options = {
50
+ use_ssl: uri.scheme == "https",
51
+ }
52
+
53
+ # set try_number for retry logic
54
+ try_number = 0
55
+ begin
56
+ Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
57
+ response = http.request(request)
58
+
59
+ # raise error if the response is other than Success
60
+ raise CassFma::BadResponseError, response.class.name unless response.kind_of? Net::HTTPSuccess
61
+ response
62
+ end
63
+ rescue CassFma::BadResponseError => e
64
+ try_number += 1
65
+
66
+ # raise an error if max retries reached - it's neccessary to inform a client that there
67
+ # still is some issue with the service
68
+ raise(e, custom_error_message(e)) if try_number > @max_retries
69
+
70
+ sleep @retry_interval
71
+ retry
72
+ end
73
+ end
74
+
75
+ # Add some more specifically info to error message
76
+ def custom_error_message(e)
77
+ "#{e.message} (MAX_RETRIES reached)"
78
+ end
79
+
80
+ def tiger_url
81
+ @host + 'tiger/'
82
+ end
83
+
84
+ def city_county_url
85
+ @host + 'city-county/'
86
+ end
87
+
88
+ def search_by_address_url
89
+ @host + 'search-by-address/'
90
+ end
91
+
92
+ def state_county_url
93
+ @host + 'state-county/'
94
+ end
95
+
96
+ def city_zip_url
97
+ @host + 'city-zip/'
98
+ end
99
+
100
+ def address_url
101
+ @host + 'address/'
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,31 @@
1
+ module CassClient
2
+ # Connection module
3
+
4
+ module Connection
5
+ require 'uri'
6
+
7
+ DEFAULT_URL = 'www.example.com'.freeze
8
+ DEFAULT_VERSION = '/api'.freeze
9
+ # retry logic defaults:
10
+ DEFAULT_MAX_RETRIES = 5
11
+ # retry interval in seconds
12
+ DEFAULT_RETRY_INTERVAL = 3
13
+
14
+ def setup_connection(p = {})
15
+ @host = p[:host] || DEFAULT_URL
16
+ @token = p[:token]
17
+ @max_retries = p[:max_retries] || DEFAULT_MAX_RETRIES
18
+ @retry_interval = p[:retry_interval] || DEFAULT_RETRY_INTERVAL
19
+ end
20
+
21
+ def headers
22
+ {
23
+ 'Token': @token
24
+ }
25
+ end
26
+
27
+ def base_url
28
+ URI.parse(@host).to_s
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,10 @@
1
+ require_relative 'cass_fmadata_client/connection'
2
+ require_relative 'cass_fmadata_client/base'
3
+ require 'dotenv/load'
4
+ require 'net/http'
5
+ require 'json'
6
+
7
+ module CassFma
8
+ class Client < CassClient::Base; end
9
+ class BadResponseError < StandardError; end
10
+ end
metadata ADDED
@@ -0,0 +1,90 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cass-fmadata-client
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Brian Long
8
+ - Radosław Stolarski
9
+ - Paweł Jermalonek
10
+ - Ada Borzemska
11
+ autorequire:
12
+ bindir: bin
13
+ cert_chain: []
14
+ date: 2024-11-07 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: pry
18
+ requirement: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - "~>"
21
+ - !ruby/object:Gem::Version
22
+ version: 0.14.2
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: 0.14.2
30
+ - !ruby/object:Gem::Dependency
31
+ name: webmock
32
+ requirement: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - "~>"
35
+ - !ruby/object:Gem::Version
36
+ version: 3.24.0
37
+ type: :development
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: 3.24.0
44
+ - !ruby/object:Gem::Dependency
45
+ name: dotenv
46
+ requirement: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - "~>"
49
+ - !ruby/object:Gem::Version
50
+ version: 2.7.6
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - "~>"
56
+ - !ruby/object:Gem::Version
57
+ version: 2.7.6
58
+ description: Client for CASS API
59
+ email: brian.long@firstmoversadvantage.com
60
+ executables: []
61
+ extensions: []
62
+ extra_rdoc_files: []
63
+ files:
64
+ - lib/cass_fmadata_client.rb
65
+ - lib/cass_fmadata_client/base.rb
66
+ - lib/cass_fmadata_client/connection.rb
67
+ homepage: https://www.fmadata.com/
68
+ licenses:
69
+ - MIT
70
+ metadata: {}
71
+ post_install_message:
72
+ rdoc_options: []
73
+ require_paths:
74
+ - lib
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ requirements: []
86
+ rubygems_version: 3.1.6
87
+ signing_key:
88
+ specification_version: 4
89
+ summary: Client for CASS API
90
+ test_files: []