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 +7 -0
- data/lib/cass_fmadata_client/base.rb +104 -0
- data/lib/cass_fmadata_client/connection.rb +31 -0
- data/lib/cass_fmadata_client.rb +10 -0
- metadata +90 -0
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: []
|