pas 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.
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
1
  pkg/*
2
2
  *.gem
3
- .bundle
3
+ .bundle
4
+ Gemfile.lock
data/lib/pas.rb CHANGED
@@ -1,13 +1,31 @@
1
- require 'active_resource'
2
- require 'active_support'
3
- require 'openssl'
4
- require 'base64'
5
- require 'pas/version'
6
- require 'pas/resource'
7
- require 'pas/member'
8
- require 'pas/member_tracker'
1
+ module PAS
2
+ require 'active_resource'
3
+ require 'active_support'
4
+ require 'openssl'
5
+ require 'base64'
9
6
 
10
- class PAS
11
- cattr_accessor :api_access_key
12
- cattr_accessor :api_token
7
+ autoload :Connection, 'pas/connection'
8
+ autoload :Resource, 'pas/resource'
9
+ autoload :Session, 'pas/session'
10
+ autoload :Member, 'pas/member'
11
+ autoload :MemberTracker, 'pas/member_tracker'
12
+
13
+ class << self
14
+
15
+ def config
16
+ @config ||= {
17
+ :api_access_key => "",
18
+ :api_token => "",
19
+ :domain_name => "https://publisher.pokeraffiliatesolutions.com/"
20
+ }
21
+ end
22
+
23
+ end
24
+
25
+ class Error < RuntimeError; end
26
+ class DisabledMethodError < PAS::Error
27
+ def initialize
28
+ super "This method is disabled for this Resource"
29
+ end
30
+ end
13
31
  end
@@ -0,0 +1,36 @@
1
+ module PAS
2
+ class Connection < ActiveResource::Connection
3
+
4
+ def get(path, headers = {})
5
+ super(merge_signature_to_path(:get, path), headers)
6
+ end
7
+
8
+ def delete(path, headers = {})
9
+ super(merge_signature_to_path(:delete, path), headers)
10
+ end
11
+
12
+ def put(path, body = '', headers = {})
13
+ super(merge_signature_to_path(:put, path), body, headers)
14
+ end
15
+
16
+ def post(path, body = '', headers = {})
17
+ super(merge_signature_to_path(:post, path), body, headers)
18
+ end
19
+
20
+ private
21
+ def merge_signature_to_path(request_method, path)
22
+ path, query = path.split("?")
23
+ timestamp = Time.now.to_i.to_s
24
+ signature = CGI::escape(generate_signature(request_method, path, timestamp))
25
+ params = "?#{query.blank? ? "" : "#{query}&" }api_token=#{PAS.config[:api_token].to_s}&timestamp=#{timestamp}&signature=#{signature}"
26
+
27
+ path + params
28
+ end
29
+
30
+ def generate_signature(request_method, path, timestamp)
31
+ data = PAS.config[:api_token].to_s + request_method.to_s.upcase + path + timestamp
32
+ signature = OpenSSL::HMAC.digest(OpenSSL::Digest::SHA1.new, PAS.config[:api_access_key].to_s, data)
33
+ Base64.encode64(signature).chomp
34
+ end
35
+ end
36
+ end
@@ -1,5 +1,15 @@
1
- class PAS
2
- class Member < Resource
3
- self.element_name = "publisher_member"
1
+ module PAS
2
+ class Member < PAS::Resource
3
+ self.collection_name = "publisher_members"
4
+
5
+ class << self
6
+ def delete(*args)
7
+ raise PAS::DisabledMethodError
8
+ end
9
+ end
10
+
11
+ def destroy
12
+ raise PAS::DisabledMethodError
13
+ end
4
14
  end
5
15
  end
@@ -1,5 +1,15 @@
1
- class PAS
2
- class MemberTracker < Resource
3
- self.element_name = "publisher_member_tracker"
1
+ module PAS
2
+ class MemberTracker < PAS::Resource
3
+ self.collection_name = "publisher_member_trackers"
4
+
5
+ class << self
6
+ def delete(*args)
7
+ raise PAS::DisabledMethodError
8
+ end
9
+ end
10
+
11
+ def destroy
12
+ raise PAS::DisabledMethodError
13
+ end
4
14
  end
5
15
  end
@@ -1,26 +1,18 @@
1
- class PAS
1
+ module PAS
2
2
  class Resource < ActiveResource::Base
3
- self.site = "http://publisher.pas.local"
3
+ self.site = PAS.config[:domain_name]
4
4
 
5
5
  class << self
6
- # Find a single resource from the default URL
7
- def find_single(scope, options)
8
- prefix_options, query_options = split_options(options[:params])
9
-
10
- # Generate the API authentication signature and merge parameters to the query_options
11
- path_without_query_options = element_path(scope, prefix_options)
12
- timestamp = Time.now.to_i.to_s
13
- signature = generate_signature("GET", path_without_query_options, timestamp)
14
- query_options.merge!({ :api_token => PAS.api_token.to_s, :timestamp => timestamp, :signature => signature })
15
-
16
- path = element_path(scope, prefix_options, query_options)
17
- instantiate_record(connection.get(path, headers), prefix_options)
18
- end
19
-
20
- def generate_signature(request_method, request_path, timestamp)
21
- data = PAS.api_token.to_s + request_method + request_path + timestamp
22
- signature = OpenSSL::HMAC.digest(OpenSSL::Digest::SHA1.new, PAS.api_access_key.to_s, data)
23
- Base64.encode64(signature).chomp
6
+ def connection(refresh = false)
7
+ if defined?(@connection) || superclass == Object
8
+ @connection = PAS::Connection.new(site, format) if refresh || @connection.nil?
9
+ @connection.user = user if user
10
+ @connection.password = password if password
11
+ @connection.timeout = timeout if timeout
12
+ @connection
13
+ else
14
+ superclass.connection
15
+ end
24
16
  end
25
17
  end
26
18
  end
@@ -0,0 +1,19 @@
1
+ module PAS
2
+ class Session < PAS::Resource
3
+ self.collection_name = "member_remote_sessions"
4
+
5
+ class << self
6
+ def delete(*args)
7
+ raise PAS::DisabledMethodError
8
+ end
9
+ end
10
+
11
+ def destroy
12
+ raise PAS::DisabledMethodError
13
+ end
14
+
15
+ def update
16
+ raise PAS::DisabledMethodError
17
+ end
18
+ end
19
+ end
@@ -1,3 +1,3 @@
1
- class PAS
2
- VERSION = "0.0.1"
1
+ module PAS
2
+ VERSION = "0.0.2"
3
3
  end
@@ -9,7 +9,7 @@ Gem::Specification.new do |s|
9
9
  s.email = "jfernandez@fourcubed.com"
10
10
  s.homepage = "http://github.com/jfernandez/pas"
11
11
  s.summary = "Poker Affiliate Solutions API Wrapper Gem"
12
- s.description = "This gem allows you to communicate with the PokerAffiliateSolutions.com REST API"
12
+ s.description = "This gem allows you to communicate with the PokerAffiliateSolutions.com REST API [Alpha]"
13
13
 
14
14
  s.required_rubygems_version = ">= 1.3.6"
15
15
  s.rubyforge_project = "pas"
@@ -18,6 +18,7 @@ Gem::Specification.new do |s|
18
18
  s.add_dependency("activesupport", "~> 2.3.5")
19
19
 
20
20
  s.add_development_dependency "bundler", ">= 1.0.0"
21
+ s.add_development_dependency "rspec", "2.0.0"
21
22
 
22
23
  s.files = `git ls-files`.split("\n")
23
24
  s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe PAS do
4
+ it "has a default blank value for config[:api_access_key]" do
5
+ PAS.config[:api_access_key].should be_blank
6
+ end
7
+
8
+ it "has a default blank value for config[:api_token]" do
9
+ PAS.config[:api_token].should be_blank
10
+ end
11
+
12
+ it "has PAS's SSL domain name as the default value for config[:domain_name]" do
13
+ PAS.config[:domain_name].should == "https://publisher.pokeraffiliatesolutions.com/"
14
+ end
15
+ end
@@ -1,10 +1,7 @@
1
- require 'rubygems'
2
- require 'test/unit'
3
- require 'shoulda'
4
-
5
1
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
2
  $LOAD_PATH.unshift(File.dirname(__FILE__))
7
- require 'pas'
8
3
 
9
- class Test::Unit::TestCase
10
- end
4
+ require 'rubygems'
5
+ require 'bundler/setup'
6
+ require 'rspec'
7
+ require 'pas'
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pas
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jose Fernandez
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-15 00:00:00 -05:00
18
+ date: 2010-10-17 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -66,7 +66,23 @@ dependencies:
66
66
  version: 1.0.0
67
67
  type: :development
68
68
  version_requirements: *id003
69
- description: This gem allows you to communicate with the PokerAffiliateSolutions.com REST API
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ prerelease: false
72
+ requirement: &id004 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - "="
76
+ - !ruby/object:Gem::Version
77
+ hash: 15
78
+ segments:
79
+ - 2
80
+ - 0
81
+ - 0
82
+ version: 2.0.0
83
+ type: :development
84
+ version_requirements: *id004
85
+ description: This gem allows you to communicate with the PokerAffiliateSolutions.com REST API [Alpha]
70
86
  email: jfernandez@fourcubed.com
71
87
  executables: []
72
88
 
@@ -80,15 +96,16 @@ files:
80
96
  - LICENSE
81
97
  - README.rdoc
82
98
  - Rakefile
83
- - VERSION
84
99
  - lib/pas.rb
100
+ - lib/pas/connection.rb
85
101
  - lib/pas/member.rb
86
102
  - lib/pas/member_tracker.rb
87
103
  - lib/pas/resource.rb
104
+ - lib/pas/session.rb
88
105
  - lib/pas/version.rb
89
106
  - pas.gemspec
90
- - test/helper.rb
91
- - test/test_pas.rb
107
+ - spec/pas_spec.rb
108
+ - spec/spec_helper.rb
92
109
  has_rdoc: true
93
110
  homepage: http://github.com/jfernandez/pas
94
111
  licenses: []
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.1.0
@@ -1,7 +0,0 @@
1
- require 'helper'
2
-
3
- class TestPas < Test::Unit::TestCase
4
- should "probably rename this file and start testing for real" do
5
- flunk "hey buddy, you should probably rename this file and start testing for real"
6
- end
7
- end