2006年03月31日 (金)
Sledge::Plugin::Affiliate パッチ
こんなパッチ当てました。
- $TYPE_PARAM を Projectの都合で変更出来るようにした。
- Config の sites を配列ではなく、ハッシュにした。
- config の名前をよりわかりやすくした。
- url -> notice_url
- name -> session_name
Index: Affiliate.pm
===================================================================
--- Affiliate.pm (revision 4541)
+++ Affiliate.pm (working copy)
@@ -51,12 +51,11 @@
sub get_from_request { # xxx naming sense
my $self = shift;
- my $param = $self->page->r->param($TYPE_PARAM) || '';
+ my $aff_type = $self->page->r->param($self->_config->{aff_type_name} || $TYPE_PARAM) || '';
my $sites = $self->_config->{sites};
- for my $site (@$sites) { # xxx hash?
- if ($param eq $site->{name}) {
- $self->set($site->{name} => $self->page->r->param($site->{param}));
- }
+
+ if (exists $sites->{$aff_type}) {
+ $self->set($aff_type => $self->page->r->param($sites->{$aff_type}->{session_name}));
}
}
@@ -78,15 +77,15 @@
return unless $self->get; # no affiliate info
- my %config_for = map {$_->{name} => $_} @{$self->_config->{sites}};
- my $config = $config_for{$self->get->{name}};
+ my $name = $self->get->{name};
+ my $config = $self->_config->{sites}->{$name};
my %params = (
session_id => $self->get->{session_id},
- @_
+ @opts,
);
- my $url = $config->{url};
+ my $url = $config->{notice_url};
while (my ($key, $val) = each %params) {
$url =~ s/\{\U$key\}/uri_escape($val)/ge;
}
@@ -158,17 +157,17 @@
package Your::Config;
$C{AFFILIATE} = {
+ aff_type_name => 'aff_type', # default
ua_opts => {
agent => 'Sledge::Plugin::Affiliate/0.01',
timeout => 60,
},
- sites => [
- {
- name => 'ktaf',
- param => 'ktaf',
- url => 'http://www.example.com/action-notice.cgi?a=ADM$KDDF&u={UNIQUE_ID}&r={SESSION_ID}',
+ sites => {
+ ktaf => {
+ session_name => 'ktaf',
+ notice_url => 'http://www.example.com/action-notice.cgi?a=ADM$KDDF&u={UNIQUE_ID}&r={SESSION_ID}',
},
- ],
+ },
};
=head1 DESCRIPTION
はじめは、便利だと思ってた store_to_cache, load_from_cache ですが、Affiliateに関係しないデータも使いたくなり (例えばメールアドレスと、アフィリエイトのパラメータを同時に扱いたい)結局、このメソッドは使わない方式(独自で実装 cacheまわりは自分で実装)にしました。
たぶん、Affiliate に関係するデータだけを使いたいケースは無いはずなので、ひょっとしたら使い道がないかもしれません。(もうちょっといろいろなケースを想定しないとわかりませんが。)
はじめは、emailなどのべつのパラメータも扱うようにしたのですが、Affiliate は使わないけど、emailはcacheに入れておきたいというケースもでてきて、Affiliateに依存するのやめました。
posted by takefumi
|
この日記へリンク
|
コメント(0)
|
トラックバック(0)

