pixallent-fetchapi-ruby 0.9.1 → 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ v.0.9.2 Prelim RDoc complete; misc fixes to all classes
2
+
3
+ v.0.9.1 Prelim BETA
4
+
1
5
  v.0.9 Item Support
2
6
 
3
7
  v.0.2.2 Order support
data/README CHANGED
@@ -1,13 +1,17 @@
1
- == Installation
1
+ = Installation
2
+ From Github
2
3
  gem sources -a http://gems.github.com (you only have to do this once)
3
4
  gem install pixallent-fetchapi-ruby
5
+
6
+ RubyForge
7
+ coming soon!
4
8
 
5
9
  = Setup
6
10
  FetchAPI::Base.basic_auth('youraccount.fetchapp.com', 'demokey', 'demotoken')
7
11
 
8
12
  = Account
9
13
 
10
- FetchAPI::Account.details
14
+ account = FetchAPI::Account.details
11
15
 
12
16
  token = FetchAPI::Account.new_token *Subsequent calls will use the new token automatically
13
17
 
data/Rakefile CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'rake'
3
3
  require 'echoe'
4
4
 
5
- Echoe.new('fetchapi-ruby', '0.9.1') do |p|
5
+ Echoe.new('fetchapi-ruby', '0.9.2') do |p|
6
6
  p.description = "Integrate your site with http://fetchapp.com for seamless digital delivery."
7
7
  p.url = "http://github.com/pixallent/fetchapi-ruby"
8
8
  p.author = ["Thomas Reynolds, Michael Larkin"]
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{fetchapi-ruby}
5
- s.version = "0.9.1"
5
+ s.version = "0.9.2"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Thomas Reynolds, Michael Larkin"]
9
- s.date = %q{2009-05-01}
9
+ s.date = %q{2009-05-04}
10
10
  s.description = %q{Integrate your site with http://fetchapp.com for seamless digital delivery.}
11
11
  s.email = %q{mikelarkin@pixallent.com}
12
12
  s.extra_rdoc_files = ["CHANGELOG", "lib/fetchapi/account.rb", "lib/fetchapi/base.rb", "lib/fetchapi/download.rb", "lib/fetchapi/item.rb", "lib/fetchapi/order.rb", "lib/fetchapi-ruby.rb", "LICENSE", "README"]
@@ -1,12 +1,15 @@
1
1
  module FetchAPI
2
2
  class Account < FetchAPI::Base
3
+ attr_accessor :attributes
3
4
  #--
4
5
  ################ Class Methods ###############
5
6
  #--
6
7
 
7
8
  # Retrieves information about the Account
8
9
  def self.details
9
- new(execute(:get, "/account"))
10
+ account = Account.new({})
11
+ account.attributes = execute(:get, "/account")["account"]
12
+ account
10
13
  end
11
14
 
12
15
  # Generates a new API token. Subsequent API calls using the
@@ -15,8 +18,7 @@ module FetchAPI
15
18
  token = execute(:get, "/new_token")
16
19
  unless token["message"].blank?
17
20
  # Reauthorize
18
- puts "XXXXXXXX #{token["message"]}"
19
- Connector.basic_auth(@key, token["message"])
21
+ Connector.basic_auth(FetchAPI::Base.key, token["message"])
20
22
  token
21
23
  end
22
24
  end
data/lib/fetchapi/base.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module FetchAPI
2
2
  class Base
3
-
4
- def initialize(id_or_attributes)
3
+ require 'pp'
4
+ def initialize(id_or_attributes) #:nodoc:
5
5
  case id_or_attributes
6
6
  when Integer, String
7
7
  @attributes = get("/#{self.class.pluralized_class_name}/#{id_or_attributes.to_s}")
@@ -13,7 +13,7 @@ module FetchAPI
13
13
  end
14
14
  end
15
15
 
16
- def self.find(selector, params={})
16
+ def self.find(selector, params={}) #:nodoc:
17
17
  case selector
18
18
  when :all
19
19
  objects = execute(:get, "/#{pluralized_class_name}")
@@ -28,38 +28,53 @@ module FetchAPI
28
28
  end
29
29
  end
30
30
 
31
- class Connector
31
+ class Connector #:nodoc:
32
32
  include HTTParty
33
33
  format :xml
34
34
  end
35
35
 
36
- # Initializes the connection
36
+ # Initializes the connection to the API
37
37
  def self.basic_auth(url, key, token)
38
- @key = key # Save this in case they generate a new token
38
+ @key = key # Save this in case they generate a new token later
39
39
  Connector.base_uri(url)
40
40
  Connector.basic_auth(key, token)
41
41
  end
42
42
 
43
+ def self.key #:nodoc:
44
+ return @key
45
+ end
46
+
43
47
  protected
44
- def self.singularized_class_name
48
+ def self.singularized_class_name #:nodoc:
45
49
  ancestors.first.to_s.split('::').last.downcase
46
50
  end
47
- def self.pluralized_class_name
51
+ def self.pluralized_class_name #:nodoc:
48
52
  ancestors.first.to_s.split('::').last.downcase << 's'
49
53
  end
50
54
 
51
- def post(*args); self.class.execute(:post, *args); end
52
- def get(*args); self.class.execute(:get, *args); end
53
- def delete(*args); self.class.execute(:delete, *args); end
54
- def put(*args); self.class.execute(:put, *args); end
55
+ def post(*args) #:nodoc:
56
+ self.class.execute(:post, *args)
57
+ end
58
+
59
+ def get(*args) #:nodoc:
60
+ self.class.execute(:get, *args)
61
+ end
62
+
63
+ def delete(*args) #:nodoc:
64
+ self.class.execute(:delete, *args)
65
+ end
66
+
67
+ def put(*args) #:nodoc:
68
+ self.class.execute(:put, *args)
69
+ end
55
70
 
56
71
  # Do HTTP request, handle errors
57
- def self.execute(action, path, options = {})
72
+ def self.execute(action, path, options = {}) #:nodoc:
58
73
  handle_response(Connector.send(action, path, :query => options))
59
74
  #Connector.send(action, path, options)
60
75
  end
61
76
 
62
- def self.handle_response(response)
77
+ def self.handle_response(response) #:nodoc:
63
78
  case response.code
64
79
  when 100..199 then response
65
80
  when 200..299 then response
@@ -77,7 +92,7 @@ module FetchAPI
77
92
 
78
93
 
79
94
  # Access attributes as class methods of the Item object
80
- def method_missing(method)
95
+ def method_missing(method) #:nodoc:
81
96
  return super unless attributes.has_key?(method.to_s)
82
97
  attributes[method.to_s]
83
98
  end
@@ -1,5 +1,11 @@
1
1
  module FetchAPI
2
2
  class Download < FetchAPI::Base
3
3
  attr_accessor :id, :attributes
4
+
5
+ # Find :all downloads or the specified ID
6
+ def self.find(selector, params={})
7
+ super(selector, params={})
8
+ end
9
+
4
10
  end
5
11
  end
data/lib/fetchapi/item.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  module FetchAPI
2
2
  class Item < FetchAPI::Base
3
- attr_accessor :id, :attributes
3
+ attr_accessor :id, :attributes
4
4
 
5
- def initialize(id_or_attributes)
5
+ def initialize(id_or_attributes) #:nodoc:
6
6
  case id_or_attributes
7
7
  when Integer, String
8
8
  @attributes = get("/#{self.class.pluralized_class_name}/#{id_or_attributes.to_s}")
@@ -12,9 +12,18 @@ module FetchAPI
12
12
  end
13
13
  end
14
14
 
15
+
15
16
  #--
16
17
  ################ Class Methods ###############
17
18
  #--
19
+
20
+ # Find :all items or a specific SKU
21
+ def self.find(selector, params={})
22
+ super(selector, params={})
23
+ end
24
+
25
+
26
+ # Creates a new Item
18
27
  def self.create(options)
19
28
  return FetchAPI::Item.new(execute(:post, "/items/create", :item => options)["item"])
20
29
  end
@@ -23,21 +32,24 @@ module FetchAPI
23
32
  ################# Instance Methods ###############
24
33
  #--
25
34
 
35
+ # Permanently deletes the Item
26
36
  def destroy
27
37
  delete("/items/#{sku}/delete")
28
38
  end
29
39
 
40
+ # Immediately updates the Item
30
41
  def update(options)
31
42
  self.attributes = put("/items/#{sku}", :item => options)["item"]
32
- self.id = self.sku
43
+ self.id = self.sku
33
44
  end
34
45
 
35
- def downloads
36
- downloads = get("/items/#{sku}/downloads")
37
- if downloads
38
- downloads["downloads"].map { |data| FetchAPI::Download.new(data) }
39
- end
40
- end
46
+ # Returns all the downloads associated with this Item
47
+ def downloads
48
+ downloads = get("/items/#{sku}/downloads")
49
+ if downloads
50
+ downloads["downloads"].map { |data| FetchAPI::Download.new(data) }
51
+ end
52
+ end
41
53
 
42
54
 
43
55
  end
@@ -6,7 +6,9 @@ module FetchAPI
6
6
  #--
7
7
  ################ Class Methods ###############
8
8
  #--
9
-
9
+
10
+ # Finds an Order or orders based on the specified parameters
11
+ # :all, :current, :manual, :expired, or by ID
10
12
  def self.find(selector, params={})
11
13
  case selector
12
14
  when :current
@@ -38,7 +40,7 @@ module FetchAPI
38
40
  end
39
41
  end
40
42
 
41
- # Creates a new order
43
+ # Creates a new Order
42
44
  def self.create(options={})
43
45
  return FetchAPI::Order.new(execute(:post, "/orders/create", :order => options)["order"])
44
46
  end
@@ -47,7 +49,7 @@ module FetchAPI
47
49
  ################# Instance Methods ###############
48
50
  #--
49
51
 
50
- # Permanently deletes the order
52
+ # Permanently deletes the Order
51
53
  def destroy
52
54
  delete("/orders/#{id}/delete")
53
55
  end
@@ -65,11 +67,12 @@ module FetchAPI
65
67
  post("/orders/#{id}/send_email", options)
66
68
  end
67
69
 
68
- # Immediately updates the order with the new parameters
70
+ # Immediately updates the Order with the new parameters
69
71
  def update(options={})
70
72
  self.attributes = put("/orders/#{id}", :order => options)["order"]
71
73
  end
72
-
74
+
75
+ # Returns all the downloads associated with this Order
73
76
  def downloads(params={})
74
77
  downloads = get("/orders/#{id}/downloads")
75
78
  if downloads
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pixallent-fetchapi-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Reynolds, Michael Larkin
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-05-01 00:00:00 -07:00
12
+ date: 2009-05-04 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency