2Performant 0.0.1 → 0.0.2

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.
@@ -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.