tdreyno-fetchapi 0.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.
data/README ADDED
@@ -0,0 +1,5 @@
1
+ gem install tdreyno-fetchapi-ruby
2
+ require 'fetchapi'
3
+ FetchAPI.setup('demokey', 'demotoken')
4
+ FetchAPI::Item.find(:all)
5
+ FetchAPI::Order.find('0001').first_name
@@ -0,0 +1,13 @@
1
+ require 'rubygems'
2
+ require 'httparty'
3
+
4
+ $:.unshift(File.dirname(__FILE__))
5
+ require 'fetchapi/item'
6
+ require 'fetchapi/order'
7
+
8
+ module FetchAPI
9
+ def self.setup(key, token)
10
+ FetchAPI::Item.send(:basic_auth, key, token)
11
+ FetchAPI::Order.send(:basic_auth, key, token)
12
+ end
13
+ end
@@ -0,0 +1,52 @@
1
+ module FetchAPI
2
+ class Item
3
+ include HTTParty
4
+ base_uri 'http://demo.fetchapp.com/api'
5
+ basic_auth 'demokey', 'demotoken'
6
+ format :xml
7
+
8
+ attr_reader :sku
9
+ def initialize(data)
10
+ case data
11
+ when Integer, String
12
+ @sku = data
13
+ when Hash
14
+ @sku, @data = data['sku'], data
15
+ end
16
+ end
17
+
18
+ def destroy
19
+ self.delete("/items/#{sku}/delete")
20
+ end
21
+
22
+ def update(options)
23
+ self.post("/items/#{sku}/items", options)
24
+ end
25
+
26
+ def self.find(selector)
27
+ case selector
28
+ when :all
29
+ self.get('/items')['items'].map { |data| self.new(data) }
30
+ when Integer, String
31
+ self.new(selector)
32
+ end
33
+ end
34
+
35
+ def self.create(options)
36
+ self.post("/items/create", options)
37
+ end
38
+
39
+ protected
40
+ def data
41
+ @data ||= self.class.get("/items/#{sku}")['item']
42
+ end
43
+
44
+ def method_missing(method)
45
+ if (data.has_key? method.to_s)
46
+ data[method.to_s]
47
+ else
48
+ super
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,60 @@
1
+ module FetchAPI
2
+ class Order
3
+ include HTTParty
4
+ base_uri 'http://demo.fetchapp.com/api'
5
+ basic_auth 'demokey', 'demotoken'
6
+ format :xml
7
+
8
+ attr_reader :id
9
+ def initialize(data)
10
+ case data
11
+ when Integer, String
12
+ @id = data
13
+ when Hash
14
+ @id, @data = data['id'], data
15
+ end
16
+ end
17
+
18
+ def destroy
19
+ self.delete("/orders/#{id}/delete")
20
+ end
21
+
22
+ def expire
23
+ self.post("/orders/#{id}/expire")
24
+ end
25
+
26
+ def send_email(options)
27
+ self.post("/orders/#{id}/send_email", options)
28
+ end
29
+
30
+ def update(options)
31
+ self.post("/orders/#{id}/update", options)
32
+ end
33
+
34
+ def self.find(selector)
35
+ case selector
36
+ when :all
37
+ self.get('/orders')['orders'].map { |data| self.new(data) }
38
+ when Integer, String
39
+ self.new(selector)
40
+ end
41
+ end
42
+
43
+ def self.create(options)
44
+ self.post("/orders/create", options)
45
+ end
46
+
47
+ protected
48
+ def data
49
+ @data ||= self.class.get("/orders/#{id}")
50
+ end
51
+
52
+ def method_missing(method)
53
+ if (data.has_key? method.to_s)
54
+ data[method.to_s]
55
+ else
56
+ super
57
+ end
58
+ end
59
+ end
60
+ end
metadata ADDED
@@ -0,0 +1,64 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tdreyno-fetchapi
3
+ version: !ruby/object:Gem::Version
4
+ version: "0.1"
5
+ platform: ruby
6
+ authors:
7
+ - Thomas Reynolds
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-12-09 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: httparty
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: "0"
23
+ version:
24
+ description:
25
+ email: tdreyno@gmail.com
26
+ executables: []
27
+
28
+ extensions: []
29
+
30
+ extra_rdoc_files: []
31
+
32
+ files:
33
+ - README
34
+ - lib/fetchapi.rb
35
+ - lib/fetchapi/item.rb
36
+ - lib/fetchapi/order.rb
37
+ has_rdoc: false
38
+ homepage: http://github.com/tdreyno/fetchapi
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
+ version: "0"
49
+ version:
50
+ required_rubygems_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: "0"
55
+ version:
56
+ requirements: []
57
+
58
+ rubyforge_project:
59
+ rubygems_version: 1.2.0
60
+ signing_key:
61
+ specification_version: 2
62
+ summary: Ruby interface to fetchapp.com
63
+ test_files: []
64
+