2Performant 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,23 +5,23 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{2Performant}
8
- s.version = "0.0.1"
8
+ s.version = "0.0.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["2Performant"]
12
- s.date = %q{2010-04-29}
12
+ s.date = %q{2010-05-04}
13
13
  s.description = %q{Library for the 2Performant API}
14
14
  s.email = %q{andrei@2performant.com}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
- "README.rdoc"
17
+ "README.md"
18
18
  ]
19
19
  s.files = [
20
20
  ".document",
21
21
  ".gitignore",
22
22
  "2Performant.gemspec",
23
23
  "LICENSE",
24
- "README.rdoc",
24
+ "README.md",
25
25
  "Rakefile",
26
26
  "VERSION",
27
27
  "lib/two_performant.rb",
@@ -0,0 +1,55 @@
1
+ # 2Performant Ruby API
2
+
3
+ The API allows you to integrate any 2Performant network in your application.
4
+
5
+ Its goal is to make sure developers can implement anything that can be done via the web interface using API functions.
6
+
7
+ The API is RESTful XML over HTTP using all four verbs (GET/POST/PUT/DELETE).
8
+
9
+ The current implementation is a straight port of the PHP library, so the documentation applies, for the most part, to both libraries.
10
+
11
+ API documentation can be found at:
12
+ http://help.2performant.com/API
13
+
14
+
15
+ ## Some Examples
16
+
17
+ Interacting with 2Performant networks is very easy.
18
+
19
+
20
+ To initialize the object using simple authentication
21
+
22
+ session = TwoPerformant.new(:simple, {
23
+ :user => 'user',
24
+ :pass => 'password',
25
+ }, 'http://api.yournetwork.com')
26
+
27
+ To use oauth
28
+
29
+ tp = TwoPerformant.new(:oauth, {
30
+ :consumer_token => 'consumer_token',
31
+ :consumer_secret => 'consumer_secret',
32
+ :access_token => 'access_token',
33
+ :access_secret => 'access_secret'
34
+ }, 'http://api.yournetwork.com')
35
+
36
+
37
+ Afterwards you can call any function from the TPerformant class:
38
+
39
+ # display the last 6 received messages
40
+ p session.received_messages_list
41
+
42
+ For details about each API function the documentation can be found at:
43
+ http://help.2performant.com/API
44
+
45
+
46
+ ## Advanced Applications
47
+
48
+ You can build advanced applications using the 2Performant API and have them distributed over 2Performant App Store.
49
+
50
+ Get Started at: http://apps.2performant.com and http://help.2performant.com/Developers-Area
51
+
52
+ ## Reporting Problems
53
+
54
+ If you encounters any problems don't hesitate to contact us at:
55
+ support (at) 2performant.com
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
@@ -3,6 +3,9 @@ require 'two_performant/oauth'
3
3
 
4
4
  class TwoPerformant
5
5
  include HTTParty
6
+ format :xml
7
+ headers 'Content-Type' => 'text/xml'
8
+
6
9
  attr_accessor :user, :pass, :host, :version, :auth_type, :oauth, :oauth_request
7
10
 
8
11
  def initialize(auth_type, auth_obj, host)
@@ -14,6 +17,7 @@ class TwoPerformant
14
17
  return false
15
18
  end
16
19
 
20
+ self.version = "v1.0"
17
21
  self.auth_type = auth_type
18
22
  self.host = host
19
23
  self.class.base_uri host
@@ -258,7 +262,12 @@ class TwoPerformant
258
262
 
259
263
  #
260
264
  # Merchants: Create Text Link.
261
- # Txtlink must look like: array("title" => "title", "url" => "url", "help" => "help"); where "help" is optional
265
+ #
266
+ # Txtlink must be a hash of:
267
+ # { "title" => "title",
268
+ # "url" => "url",
269
+ # "help" => "help"
270
+ # }, where "help" is optional
262
271
 
263
272
  def txtlink_create(campaign_id, txtlink)
264
273
  request = {
@@ -314,8 +323,12 @@ class TwoPerformant
314
323
 
315
324
  #
316
325
  # Merchants: Create Text Ad.
317
- # Txtad must look like: array("title" => "title", "content" => "content", "url" => "url", "help" => "help"); where "help" is optional
318
-
326
+ # Txtad must be a hash of:
327
+ # { "title" => "title",
328
+ # "content" => "content",
329
+ # "url" => "url",
330
+ # "help" => "help"
331
+ # }, where "help" is optional
319
332
  def txtad_create(campaign_id, txtad)
320
333
  request = {
321
334
  'txtad' => txtad
@@ -459,11 +472,18 @@ class TwoPerformant
459
472
 
460
473
  #
461
474
  # Merchants: Create a WidgetStoreProduct.
462
- # WidgetStoreProduct must look like:
463
- # array("title" => "title", "description" => "desc", "caption" => "caption", "price" => "price(integer in RON)",
464
- # "promoted" => "promoted (0 or 1)", "category" => "category", "subcategory" => "subcategory", "url" => "url",
465
- # "image_url" => "url to image location", "prid" => "product id")
466
-
475
+ # WidgetStoreProduct must be a hash of:
476
+ # { "title" => "title",
477
+ # "description" => "desc",
478
+ # "caption" => "caption",
479
+ # "price" => "price(integer in RON)",
480
+ # "promoted" => "promoted (0 or 1)",
481
+ # "category" => "category",
482
+ # "subcategory" => "subcategory",
483
+ # "url" => "url",
484
+ # "image_url" => "url to image location",
485
+ # "prid" => "product id"
486
+ # }
467
487
  def product_store_createitem(product_store_id, product)
468
488
  request = {
469
489
  'product' => product
@@ -555,24 +575,38 @@ class TwoPerformant
555
575
  end
556
576
 
557
577
 
558
- # ===========================
559
- # Actually process the data
560
- # ===========================
561
-
562
- def hook(path, expected, send = nil, method = 'GET')
578
+ def hook(path, expected, send = nil, method = 'GET') #:nodoc:
579
+ params = normalize_params(send, method)
580
+
563
581
  if self.oauth
564
- result = self.oauth.send(method.downcase, path, send)
582
+ result = self.oauth.send(method.downcase, "/#{version}#{path}", send, params)
565
583
  else
566
- result = self.class.send(method.downcase, path, :query => send)
584
+ result = self.class.send(method.downcase, "/#{version}#{path}", :body => params)
567
585
  end
568
586
 
569
587
  # scrap the container
570
- result.values.first
588
+ if result.respond_to? :values
589
+ result.values.first
590
+ else
591
+ result
592
+ end
571
593
  end
572
-
573
- def simpleHttpRequest(url, params, method)
594
+
595
+ def normalize_params(params, method)
596
+ hash_to_xml(:request => params).to_s
574
597
  end
575
598
 
576
- def oauthHttpRequest(url, params, method)
599
+ def hash_to_xml(var, document = nil)
600
+ document = REXML::Document.new if document.nil?
601
+
602
+ if var.respond_to? :keys
603
+ var.keys.each do |key|
604
+ hash_to_xml(var[key], document.add_element(key.to_s))
605
+ end
606
+ else
607
+ document.add_text(var.to_s)
608
+ end
609
+
610
+ document
577
611
  end
578
612
  end
@@ -7,28 +7,26 @@ class TwoPerformant
7
7
  def initialize(options, host)
8
8
  consumer = ::OAuth::Consumer.new(options[:consumer_token], options[:consumer_secret], {:site => host})
9
9
  @access_token = ::OAuth::AccessToken.new(consumer, options[:access_token], options[:access_secret])
10
+ @headers = { 'Accept' => 'application/xml', 'Content-Type' => 'application/xml' }
10
11
  end
11
12
 
12
- def get(path, params)
13
- params ||= {}
14
- response = access_token.get("#{path}?#{params.to_params}")
13
+ def get(path, params_hash, params_xml)
14
+ params_hash ||= {}
15
+ response = access_token.get("#{path}?#{params_hash.to_params}")
15
16
  Crack::XML.parse(response.body)
16
17
  end
17
18
 
18
- def post(path, params)
19
- params ||= {}
20
- response = access_token.post(path, params)
19
+ def post(path, params_hash, params_xml)
20
+ response = access_token.post(path, params_xml, @headers)
21
21
  Crack::XML.parse(response.body)
22
22
  end
23
23
 
24
- def put(path, params)
25
- params ||= {}
26
- response = access_token.put(path, params)
24
+ def put(path, params_hash, params_xml)
25
+ response = access_token.put(path, params_xml, @headers)
27
26
  Crack::XML.parse(response.body)
28
27
  end
29
28
 
30
29
  def delete(path, params)
31
- params ||= {}
32
30
  response = access_token.delete("#{path}?#{params.to_params}")
33
31
  Crack::XML.parse(response.body)
34
32
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 1
9
- version: 0.0.1
8
+ - 2
9
+ version: 0.0.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - 2Performant
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-04-29 00:00:00 +03:00
17
+ date: 2010-05-04 00:00:00 +03:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -49,13 +49,13 @@ extensions: []
49
49
 
50
50
  extra_rdoc_files:
51
51
  - LICENSE
52
- - README.rdoc
52
+ - README.md
53
53
  files:
54
54
  - .document
55
55
  - .gitignore
56
56
  - 2Performant.gemspec
57
57
  - LICENSE
58
- - README.rdoc
58
+ - README.md
59
59
  - Rakefile
60
60
  - VERSION
61
61
  - lib/two_performant.rb
@@ -1,17 +0,0 @@
1
- = 2performant
2
-
3
- Description goes here.
4
-
5
- == Note on Patches/Pull Requests
6
-
7
- * Fork the project.
8
- * Make your feature addition or bug fix.
9
- * Add tests for it. This is important so I don't break it in a
10
- future version unintentionally.
11
- * Commit, do not mess with rakefile, version, or history.
12
- (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
13
- * Send me a pull request. Bonus points for topic branches.
14
-
15
- == Copyright
16
-
17
- Copyright (c) 2010 2Performant. See LICENSE for details.