のみまくし日記

毎日が文化祭の前日、そんな環境っていいですよね。この日記は未来の自分へのメッセージです。

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に依存するのやめました。

Perl posted by takefumi | この日記へリンク | コメント(0) | トラックバック(0)

この日記へのトラックバック

この日記へのコメント