usaspending 0.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.
data/CHANGES.textile ADDED
@@ -0,0 +1,3 @@
1
+ h3. 0.1.0 / 2010-05-17
2
+
3
+ * Initial version
data/README.textile ADDED
@@ -0,0 +1,18 @@
1
+ h1. USA Spending API Wrapper
2
+
3
+ NOTE: This is an unofficial ruby gem. The developer is not connected to USASpending.gov
4
+
5
+ h2. Usage
6
+
7
+ *Initialize the search*
8
+ s = USA::Procurement.new
9
+
10
+ *Add the qualifiers*
11
+ s.detail("b").max_records(69).years(2009).state("MO")
12
+
13
+ *Fetch the contracts, returns an array of contract objects*
14
+ s.fetch_contracts
15
+
16
+ *Access a contract's attributes*
17
+ contract = s.fetch_contracts.first
18
+ contract.dollarsobligated
@@ -0,0 +1,51 @@
1
+ module USA
2
+
3
+ class Base
4
+ API_URL = "http://www.usaspending.gov"
5
+
6
+ #construct the url. Requires a database name, currently FAADS or FPDS
7
+ def construct_url(database, params)
8
+ if database == nil or database == ''
9
+ raise "Failed to provide a Federal Database such as FAADS or FPDS"
10
+ else
11
+ "#{API_URL}/#{database.downcase}/#{database.downcase}.php?datype=X#{hash2get(params)}"
12
+ end
13
+ end
14
+
15
+ # Converts a hash to a GET string
16
+ def hash2get(h)
17
+ get_string = ""
18
+ h.each_pair do |key, value|
19
+ get_string += "&#{key.to_s}=#{CGI::escape(value.to_s)}"
20
+ end
21
+
22
+ get_string
23
+
24
+ end # def hash2get
25
+
26
+ # Use the Open URI and NokoGiri libraries to make the API call
27
+ #
28
+ # Usage:
29
+ # Class::Instance.get_data("http://someurl.com") # returns Hash of data or nil
30
+ def get_data(url)
31
+ response = Net::HTTP.get_response(URI.parse(url))
32
+ if response.class == Net::HTTPOK
33
+ result = XmlSimple.xml_in(response.body)
34
+ else
35
+ nil
36
+ end
37
+ end # self.get_data
38
+
39
+
40
+ # Sets attr_accessor methods for sub classes to keys in xml hashes
41
+ def set_instance_methods(params)
42
+
43
+ params.each do |key, value|
44
+ instance_variable_set("@#{key.downcase}", value) if self.methods.include? key.downcase and !value.empty?
45
+ end
46
+
47
+ end
48
+
49
+ end
50
+
51
+ end
@@ -0,0 +1,9 @@
1
+ require 'time'
2
+ require 'cgi'
3
+ require 'open-uri'
4
+ require 'xmlsimple'
5
+ require 'net/http'
6
+ require 'net/https'
7
+
8
+ require "#{File.dirname(__FILE__)}/usaspending/base.rb"
9
+ Dir["#{File.dirname(__FILE__)}/usaspending/*.rb"].each { |source_file| require source_file }
@@ -0,0 +1,11 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = "usaspending"
3
+ s.version = "0.1.0"
4
+ s.date = "2010-5-17"
5
+ s.summary = "Ruby gem wrapper for USAspending.gov"
6
+ s.rubyforge_project = "usaspending"
7
+ s.email = "melton.dan@gmail.com"
8
+ s.homepage = "http://github.com/danmelton/usaspending"
9
+ s.authors = ["Dan Melton"]
10
+ s.files = ['usaspending.gemspec','README.textile', 'CHANGES.textile', 'lib/usaspending.rb','lib/usaspending/base.rb' ]
11
+ end
metadata ADDED
@@ -0,0 +1,66 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: usaspending
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 0
9
+ version: 0.1.0
10
+ platform: ruby
11
+ authors:
12
+ - Dan Melton
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-05-17 00:00:00 -05:00
18
+ default_executable:
19
+ dependencies: []
20
+
21
+ description:
22
+ email: melton.dan@gmail.com
23
+ executables: []
24
+
25
+ extensions: []
26
+
27
+ extra_rdoc_files: []
28
+
29
+ files:
30
+ - usaspending.gemspec
31
+ - README.textile
32
+ - CHANGES.textile
33
+ - lib/usaspending.rb
34
+ - lib/usaspending/base.rb
35
+ has_rdoc: true
36
+ homepage: http://github.com/danmelton/usaspending
37
+ licenses: []
38
+
39
+ post_install_message:
40
+ rdoc_options: []
41
+
42
+ require_paths:
43
+ - lib
44
+ required_ruby_version: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ segments:
49
+ - 0
50
+ version: "0"
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ segments:
56
+ - 0
57
+ version: "0"
58
+ requirements: []
59
+
60
+ rubyforge_project: usaspending
61
+ rubygems_version: 1.3.6
62
+ signing_key:
63
+ specification_version: 3
64
+ summary: Ruby gem wrapper for USAspending.gov
65
+ test_files: []
66
+