samwise 0.1.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.
- checksums.yaml +7 -0
- data/.document +5 -0
- data/.gitignore +5 -0
- data/.rdoc_options +16 -0
- data/.rspec +1 -0
- data/.travis.yml +6 -0
- data/CONTRIBUTING.md +19 -0
- data/ChangeLog.md +7 -0
- data/Gemfile +3 -0
- data/LICENSE.md +31 -0
- data/README.md +97 -0
- data/Rakefile +25 -0
- data/lib/samwise.rb +4 -0
- data/lib/samwise/client.rb +27 -0
- data/lib/samwise/protocol.rb +10 -0
- data/lib/samwise/util.rb +15 -0
- data/lib/samwise/version.rb +4 -0
- data/samwise.gemspec +42 -0
- data/spec/client_spec.rb +71 -0
- data/spec/protocol_spec.rb +13 -0
- data/spec/samwise_spec.rb +8 -0
- data/spec/spec_helper.rb +29 -0
- data/spec/util_spec.rb +19 -0
- data/spec/vcr/Samwise_Client.yml +454 -0
- metadata +198 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 8af5c83add66f563dd036246aae10b326d2dda50
|
|
4
|
+
data.tar.gz: 8ff5bfb1a9ca8a6c56ea2cd027d0fe51123de03d
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 17c7b87e130dfeb8125d957090314176aa2e6517ed0afb102b1386bee70d1e64558eb428c5aa922c569289a646c3471bd0e2f950fbedd77a51e686421450b878
|
|
7
|
+
data.tar.gz: 4a85c96cfcc7cb0a67fc6cababdb26eda6f31913d91e8e372309ecda68537e1ac7565d2da79e528d9639f0c48ad4e50858f898a29e161d90b978f15a756e7f1a
|
data/.document
ADDED
data/.gitignore
ADDED
data/.rdoc_options
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
--- !ruby/object:RDoc::Options
|
|
2
|
+
encoding: UTF-8
|
|
3
|
+
static_path: []
|
|
4
|
+
rdoc_include:
|
|
5
|
+
- .
|
|
6
|
+
charset: UTF-8
|
|
7
|
+
exclude:
|
|
8
|
+
hyperlink_all: false
|
|
9
|
+
line_numbers: false
|
|
10
|
+
main_page: README.md
|
|
11
|
+
markup: markdown
|
|
12
|
+
show_hash: false
|
|
13
|
+
tab_width: 8
|
|
14
|
+
title: samwise Documentation
|
|
15
|
+
visibility: :protected
|
|
16
|
+
webcvs:
|
data/.rspec
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
--colour --format documentation
|
data/.travis.yml
ADDED
data/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
## Welcome!
|
|
2
|
+
|
|
3
|
+
We're so glad you're thinking about contributing to an 18F open source project! If you're unsure about anything, just ask -- or submit the issue or pull request anyway. The worst that can happen is you'll be politely asked to change something. We love all friendly contributions.
|
|
4
|
+
|
|
5
|
+
We want to ensure a welcoming environment for all of our projects. Our staff follow the [18F Code of Conduct](https://github.com/18F/code-of-conduct/blob/master/code-of-conduct.md) and all contributors should do the same.
|
|
6
|
+
|
|
7
|
+
We encourage you to read this project's CONTRIBUTING policy (you are here), its [LICENSE](LICENSE.md), and its [README](README.md).
|
|
8
|
+
|
|
9
|
+
If you have any questions or want to read more, check out the [18F Open Source Policy GitHub repository]( https://github.com/18f/open-source-policy), or just [shoot us an email](mailto:18f@gsa.gov).
|
|
10
|
+
|
|
11
|
+
## Public domain
|
|
12
|
+
|
|
13
|
+
This project is in the public domain within the United States, and
|
|
14
|
+
copyright and related rights in the work worldwide are waived through
|
|
15
|
+
the [CC0 1.0 Universal public domain dedication](https://creativecommons.org/publicdomain/zero/1.0/).
|
|
16
|
+
|
|
17
|
+
All contributions to this project will be released under the CC0
|
|
18
|
+
dedication. By submitting a pull request, you are agreeing to comply
|
|
19
|
+
with this waiver of copyright interest.
|
data/ChangeLog.md
ADDED
data/Gemfile
ADDED
data/LICENSE.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
As a work of the United States Government, this project is in the
|
|
2
|
+
public domain within the United States.
|
|
3
|
+
|
|
4
|
+
Additionally, we waive copyright and related rights in the work
|
|
5
|
+
worldwide through the CC0 1.0 Universal public domain dedication.
|
|
6
|
+
|
|
7
|
+
## CC0 1.0 Universal Summary
|
|
8
|
+
|
|
9
|
+
This is a human-readable summary of the [Legal Code (read the full text)](https://creativecommons.org/publicdomain/zero/1.0/legalcode).
|
|
10
|
+
|
|
11
|
+
### No Copyright
|
|
12
|
+
|
|
13
|
+
The person who associated a work with this deed has dedicated the work to
|
|
14
|
+
the public domain by waiving all of his or her rights to the work worldwide
|
|
15
|
+
under copyright law, including all related and neighboring rights, to the
|
|
16
|
+
extent allowed by law.
|
|
17
|
+
|
|
18
|
+
You can copy, modify, distribute and perform the work, even for commercial
|
|
19
|
+
purposes, all without asking permission.
|
|
20
|
+
|
|
21
|
+
### Other Information
|
|
22
|
+
|
|
23
|
+
In no way are the patent or trademark rights of any person affected by CC0,
|
|
24
|
+
nor are the rights that other persons may have in the work or in how the
|
|
25
|
+
work is used, such as publicity or privacy rights.
|
|
26
|
+
|
|
27
|
+
Unless expressly stated otherwise, the person who associated a work with
|
|
28
|
+
this deed makes no warranties about the work, and disclaims liability for
|
|
29
|
+
all uses of the work, to the fullest extent permitted by applicable law.
|
|
30
|
+
When using or citing the work, you should not imply endorsement by the
|
|
31
|
+
author or the affirmer.
|
data/README.md
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# samwise
|
|
2
|
+
|
|
3
|
+
* [Homepage](https://rubygems.org/gems/samwise)
|
|
4
|
+
* [Documentation](http://rubydoc.info/gems/samwise/frames)
|
|
5
|
+
|
|
6
|
+
[](https://travis-ci.org/18F/samwise)
|
|
7
|
+
[](https://codeclimate.com/github/18F/samwise)
|
|
8
|
+
[](https://codeclimate.com/github/18F/samwise/coverage)
|
|
9
|
+
[](https://codeclimate.com/github/18F/samwise)
|
|
10
|
+
|
|
11
|
+
## Description
|
|
12
|
+
|
|
13
|
+
Ruby access to the SAM.gov API.
|
|
14
|
+
|
|
15
|
+
## Usage
|
|
16
|
+
|
|
17
|
+
To get started, you'll need an API key from https://api.data.gov.
|
|
18
|
+
|
|
19
|
+
### Configuration
|
|
20
|
+
|
|
21
|
+
Set the api.data.gov API key as the environment variable `'DATA_DOT_GOV_API_KEY'` or pass the key as an argument:
|
|
22
|
+
|
|
23
|
+
```ruby
|
|
24
|
+
require 'samwise'
|
|
25
|
+
|
|
26
|
+
client = Samwise::Client.new(api_key: 'my key ...')
|
|
27
|
+
|
|
28
|
+
# if you set the 'DATA_DOT_GOV_API_KEY' env var, just use:
|
|
29
|
+
client = Samwise::Client.new
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Verify DUNS number
|
|
33
|
+
|
|
34
|
+
```ruby
|
|
35
|
+
client.duns_is_valid?(duns: '080037478')
|
|
36
|
+
#=> true
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Get DUNS info
|
|
40
|
+
|
|
41
|
+
```ruby
|
|
42
|
+
client.get_duns_info(duns: '080037478')
|
|
43
|
+
#=>
|
|
44
|
+
{
|
|
45
|
+
"sam_data" => {
|
|
46
|
+
"registration" => {
|
|
47
|
+
"govtBusinessPoc" => {
|
|
48
|
+
"lastName" => "SUDOL", "address" => {
|
|
49
|
+
"Line1" => "4301 N HENDERSON RD APT 408", "Zip" => "22203", "Country" => "USA", "City" => "Arlington", "stateorProvince" => "VA"
|
|
50
|
+
}, "email" => "BRENDANSUDOL@GMAIL.COM", "usPhone" => "5404218332", "firstName" => "BRENDAN"
|
|
51
|
+
}, "dunsPlus4" => "0000", "activationDate" => "2015-10-30 11:42:30.0", "fiscalYearEndCloseDate" => "12/31", "businessTypes" => ["VW", "2X", "27"], "registrationDate" => "2015-10-28 00:00:00.0", "certificationsURL" => {
|
|
52
|
+
"pdfUrl" => "https://www.sam.gov/SAMPortal/filedownload?reportType=1&orgId=%2BFCe4Gq91w3LPzmIapO9KekwldCbu7D2ee%2FlxnUkqFvrQwe3OD%2FJSpI%2FuXW0rrpz&pitId=clfEJcL40D6baXhmKE8hVFZPHUDQegjQvNgn4YGfaL%2Fzh6O%2B%2FUJYaSJJ0dKFPFhm&requestId=Xzq5jdsGDkiXPF4"
|
|
53
|
+
}, "hasDelinquentFederalDebt" => false, "duns" => "080037478", "cage" => "7H1Y7", "hasKnownExclusion" => false, "publicDisplay" => true, "expirationDate" => "2016-10-27 10:53:02.0", "status" => "ACTIVE", "corporateStructureCode" => "2J", "stateOfIncorporation" => "VA", "corporateStructureName" => "Sole Proprietorship", "legalBusinessName" => "Sudol, Brendan", "congressionalDistrict" => "VA 08", "businessStartDate" => "2015-10-28", "statusMessage" => "Active", "lastUpdateDate" => "2015-11-02 17:36:23.0", "submissionDate" => "2015-10-28 10:53:02.0", "samAddress" => {
|
|
54
|
+
"Zip4" => "2511", "Line1" => "4301 N Henderson Rd Apt 408", "Zip" => "22203", "Country" => "USA", "City" => "Arlington", "stateorProvince" => "VA"
|
|
55
|
+
}, "naics" => [{
|
|
56
|
+
"isPrimary" => false, "naicsCode" => "518210", "naicsName" => "DATA PROCESSING, HOSTING, AND RELATED SERVICES"
|
|
57
|
+
}, {
|
|
58
|
+
"isPrimary" => true, "naicsCode" => "541511", "naicsName" => "CUSTOM COMPUTER PROGRAMMING SERVICES"
|
|
59
|
+
}], "creditCardUsage" => true, "countryOfIncorporation" => "USA", "electronicBusinessPoc" => {
|
|
60
|
+
"lastName" => "SUDOL", "address" => {
|
|
61
|
+
"Line1" => "4301 N HENDERSON RD APT 408", "Zip" => "22203", "Country" => "USA", "City" => "Arlington", "stateorProvince" => "VA"
|
|
62
|
+
}, "email" => "BRENDANSUDOL@GMAIL.COM", "usPhone" => "5404218332", "firstName" => "BRENDAN"
|
|
63
|
+
}, "mailingAddress" => {
|
|
64
|
+
"Zip4" => "2511", "Line1" => "4301 N Henderson Rd Apt 408", "Zip" => "22203", "Country" => "USA", "City" => "Arlington", "stateorProvince" => "VA"
|
|
65
|
+
}, "purposeOfRegistration" => "ALL_AWARDS"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
`duns` can be an 8, 9, or 13 digit number:
|
|
72
|
+
|
|
73
|
+
- If it is 8 digits, `0` is prepended, and `0000` is added to the end.
|
|
74
|
+
- If it is 9 digits, `0000` is added to the end.
|
|
75
|
+
- If it is 13 digits, the number is unchanged.
|
|
76
|
+
|
|
77
|
+
## Install
|
|
78
|
+
|
|
79
|
+
In your Gemfile:
|
|
80
|
+
|
|
81
|
+
```ruby
|
|
82
|
+
gem 'samwise', github: '18f/samwise'
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Coming Soon
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
$ gem install samwise
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Public Domain
|
|
92
|
+
|
|
93
|
+
This project is in the worldwide [public domain](LICENSE.md). As stated in [CONTRIBUTING](CONTRIBUTING.md):
|
|
94
|
+
|
|
95
|
+
> This project is in the public domain within the United States, and copyright and related rights in the work worldwide are waived through the [CC0 1.0 Universal public domain dedication](https://creativecommons.org/publicdomain/zero/1.0/).
|
|
96
|
+
>
|
|
97
|
+
> All contributions to this project will be released under the CC0 dedication. By submitting a pull request, you are agreeing to comply with this waiver of copyright interest.
|
data/Rakefile
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'rubygems'
|
|
4
|
+
|
|
5
|
+
begin
|
|
6
|
+
require 'bundler/setup'
|
|
7
|
+
rescue LoadError => e
|
|
8
|
+
abort e.message
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
require 'rake'
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
require 'rubygems/tasks'
|
|
15
|
+
Gem::Tasks.new
|
|
16
|
+
|
|
17
|
+
require 'rdoc/task'
|
|
18
|
+
RDoc::Task.new
|
|
19
|
+
task :doc => :rdoc
|
|
20
|
+
|
|
21
|
+
require 'rspec/core/rake_task'
|
|
22
|
+
RSpec::Core::RakeTask.new
|
|
23
|
+
|
|
24
|
+
task :test => :spec
|
|
25
|
+
task :default => :spec
|
data/lib/samwise.rb
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'faraday'
|
|
2
|
+
require 'json'
|
|
3
|
+
|
|
4
|
+
module Samwise
|
|
5
|
+
class Client
|
|
6
|
+
def initialize(api_key: api_key)
|
|
7
|
+
@api_key = api_key || ENV['DATA_DOT_GOV_API_KEY']
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def get_duns_info(duns: nil)
|
|
11
|
+
response = lookup_duns(duns: duns)
|
|
12
|
+
JSON.parse(response.body)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def duns_is_valid?(duns: nil)
|
|
16
|
+
response = lookup_duns(duns: duns)
|
|
17
|
+
response.status == 200
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
def lookup_duns(duns: duns)
|
|
23
|
+
duns = Samwise::Util.format_duns(duns: duns)
|
|
24
|
+
response = Faraday.get(Samwise::Protocol.duns_url(duns: duns, api_key: @api_key))
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
data/lib/samwise/util.rb
ADDED
data/samwise.gemspec
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
|
|
3
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
5
|
+
require 'samwise/version'
|
|
6
|
+
|
|
7
|
+
Gem::Specification.new do |gem|
|
|
8
|
+
gem.name = "samwise"
|
|
9
|
+
gem.version = Samwise::VERSION
|
|
10
|
+
gem.summary = %q{Ruby access to the SAM.gov API}
|
|
11
|
+
gem.description = %q{A Ruby library that provides access to the SAM.gov API}
|
|
12
|
+
gem.license = "Public Domain. See CONTRIBUTING.md."
|
|
13
|
+
gem.authors = ["Alan deLevie"]
|
|
14
|
+
gem.email = "alan.delevie@gsa.gov"
|
|
15
|
+
gem.homepage = "https://rubygems.org/gems/samwise"
|
|
16
|
+
|
|
17
|
+
gem.files = `git ls-files`.split($/)
|
|
18
|
+
|
|
19
|
+
`git submodule --quiet foreach --recursive pwd`.split($/).each do |submodule|
|
|
20
|
+
submodule.sub!("#{Dir.pwd}/",'')
|
|
21
|
+
|
|
22
|
+
Dir.chdir(submodule) do
|
|
23
|
+
`git ls-files`.split($/).map do |subpath|
|
|
24
|
+
gem.files << File.join(submodule,subpath)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
|
29
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
|
30
|
+
gem.require_paths = ['lib']
|
|
31
|
+
|
|
32
|
+
gem.add_development_dependency 'codeclimate-test-reporter', '~> 0.1'
|
|
33
|
+
gem.add_development_dependency 'rake', '~> 10.0'
|
|
34
|
+
gem.add_development_dependency 'rdoc', '~> 4.0'
|
|
35
|
+
gem.add_development_dependency 'rspec', '~> 3.0'
|
|
36
|
+
gem.add_development_dependency 'rubygems-tasks', '~> 0.2'
|
|
37
|
+
gem.add_development_dependency 'vcr'
|
|
38
|
+
gem.add_development_dependency 'pry'
|
|
39
|
+
gem.add_development_dependency 'webmock'
|
|
40
|
+
|
|
41
|
+
gem.add_runtime_dependency 'faraday'
|
|
42
|
+
end
|
data/spec/client_spec.rb
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'samwise'
|
|
3
|
+
|
|
4
|
+
describe Samwise::Client, vcr: { cassette_name: "Samwise::Client", record: :new_episodes } do
|
|
5
|
+
let(:api_key) { ENV['DATA_DOT_GOV_API_KEY'] }
|
|
6
|
+
let(:nine_duns) { '809102507' }
|
|
7
|
+
let(:eight_duns) { '78327018' }
|
|
8
|
+
let(:thirteen_duns) { '0223841150000' }
|
|
9
|
+
let(:non_existent_duns) { '0000001000000' }
|
|
10
|
+
|
|
11
|
+
context '#duns_is_valid?' do
|
|
12
|
+
it "should verify that a 9 digit DUNS number exists" do
|
|
13
|
+
client = Samwise::Client.new(api_key: api_key)
|
|
14
|
+
response = client.duns_is_valid?(duns: nine_duns)
|
|
15
|
+
|
|
16
|
+
expect(response).to be(true)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "should verify that an 8 digit DUNS number exists" do
|
|
20
|
+
client = Samwise::Client.new(api_key: api_key)
|
|
21
|
+
response = client.duns_is_valid?(duns: eight_duns)
|
|
22
|
+
|
|
23
|
+
expect(response).to be(true)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "should verify that a 13 digit DUNS number exists" do
|
|
27
|
+
client = Samwise::Client.new(api_key: api_key)
|
|
28
|
+
response = client.duns_is_valid?(duns: thirteen_duns)
|
|
29
|
+
|
|
30
|
+
expect(response).to be(true)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "should return false given a non-existent DUNS number" do
|
|
34
|
+
client = Samwise::Client.new(api_key: api_key)
|
|
35
|
+
response = client.duns_is_valid?(duns: non_existent_duns)
|
|
36
|
+
|
|
37
|
+
expect(response).to be(false)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
context '#get_duns_info' do
|
|
42
|
+
it "should get info for a 9 digit DUNS number" do
|
|
43
|
+
client = Samwise::Client.new(api_key: api_key)
|
|
44
|
+
response = client.get_duns_info(duns: nine_duns)
|
|
45
|
+
|
|
46
|
+
expect(response).to be_a(Hash)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "should get info for an 8 digit DUNS number" do
|
|
50
|
+
client = Samwise::Client.new(api_key: api_key)
|
|
51
|
+
response = client.get_duns_info(duns: eight_duns)
|
|
52
|
+
|
|
53
|
+
expect(response).to be_a(Hash)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "should get info for a 13 digit DUNS number" do
|
|
57
|
+
client = Samwise::Client.new(api_key: api_key)
|
|
58
|
+
response = client.get_duns_info(duns: thirteen_duns)
|
|
59
|
+
|
|
60
|
+
expect(response).to be_a(Hash)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it "should return an error given a non-existent DUNS number" do
|
|
64
|
+
client = Samwise::Client.new(api_key: api_key)
|
|
65
|
+
response = client.get_duns_info(duns: non_existent_duns)
|
|
66
|
+
|
|
67
|
+
expect(response).to be_a(Hash)
|
|
68
|
+
expect(response['Error']).to eq('Not Found')
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'samwise'
|
|
3
|
+
|
|
4
|
+
describe Samwise::Protocol do
|
|
5
|
+
let(:api_key) { '123456' }
|
|
6
|
+
let(:duns) { '0123456780000'}
|
|
7
|
+
|
|
8
|
+
it "should create the URL for the DUNS API endpoint" do
|
|
9
|
+
duns_url = Samwise::Protocol.duns_url(duns: duns, api_key: api_key)
|
|
10
|
+
|
|
11
|
+
expect(duns_url).to be_a_valid_url
|
|
12
|
+
end
|
|
13
|
+
end
|
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require 'rspec'
|
|
2
|
+
require 'samwise/version'
|
|
3
|
+
require 'rspec/expectations'
|
|
4
|
+
require 'uri'
|
|
5
|
+
require 'vcr'
|
|
6
|
+
|
|
7
|
+
include Samwise
|
|
8
|
+
|
|
9
|
+
RSpec::Matchers.define :be_a_valid_url do
|
|
10
|
+
match do |actual|
|
|
11
|
+
begin
|
|
12
|
+
uri = URI.parse(actual)
|
|
13
|
+
uri.kind_of?(URI::HTTP)
|
|
14
|
+
rescue URI::InvalidURIError
|
|
15
|
+
false
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
failure_message do |actual|
|
|
20
|
+
"expected that #{actual} would be a valid url"
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
VCR.configure do |c|
|
|
25
|
+
c.cassette_library_dir = 'spec/vcr'
|
|
26
|
+
c.hook_into :webmock
|
|
27
|
+
c.configure_rspec_metadata!
|
|
28
|
+
c.filter_sensitive_data('<data_dot_gov_api_key>') { ENV['DATA_DOT_GOV_API_KEY'] }
|
|
29
|
+
end
|
data/spec/util_spec.rb
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'samwise'
|
|
3
|
+
|
|
4
|
+
describe Samwise::Util do
|
|
5
|
+
let(:eight_duns) { '88371771' }
|
|
6
|
+
let(:nine_duns) { '883717717' }
|
|
7
|
+
|
|
8
|
+
it "should format an 8 digit DUNS into a 13 digit DUNS" do
|
|
9
|
+
formatted_duns = Samwise::Util.format_duns(duns: eight_duns)
|
|
10
|
+
|
|
11
|
+
expect(formatted_duns.length).to eq(13)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should format a 9 digit DUNS into a 13 digit DUNS" do
|
|
15
|
+
formatted_duns = Samwise::Util.format_duns(duns: nine_duns)
|
|
16
|
+
|
|
17
|
+
expect(formatted_duns.length).to eq(13)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,454 @@
|
|
|
1
|
+
---
|
|
2
|
+
http_interactions:
|
|
3
|
+
- request:
|
|
4
|
+
method: get
|
|
5
|
+
uri: https://api.data.gov/sam/v1/registrations/8091025070000?api_key=
|
|
6
|
+
body:
|
|
7
|
+
encoding: US-ASCII
|
|
8
|
+
string: ''
|
|
9
|
+
headers:
|
|
10
|
+
User-Agent:
|
|
11
|
+
- Faraday v0.9.2
|
|
12
|
+
Accept-Encoding:
|
|
13
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
|
14
|
+
Accept:
|
|
15
|
+
- "*/*"
|
|
16
|
+
response:
|
|
17
|
+
status:
|
|
18
|
+
code: 403
|
|
19
|
+
message: Forbidden
|
|
20
|
+
headers:
|
|
21
|
+
Access-Control-Allow-Origin:
|
|
22
|
+
- "*"
|
|
23
|
+
Content-Type:
|
|
24
|
+
- application/json
|
|
25
|
+
Date:
|
|
26
|
+
- Tue, 29 Dec 2015 22:10:13 GMT
|
|
27
|
+
Server:
|
|
28
|
+
- openresty
|
|
29
|
+
Vary:
|
|
30
|
+
- Accept-Encoding
|
|
31
|
+
X-Cache:
|
|
32
|
+
- MISS
|
|
33
|
+
Content-Length:
|
|
34
|
+
- '132'
|
|
35
|
+
Connection:
|
|
36
|
+
- keep-alive
|
|
37
|
+
body:
|
|
38
|
+
encoding: ASCII-8BIT
|
|
39
|
+
string: |-
|
|
40
|
+
{
|
|
41
|
+
"error": {
|
|
42
|
+
"code": "API_KEY_MISSING",
|
|
43
|
+
"message": "No api_key was supplied. Get one at https://api.data.gov"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
http_version:
|
|
47
|
+
recorded_at: Tue, 29 Dec 2015 22:10:13 GMT
|
|
48
|
+
- request:
|
|
49
|
+
method: get
|
|
50
|
+
uri: https://api.data.gov/sam/v1/registrations/0783270180000?api_key=
|
|
51
|
+
body:
|
|
52
|
+
encoding: US-ASCII
|
|
53
|
+
string: ''
|
|
54
|
+
headers:
|
|
55
|
+
User-Agent:
|
|
56
|
+
- Faraday v0.9.2
|
|
57
|
+
Accept-Encoding:
|
|
58
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
|
59
|
+
Accept:
|
|
60
|
+
- "*/*"
|
|
61
|
+
response:
|
|
62
|
+
status:
|
|
63
|
+
code: 403
|
|
64
|
+
message: Forbidden
|
|
65
|
+
headers:
|
|
66
|
+
Access-Control-Allow-Origin:
|
|
67
|
+
- "*"
|
|
68
|
+
Content-Type:
|
|
69
|
+
- application/json
|
|
70
|
+
Date:
|
|
71
|
+
- Tue, 29 Dec 2015 22:10:13 GMT
|
|
72
|
+
Server:
|
|
73
|
+
- openresty
|
|
74
|
+
Vary:
|
|
75
|
+
- Accept-Encoding
|
|
76
|
+
X-Cache:
|
|
77
|
+
- MISS
|
|
78
|
+
Content-Length:
|
|
79
|
+
- '132'
|
|
80
|
+
Connection:
|
|
81
|
+
- keep-alive
|
|
82
|
+
body:
|
|
83
|
+
encoding: ASCII-8BIT
|
|
84
|
+
string: |-
|
|
85
|
+
{
|
|
86
|
+
"error": {
|
|
87
|
+
"code": "API_KEY_MISSING",
|
|
88
|
+
"message": "No api_key was supplied. Get one at https://api.data.gov"
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
http_version:
|
|
92
|
+
recorded_at: Tue, 29 Dec 2015 22:10:13 GMT
|
|
93
|
+
- request:
|
|
94
|
+
method: get
|
|
95
|
+
uri: https://api.data.gov/sam/v1/registrations/0223841150000?api_key=
|
|
96
|
+
body:
|
|
97
|
+
encoding: US-ASCII
|
|
98
|
+
string: ''
|
|
99
|
+
headers:
|
|
100
|
+
User-Agent:
|
|
101
|
+
- Faraday v0.9.2
|
|
102
|
+
Accept-Encoding:
|
|
103
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
|
104
|
+
Accept:
|
|
105
|
+
- "*/*"
|
|
106
|
+
response:
|
|
107
|
+
status:
|
|
108
|
+
code: 403
|
|
109
|
+
message: Forbidden
|
|
110
|
+
headers:
|
|
111
|
+
Access-Control-Allow-Origin:
|
|
112
|
+
- "*"
|
|
113
|
+
Content-Type:
|
|
114
|
+
- application/json
|
|
115
|
+
Date:
|
|
116
|
+
- Tue, 29 Dec 2015 22:10:13 GMT
|
|
117
|
+
Server:
|
|
118
|
+
- openresty
|
|
119
|
+
Vary:
|
|
120
|
+
- Accept-Encoding
|
|
121
|
+
X-Cache:
|
|
122
|
+
- MISS
|
|
123
|
+
Content-Length:
|
|
124
|
+
- '132'
|
|
125
|
+
Connection:
|
|
126
|
+
- keep-alive
|
|
127
|
+
body:
|
|
128
|
+
encoding: ASCII-8BIT
|
|
129
|
+
string: |-
|
|
130
|
+
{
|
|
131
|
+
"error": {
|
|
132
|
+
"code": "API_KEY_MISSING",
|
|
133
|
+
"message": "No api_key was supplied. Get one at https://api.data.gov"
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
http_version:
|
|
137
|
+
recorded_at: Tue, 29 Dec 2015 22:10:13 GMT
|
|
138
|
+
- request:
|
|
139
|
+
method: get
|
|
140
|
+
uri: https://api.data.gov/sam/v1/registrations/0000001000000?api_key=
|
|
141
|
+
body:
|
|
142
|
+
encoding: US-ASCII
|
|
143
|
+
string: ''
|
|
144
|
+
headers:
|
|
145
|
+
User-Agent:
|
|
146
|
+
- Faraday v0.9.2
|
|
147
|
+
Accept-Encoding:
|
|
148
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
|
149
|
+
Accept:
|
|
150
|
+
- "*/*"
|
|
151
|
+
response:
|
|
152
|
+
status:
|
|
153
|
+
code: 403
|
|
154
|
+
message: Forbidden
|
|
155
|
+
headers:
|
|
156
|
+
Access-Control-Allow-Origin:
|
|
157
|
+
- "*"
|
|
158
|
+
Content-Type:
|
|
159
|
+
- application/json
|
|
160
|
+
Date:
|
|
161
|
+
- Tue, 29 Dec 2015 22:10:13 GMT
|
|
162
|
+
Server:
|
|
163
|
+
- openresty
|
|
164
|
+
Vary:
|
|
165
|
+
- Accept-Encoding
|
|
166
|
+
X-Cache:
|
|
167
|
+
- MISS
|
|
168
|
+
Content-Length:
|
|
169
|
+
- '132'
|
|
170
|
+
Connection:
|
|
171
|
+
- keep-alive
|
|
172
|
+
body:
|
|
173
|
+
encoding: ASCII-8BIT
|
|
174
|
+
string: |-
|
|
175
|
+
{
|
|
176
|
+
"error": {
|
|
177
|
+
"code": "API_KEY_MISSING",
|
|
178
|
+
"message": "No api_key was supplied. Get one at https://api.data.gov"
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
http_version:
|
|
182
|
+
recorded_at: Tue, 29 Dec 2015 22:10:13 GMT
|
|
183
|
+
- request:
|
|
184
|
+
method: get
|
|
185
|
+
uri: https://api.data.gov/sam/v1/registrations/8091025070000?api_key=<data_dot_gov_api_key>
|
|
186
|
+
body:
|
|
187
|
+
encoding: US-ASCII
|
|
188
|
+
string: ''
|
|
189
|
+
headers:
|
|
190
|
+
User-Agent:
|
|
191
|
+
- Faraday v0.9.2
|
|
192
|
+
Accept-Encoding:
|
|
193
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
|
194
|
+
Accept:
|
|
195
|
+
- "*/*"
|
|
196
|
+
response:
|
|
197
|
+
status:
|
|
198
|
+
code: 200
|
|
199
|
+
message: OK
|
|
200
|
+
headers:
|
|
201
|
+
Age:
|
|
202
|
+
- '0'
|
|
203
|
+
Content-Type:
|
|
204
|
+
- application/json
|
|
205
|
+
Date:
|
|
206
|
+
- Tue, 29 Dec 2015 22:17:51 GMT
|
|
207
|
+
Server:
|
|
208
|
+
- openresty
|
|
209
|
+
Vary:
|
|
210
|
+
- Accept-Encoding
|
|
211
|
+
- Accept-Encoding
|
|
212
|
+
Via:
|
|
213
|
+
- http/1.1 api-umbrella (ApacheTrafficServer [cMsSf ])
|
|
214
|
+
X-Cache:
|
|
215
|
+
- MISS
|
|
216
|
+
X-Ratelimit-Limit:
|
|
217
|
+
- '5000'
|
|
218
|
+
X-Ratelimit-Remaining:
|
|
219
|
+
- '4896'
|
|
220
|
+
Content-Length:
|
|
221
|
+
- '1418'
|
|
222
|
+
Connection:
|
|
223
|
+
- keep-alive
|
|
224
|
+
body:
|
|
225
|
+
encoding: UTF-8
|
|
226
|
+
string: '{"sam_data":{"registration":{"govtBusinessPoc":{"lastName":"GOSWAMI","fax":"8665667533","address":{"Line1":"14608
|
|
227
|
+
Pebble Hill Lane","Zip":"20878","Country":"USA","City":"North Potomac","stateorProvince":"MD"},"email":"VIJAY@XFINION.COM","usPhone":"3018014897","firstName":"VIJAY"},"disasterRelief":{"type":"ANY"},"dunsPlus4":"0000","activationDate":"2015-11-27
|
|
228
|
+
08:50:04.0","fiscalYearEndCloseDate":"12/31","businessTypes":["QZ","XS","VW","2X","27","23","A620240406"],"pastPerformancePoc":{"lastName":"MECCIA","address":{"Line1":"600
|
|
229
|
+
19th St NW","Zip":"20431","Country":"USA","City":"Washington","stateorProvince":"DC"},"email":"MECCIAMJ@STATE.GOV","usPhone":"2024857820","firstName":"MICHAEL"},"registrationDate":"2008-08-17
|
|
230
|
+
00:00:00.0","certificationsURL":{"pdfUrl":"https://www.sam.gov/SAMPortal/filedownload?reportType=2&orgId=O65Y2vmSLpZC4QP4%2BMYzVdllJhATH31debEqvUb628jK%2Fu9HCIEHRWq%2BOqN8aTgg&pitId=Aq3b8eh7ABQZTfXMApF6SUfR3zpdw7Bn9vwi6ups0%2B%2Fqd0prdUwoqKN7zaWmcfgazvC0p%2BU2El%2BE%0AfW%2Fx2e4aQg%3D%3D&requestId=P9mf7IA81Q1zAn7"},"hasDelinquentFederalDebt":false,"duns":"809102507","altElectronicBusinessPoc":{"lastName":"GOSWAMI","fax":"8665667533","address":{"Line1":"14608
|
|
231
|
+
Pebble Hill Lnae","Zip":"20878","Country":"USA","City":"North Potomac","stateorProvince":"MD"},"email":"NILAM@XFINION.COM","usPhone":"3013286579","firstName":"NILAM"},"cage":"561R4","hasKnownExclusion":false,"publicDisplay":true,"expirationDate":"2016-11-25
|
|
232
|
+
18:48:10.0","altPastPerformancePoc":{"lastName":"KAUL","address":{"Line1":"1801
|
|
233
|
+
North Lynn Street","Zip":"22209","Country":"USA","City":"Rosslyn","stateorProvince":"VA"},"email":"KAULN@STATE.GOV","usPhone":"5713459854","firstName":"NISHA"},"status":"ACTIVE","corporateStructureCode":"2L","corporateStructureName":"Corporate
|
|
234
|
+
Entity (Not Tax Exempt)","stateOfIncorporation":"MD","legalBusinessName":"XFINION
|
|
235
|
+
INC.","congressionalDistrict":"MD 06","businessStartDate":"2005-09-16","lastUpdateDate":"2015-11-27
|
|
236
|
+
08:50:04.0","statusMessage":"Active","samAddress":{"Zip4":"6933","Line1":"7800
|
|
237
|
+
LONESOME PINE LN","Zip":"20817","Country":"USA","City":"BETHESDA","stateorProvince":"MD"},"submissionDate":"2015-11-26
|
|
238
|
+
18:48:10.0","naics":[{"isPrimary":false,"naicsCode":"541519","naicsName":"OTHER
|
|
239
|
+
COMPUTER RELATED SERVICES"},{"isPrimary":false,"naicsCode":"511210","naicsName":"SOFTWARE
|
|
240
|
+
PUBLISHERS"},{"isPrimary":true,"naicsCode":"541511","naicsName":"CUSTOM COMPUTER
|
|
241
|
+
PROGRAMMING SERVICES"},{"isPrimary":false,"naicsCode":"518210","naicsName":"DATA
|
|
242
|
+
PROCESSING, HOSTING, AND RELATED SERVICES"},{"isPrimary":false,"naicsCode":"541512","naicsName":"COMPUTER
|
|
243
|
+
SYSTEMS DESIGN SERVICES"}],"corporateUrl":"http://www.XFinion.com","altGovtBusinessPoc":{"lastName":"GOSWAMI","fax":"8665667533","address":{"Line1":"14608
|
|
244
|
+
Pebble Hill Lane","Zip":"20878","Country":"USA","City":"North Potomac","stateorProvince":"MD"},"email":"NILAM@XFINION.COM","usPhone":"3013286579","firstName":"NILAM"},"creditCardUsage":true,"countryOfIncorporation":"USA","divisionNumber":"XFinion","electronicBusinessPoc":{"lastName":"GOSWAMI","fax":"8665667533","address":{"Line1":"14608
|
|
245
|
+
Pebble Hill Lane","Zip":"20878","Country":"USA","City":"North Potomac","stateorProvince":"MD"},"email":"VIJAY@XFINION.COM","usPhone":"3018014897","firstName":"VIJAY"},"mailingAddress":{"Line1":"7800
|
|
246
|
+
lonesome pine ln","Zip":"20817","Country":"USA","City":"Bethesda","stateorProvince":"MD"},"purposeOfRegistration":"ALL_AWARDS"}}}'
|
|
247
|
+
http_version:
|
|
248
|
+
recorded_at: Tue, 29 Dec 2015 22:17:53 GMT
|
|
249
|
+
- request:
|
|
250
|
+
method: get
|
|
251
|
+
uri: https://api.data.gov/sam/v1/registrations/0783270180000?api_key=<data_dot_gov_api_key>
|
|
252
|
+
body:
|
|
253
|
+
encoding: US-ASCII
|
|
254
|
+
string: ''
|
|
255
|
+
headers:
|
|
256
|
+
User-Agent:
|
|
257
|
+
- Faraday v0.9.2
|
|
258
|
+
Accept-Encoding:
|
|
259
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
|
260
|
+
Accept:
|
|
261
|
+
- "*/*"
|
|
262
|
+
response:
|
|
263
|
+
status:
|
|
264
|
+
code: 200
|
|
265
|
+
message: OK
|
|
266
|
+
headers:
|
|
267
|
+
Age:
|
|
268
|
+
- '1'
|
|
269
|
+
Content-Type:
|
|
270
|
+
- application/json
|
|
271
|
+
Date:
|
|
272
|
+
- Tue, 29 Dec 2015 22:17:52 GMT
|
|
273
|
+
Server:
|
|
274
|
+
- openresty
|
|
275
|
+
Vary:
|
|
276
|
+
- Accept-Encoding
|
|
277
|
+
- Accept-Encoding
|
|
278
|
+
Via:
|
|
279
|
+
- http/1.1 api-umbrella (ApacheTrafficServer [cMsSf ])
|
|
280
|
+
X-Cache:
|
|
281
|
+
- MISS
|
|
282
|
+
X-Ratelimit-Limit:
|
|
283
|
+
- '5000'
|
|
284
|
+
X-Ratelimit-Remaining:
|
|
285
|
+
- '4896'
|
|
286
|
+
Content-Length:
|
|
287
|
+
- '1291'
|
|
288
|
+
Connection:
|
|
289
|
+
- keep-alive
|
|
290
|
+
body:
|
|
291
|
+
encoding: UTF-8
|
|
292
|
+
string: '{"sam_data":{"registration":{"govtBusinessPoc":{"lastName":"REYNOLDS","title":"CHIEF
|
|
293
|
+
ENGINEER","fax":"9787766968","address":{"Zip4":"2799","Line1":"328 VIRGINIA
|
|
294
|
+
ROAD","Zip":"01742","Country":"USA","City":"CONCORD","stateorProvince":"MA"},"email":"MCR@ISLANDPEAKSOFTWARE.COM","middleInitial":"C","usPhone":"9783418385","firstName":"MARK"},"dunsPlus4":"0000","activationDate":"2015-03-29
|
|
295
|
+
15:45:03.0","fiscalYearEndCloseDate":"12/31","businessTypes":["LJ","VW","2X"],"registrationDate":"2011-12-27
|
|
296
|
+
00:00:00.0","certificationsURL":{"pdfUrl":"https://www.sam.gov/SAMPortal/filedownload?reportType=2&orgId=PCNW16NzwdnjzNB13TIio6hBdFa276W51xGsyOBYiX5GrgJhThLYvSugeesI1aM5&pitId=vrKqyyTxwFcjJPaAu8Bcazbrc6%2FLIKDcXdWzvDKgMUOeq7oomukW5jpIIoQzZn9cfexZNKqetCEm%0AlF%2FF0MhB8g%3D%3D&requestId=zU8Lj4quyxXZC4X"},"pscCodes":[{"pscName":"R&D-
|
|
297
|
+
GENERAL SCIENCE/TECHNOLOGY: MATHEMATICAL/COMPUTER SCIENCES (BASIC RESEARCH)","pscCode":"AJ21"},{"pscName":"R&D-
|
|
298
|
+
GENERAL SCIENCE/TECHNOLOGY: MATHEMATICAL/COMPUTER SCIENCES (APPLIED RESEARCH/EXPLORATORY
|
|
299
|
+
DEVELOPMENT)","pscCode":"AJ22"},{"pscName":"R&D- GENERAL SCIENCE/TECHNOLOGY:
|
|
300
|
+
MATHEMATICAL/COMPUTER SCIENCES (ADVANCED DEVELOPMENT)","pscCode":"AJ23"}],"hasDelinquentFederalDebt":false,"duns":"078327018","cage":"6M6Y4","altElectronicBusinessPoc":{"lastName":"REYNOLDS","title":"CHIEF
|
|
301
|
+
ENGINEER","fax":"9783710046","address":{"Zip4":"2799","Line1":"328 VIRGINIA
|
|
302
|
+
ROAD","Zip":"01742","Country":"USA","City":"CONCORD","stateorProvince":"MA"},"email":"MARKCREYNOLDS@COMCAST.NET","middleInitial":"C","usPhone":"9783710046","firstName":"MARK"},"hasKnownExclusion":false,"publicDisplay":true,"expirationDate":"2016-03-28
|
|
303
|
+
15:35:18.0","status":"ACTIVE","corporateStructureCode":"2K","stateOfIncorporation":"MA","corporateStructureName":"Partnership
|
|
304
|
+
or Limited Liability Partnership","legalBusinessName":"ISLAND PEAK SOFTWARE
|
|
305
|
+
LLC","congressionalDistrict":"MA 03","businessStartDate":"2011-11-30","statusMessage":"Active","lastUpdateDate":"2015-03-30
|
|
306
|
+
16:16:49.0","samAddress":{"Zip4":"2799","Line1":"328 VIRGINIA RD","Zip":"01742","Country":"USA","City":"CONCORD","stateorProvince":"MA"},"submissionDate":"2015-03-29
|
|
307
|
+
15:35:18.0","naics":[{"isPrimary":true,"naicsCode":"541712","naicsName":"RESEARCH
|
|
308
|
+
AND DEVELOPMENT IN THE PHYSICAL, ENGINEERING, AND LIFE SCIENCES (EXCEPT BIOTECHNOLOGY)"},{"isPrimary":false,"naicsCode":"541511","naicsName":"CUSTOM
|
|
309
|
+
COMPUTER PROGRAMMING SERVICES"}],"corporateUrl":"www.islandpeaksoftware.com","altGovtBusinessPoc":{"lastName":"REYNOLDS","title":"CHIEF
|
|
310
|
+
ENGINEER","fax":"9783710046","address":{"Zip4":"2799","Line1":"328 VIRGINIA
|
|
311
|
+
ROAD","Zip":"01742","Country":"USA","City":"CONCORD","stateorProvince":"MA"},"email":"MARKCREYNOLDS@COMCAST.NET","middleInitial":"C","usPhone":"9783710046","firstName":"MARK"},"creditCardUsage":false,"countryOfIncorporation":"USA","electronicBusinessPoc":{"lastName":"REYNOLDS","title":"CHIEF
|
|
312
|
+
ENGINEER","fax":"9787766968","address":{"Zip4":"2799","Line1":"328 VIRGINIA
|
|
313
|
+
ROAD","Zip":"01742","Country":"USA","City":"CONCORD","stateorProvince":"MA"},"email":"MCR@ISLANDPEAKSOFTWARE.COM","middleInitial":"C","usPhone":"9783418385","firstName":"MARK"},"mailingAddress":{"Zip4":"2799","Line1":"328
|
|
314
|
+
VIRGINIA ROAD","Zip":"01742","Country":"USA","City":"CONCORD","stateorProvince":"MA"},"purposeOfRegistration":"ALL_AWARDS"}}}'
|
|
315
|
+
http_version:
|
|
316
|
+
recorded_at: Tue, 29 Dec 2015 22:17:53 GMT
|
|
317
|
+
- request:
|
|
318
|
+
method: get
|
|
319
|
+
uri: https://api.data.gov/sam/v1/registrations/0223841150000?api_key=<data_dot_gov_api_key>
|
|
320
|
+
body:
|
|
321
|
+
encoding: US-ASCII
|
|
322
|
+
string: ''
|
|
323
|
+
headers:
|
|
324
|
+
User-Agent:
|
|
325
|
+
- Faraday v0.9.2
|
|
326
|
+
Accept-Encoding:
|
|
327
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
|
328
|
+
Accept:
|
|
329
|
+
- "*/*"
|
|
330
|
+
response:
|
|
331
|
+
status:
|
|
332
|
+
code: 200
|
|
333
|
+
message: OK
|
|
334
|
+
headers:
|
|
335
|
+
Age:
|
|
336
|
+
- '0'
|
|
337
|
+
Content-Type:
|
|
338
|
+
- application/json
|
|
339
|
+
Date:
|
|
340
|
+
- Tue, 29 Dec 2015 22:17:52 GMT
|
|
341
|
+
Server:
|
|
342
|
+
- openresty
|
|
343
|
+
Vary:
|
|
344
|
+
- Accept-Encoding
|
|
345
|
+
- Accept-Encoding
|
|
346
|
+
Via:
|
|
347
|
+
- http/1.1 api-umbrella (ApacheTrafficServer [cMsSf ])
|
|
348
|
+
X-Cache:
|
|
349
|
+
- MISS
|
|
350
|
+
X-Ratelimit-Limit:
|
|
351
|
+
- '5000'
|
|
352
|
+
X-Ratelimit-Remaining:
|
|
353
|
+
- '4893'
|
|
354
|
+
Content-Length:
|
|
355
|
+
- '1998'
|
|
356
|
+
Connection:
|
|
357
|
+
- keep-alive
|
|
358
|
+
body:
|
|
359
|
+
encoding: UTF-8
|
|
360
|
+
string: '{"sam_data":{"registration":{"govtBusinessPoc":{"lastName":"GREMILLION","usPhoneExt":"1112","fax":"5048311901","address":{"Line2":"STE.
|
|
361
|
+
1600","Zip4":"3044","Line1":"111 VETERANS BLVD.","Zip":"70005","Country":"USA","City":"METAIRIE","stateorProvince":"LA"},"email":"RICK.GREMILLION@GEOCENT.COM","usPhone":"5048311900","firstName":"RICHARD"},"dunsPlus4":"0000","activationDate":"2015-08-06
|
|
362
|
+
09:31:21.0","fiscalYearEndCloseDate":"12/31","businessTypes":["LJ","VW","2X"],"registrationDate":"2009-09-02
|
|
363
|
+
00:00:00.0","certificationsURL":{"pdfUrl":"https://www.sam.gov/SAMPortal/filedownload?reportType=2&orgId=5ps2K%2BldaCjKxB%2FTvGDLIyaiIpbCniFyLbpC77HyKSsSkhOWIoVWJF6RD2arG%2Fvi&pitId=%2FIFf33A8ZMw%2FXmwjtmbRFjOcXSk4xYCMZc6KYCilw05vYIuqBvRqRx3Kq1SjcWeP&requestId=09YluCc9tJ6R14A"},"pscCodes":[{"pscName":"SUPPORT-
|
|
364
|
+
PROFESSIONAL: PROGRAM MANAGEMENT/SUPPORT","pscCode":"R408"},{"pscName":"SUPPORT-
|
|
365
|
+
PROFESSIONAL: PERSONAL SERVICES CONTRACTS","pscCode":"R497"},{"pscName":"SUPPORT-
|
|
366
|
+
PROFESSIONAL: TECHNOLOGY SHARING/UTILIZATION","pscCode":"R415"},{"pscName":"SUPPORT-
|
|
367
|
+
PROFESSIONAL: ENGINEERING/TECHNICAL","pscCode":"R425"},{"pscName":"SUPPORT-
|
|
368
|
+
PROFESSIONAL: OTHER","pscCode":"R499"}],"hasDelinquentFederalDebt":false,"duns":"022384115","cage":"5NYU1","altElectronicBusinessPoc":{"lastName":"TOMENY","usPhoneExt":"1150","fax":"5048311901","address":{"Line2":"STE.
|
|
369
|
+
1600","Zip4":"3044","Line1":"111 VETERANS BLVD.","Zip":"70005","Country":"USA","City":"METAIRIE","stateorProvince":"LA"},"email":"JEFF.TOMENY@GEOCENT.COM","usPhone":"5048311900","firstName":"JEFF"},"hasKnownExclusion":false,"publicDisplay":true,"expirationDate":"2016-08-05
|
|
370
|
+
09:20:57.0","status":"ACTIVE","corporateStructureCode":"2K","stateOfIncorporation":"LA","corporateStructureName":"Partnership
|
|
371
|
+
or Limited Liability Partnership","legalBusinessName":"Geocent, L.L.C. ","congressionalDistrict":"LA
|
|
372
|
+
01","businessStartDate":"2008-03-31","statusMessage":"Active","lastUpdateDate":"2015-08-06
|
|
373
|
+
09:31:21.0","samAddress":{"Zip4":"3044","Line1":"111 Veterans Memorial Blvd
|
|
374
|
+
Ste 1600 ","Zip":"70005","Country":"USA","City":"Metairie","stateorProvince":"LA"},"submissionDate":"2015-08-06
|
|
375
|
+
09:20:57.0","naics":[{"isPrimary":false,"naicsCode":"811212","naicsName":"COMPUTER
|
|
376
|
+
AND OFFICE MACHINE REPAIR AND MAINTENANCE"},{"isPrimary":false,"naicsCode":"541614","naicsName":"PROCESS,
|
|
377
|
+
PHYSICAL DISTRIBUTION, AND LOGISTICS CONSULTING SERVICES"},{"isPrimary":false,"naicsCode":"541511","naicsName":"CUSTOM
|
|
378
|
+
COMPUTER PROGRAMMING SERVICES"},{"isPrimary":false,"naicsCode":"541519","naicsName":"OTHER
|
|
379
|
+
COMPUTER RELATED SERVICES"},{"isPrimary":false,"naicsCode":"927110","naicsName":"SPACE
|
|
380
|
+
RESEARCH AND TECHNOLOGY"},{"isPrimary":false,"naicsCode":"336415","naicsName":"GUIDED
|
|
381
|
+
MISSILE AND SPACE VEHICLE PROPULSION UNIT AND PROPULSION UNIT PARTS MANUFACTURING"},{"isPrimary":false,"naicsCode":"611420","naicsName":"COMPUTER
|
|
382
|
+
TRAINING"},{"isPrimary":false,"naicsCode":"517110","naicsName":"WIRED TELECOMMUNICATIONS
|
|
383
|
+
CARRIERS"},{"isPrimary":false,"naicsCode":"541612","naicsName":"HUMAN RESOURCES
|
|
384
|
+
CONSULTING SERVICES"},{"isPrimary":false,"naicsCode":"511210","naicsName":"SOFTWARE
|
|
385
|
+
PUBLISHERS"},{"isPrimary":false,"naicsCode":"541611","naicsName":"ADMINISTRATIVE
|
|
386
|
+
MANAGEMENT AND GENERAL MANAGEMENT CONSULTING SERVICES"},{"isPrimary":false,"naicsCode":"541513","naicsName":"COMPUTER
|
|
387
|
+
FACILITIES MANAGEMENT SERVICES"},{"isPrimary":false,"naicsCode":"541720","naicsName":"RESEARCH
|
|
388
|
+
AND DEVELOPMENT IN THE SOCIAL SCIENCES AND HUMANITIES"},{"isPrimary":false,"naicsCode":"561110","naicsName":"OFFICE
|
|
389
|
+
ADMINISTRATIVE SERVICES"},{"isPrimary":false,"naicsCode":"561621","naicsName":"SECURITY
|
|
390
|
+
SYSTEMS SERVICES (EXCEPT LOCKSMITHS)"},{"isPrimary":false,"naicsCode":"541712","naicsName":"RESEARCH
|
|
391
|
+
AND DEVELOPMENT IN THE PHYSICAL, ENGINEERING, AND LIFE SCIENCES (EXCEPT BIOTECHNOLOGY)"},{"isPrimary":false,"naicsCode":"561330","naicsName":"PROFESSIONAL
|
|
392
|
+
EMPLOYER ORGANIZATIONS"},{"isPrimary":false,"naicsCode":"611430","naicsName":"PROFESSIONAL
|
|
393
|
+
AND MANAGEMENT DEVELOPMENT TRAINING"},{"isPrimary":false,"naicsCode":"561210","naicsName":"FACILITIES
|
|
394
|
+
SUPPORT SERVICES"},{"isPrimary":false,"naicsCode":"561311","naicsName":"EMPLOYMENT
|
|
395
|
+
PLACEMENT AGENCIES"},{"isPrimary":false,"naicsCode":"541430","naicsName":"GRAPHIC
|
|
396
|
+
DESIGN SERVICES"},{"isPrimary":false,"naicsCode":"519130","naicsName":"INTERNET
|
|
397
|
+
PUBLISHING AND BROADCASTING AND WEB SEARCH PORTALS"},{"isPrimary":true,"naicsCode":"541330","naicsName":"ENGINEERING
|
|
398
|
+
SERVICES"},{"isPrimary":false,"naicsCode":"332312","naicsName":"FABRICATED
|
|
399
|
+
STRUCTURAL METAL MANUFACTURING"},{"isPrimary":false,"naicsCode":"541512","naicsName":"COMPUTER
|
|
400
|
+
SYSTEMS DESIGN SERVICES"},{"isPrimary":false,"naicsCode":"561320","naicsName":"TEMPORARY
|
|
401
|
+
HELP SERVICES"}],"corporateUrl":"www.geocent.com","altGovtBusinessPoc":{"lastName":"LAMOTTA","usPhoneExt":"1179","fax":"5048311901","address":{"Line2":"STE.
|
|
402
|
+
1600","Zip4":"3044","Line1":"111 VETERANS BLVD.","Zip":"70005","Country":"USA","City":"METAIRIE","stateorProvince":"LA"},"email":"LORENA.LAMOTTA@GEOCENT.COM","usPhone":"5048311900","firstName":"LORENA"},"creditCardUsage":false,"countryOfIncorporation":"USA","electronicBusinessPoc":{"lastName":"MURRAY","usPhoneExt":"1142","fax":"5048311901","address":{"Line2":"STE.
|
|
403
|
+
1600","Zip4":"3044","Line1":"111 VETERANS BLVD.","Zip":"70005","Country":"USA","City":"METAIRIE","stateorProvince":"LA"},"email":"CONTRACTS@GEOCENT.COM","middleInitial":"S.","usPhone":"5048311900","firstName":"CATHERINE"},"mailingAddress":{"Line2":"Suite
|
|
404
|
+
1600","Zip4":"3044","Line1":"111 VETERANS MEMORIAL BLVD","Zip":"70005","Country":"USA","City":"METAIRIE","stateorProvince":"LA"},"purposeOfRegistration":"ALL_AWARDS"}}}'
|
|
405
|
+
http_version:
|
|
406
|
+
recorded_at: Tue, 29 Dec 2015 22:17:53 GMT
|
|
407
|
+
- request:
|
|
408
|
+
method: get
|
|
409
|
+
uri: https://api.data.gov/sam/v1/registrations/0000001000000?api_key=<data_dot_gov_api_key>
|
|
410
|
+
body:
|
|
411
|
+
encoding: US-ASCII
|
|
412
|
+
string: ''
|
|
413
|
+
headers:
|
|
414
|
+
User-Agent:
|
|
415
|
+
- Faraday v0.9.2
|
|
416
|
+
Accept-Encoding:
|
|
417
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
|
418
|
+
Accept:
|
|
419
|
+
- "*/*"
|
|
420
|
+
response:
|
|
421
|
+
status:
|
|
422
|
+
code: 404
|
|
423
|
+
message: Not Found
|
|
424
|
+
headers:
|
|
425
|
+
Age:
|
|
426
|
+
- '0'
|
|
427
|
+
Content-Type:
|
|
428
|
+
- application/json
|
|
429
|
+
Date:
|
|
430
|
+
- Tue, 29 Dec 2015 22:17:52 GMT
|
|
431
|
+
Server:
|
|
432
|
+
- openresty
|
|
433
|
+
Vary:
|
|
434
|
+
- Accept-Encoding
|
|
435
|
+
- Accept-Encoding
|
|
436
|
+
Via:
|
|
437
|
+
- http/1.1 api-umbrella (ApacheTrafficServer [cMsSf ])
|
|
438
|
+
X-Cache:
|
|
439
|
+
- MISS
|
|
440
|
+
X-Ratelimit-Limit:
|
|
441
|
+
- '5000'
|
|
442
|
+
X-Ratelimit-Remaining:
|
|
443
|
+
- '4895'
|
|
444
|
+
Content-Length:
|
|
445
|
+
- '100'
|
|
446
|
+
Connection:
|
|
447
|
+
- keep-alive
|
|
448
|
+
body:
|
|
449
|
+
encoding: UTF-8
|
|
450
|
+
string: '{"Message":"The registration could not be found","Code":404,"Error":"Not
|
|
451
|
+
Found"}'
|
|
452
|
+
http_version:
|
|
453
|
+
recorded_at: Tue, 29 Dec 2015 22:17:53 GMT
|
|
454
|
+
recorded_with: VCR 2.9.3
|
metadata
ADDED
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: samwise
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Alan deLevie
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2016-01-04 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: codeclimate-test-reporter
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '0.1'
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0.1'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: rake
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '10.0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '10.0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: rdoc
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - "~>"
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '4.0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - "~>"
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '4.0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: rspec
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '3.0'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '3.0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: rubygems-tasks
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - "~>"
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0.2'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - "~>"
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0.2'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: vcr
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - ">="
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - ">="
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: pry
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - ">="
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '0'
|
|
104
|
+
type: :development
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - ">="
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '0'
|
|
111
|
+
- !ruby/object:Gem::Dependency
|
|
112
|
+
name: webmock
|
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
|
114
|
+
requirements:
|
|
115
|
+
- - ">="
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: '0'
|
|
118
|
+
type: :development
|
|
119
|
+
prerelease: false
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - ">="
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: '0'
|
|
125
|
+
- !ruby/object:Gem::Dependency
|
|
126
|
+
name: faraday
|
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
|
128
|
+
requirements:
|
|
129
|
+
- - ">="
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
version: '0'
|
|
132
|
+
type: :runtime
|
|
133
|
+
prerelease: false
|
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
+
requirements:
|
|
136
|
+
- - ">="
|
|
137
|
+
- !ruby/object:Gem::Version
|
|
138
|
+
version: '0'
|
|
139
|
+
description: A Ruby library that provides access to the SAM.gov API
|
|
140
|
+
email: alan.delevie@gsa.gov
|
|
141
|
+
executables: []
|
|
142
|
+
extensions: []
|
|
143
|
+
extra_rdoc_files: []
|
|
144
|
+
files:
|
|
145
|
+
- ".document"
|
|
146
|
+
- ".gitignore"
|
|
147
|
+
- ".rdoc_options"
|
|
148
|
+
- ".rspec"
|
|
149
|
+
- ".travis.yml"
|
|
150
|
+
- CONTRIBUTING.md
|
|
151
|
+
- ChangeLog.md
|
|
152
|
+
- Gemfile
|
|
153
|
+
- LICENSE.md
|
|
154
|
+
- README.md
|
|
155
|
+
- Rakefile
|
|
156
|
+
- lib/samwise.rb
|
|
157
|
+
- lib/samwise/client.rb
|
|
158
|
+
- lib/samwise/protocol.rb
|
|
159
|
+
- lib/samwise/util.rb
|
|
160
|
+
- lib/samwise/version.rb
|
|
161
|
+
- samwise.gemspec
|
|
162
|
+
- spec/client_spec.rb
|
|
163
|
+
- spec/protocol_spec.rb
|
|
164
|
+
- spec/samwise_spec.rb
|
|
165
|
+
- spec/spec_helper.rb
|
|
166
|
+
- spec/util_spec.rb
|
|
167
|
+
- spec/vcr/Samwise_Client.yml
|
|
168
|
+
homepage: https://rubygems.org/gems/samwise
|
|
169
|
+
licenses:
|
|
170
|
+
- Public Domain. See CONTRIBUTING.md.
|
|
171
|
+
metadata: {}
|
|
172
|
+
post_install_message:
|
|
173
|
+
rdoc_options: []
|
|
174
|
+
require_paths:
|
|
175
|
+
- lib
|
|
176
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
177
|
+
requirements:
|
|
178
|
+
- - ">="
|
|
179
|
+
- !ruby/object:Gem::Version
|
|
180
|
+
version: '0'
|
|
181
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
182
|
+
requirements:
|
|
183
|
+
- - ">="
|
|
184
|
+
- !ruby/object:Gem::Version
|
|
185
|
+
version: '0'
|
|
186
|
+
requirements: []
|
|
187
|
+
rubyforge_project:
|
|
188
|
+
rubygems_version: 2.2.2
|
|
189
|
+
signing_key:
|
|
190
|
+
specification_version: 4
|
|
191
|
+
summary: Ruby access to the SAM.gov API
|
|
192
|
+
test_files:
|
|
193
|
+
- spec/client_spec.rb
|
|
194
|
+
- spec/protocol_spec.rb
|
|
195
|
+
- spec/samwise_spec.rb
|
|
196
|
+
- spec/spec_helper.rb
|
|
197
|
+
- spec/util_spec.rb
|
|
198
|
+
- spec/vcr/Samwise_Client.yml
|