Changeset 4291


Ignore:
Timestamp:
11/17/09 19:14:41 (10 years ago)
Author:
ronosman
Message:

Bug 1058 fixed : double check photo transfer with pwg.images.exist.

Location:
extensions/pLoader/trunk/src/Uploader
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • extensions/pLoader/trunk/src/Uploader/ImageList.pm

    r4279 r4291  
    10781078        ) 
    10791079    ); 
    1080     $self->progress_msg_details_refresh(" "); 
    10811080} 
    10821081 
  • extensions/pLoader/trunk/src/Uploader/PWG/WebServices.pm

    r4279 r4291  
    6161           upload_high 
    6262           chunk_size 
     63           sum_high_file 
     64           sum_resized_file 
     65           sum_thumb_file 
     66           sum_original_file 
    6367      /  
    6468); 
     
    239243    my ( $self, $progress ) = @_; 
    240244 
    241     my $file_sum; 
    242  
    243     my $yield = $progress->{yield}; 
    244     $yield->(); 
    245     $progress->{msg_details}->( 
    246             sprintf( 
    247                 "%s : %s",  
    248                 $progress->{checksum_msg},  
    249                 $self->site_resized_file 
    250             ) 
    251         ); 
    252     eval { 
    253         $file_sum = file_md5_hex( 
    254             $self->site_resized_file 
    255         ); 
    256     }; 
    257     $yield->(); 
     245    $self->sum_resized_file( 
     246        $self->_checksum( 
     247            $self->site_resized_file, 
     248            $progress 
     249        ) 
     250    ); 
     251 
     252    $self->sum_thumb_file( 
     253        $self->_checksum( 
     254            $self->site_thumb_file, 
     255            $progress 
     256        ) 
     257    ); 
    258258  
    259     $progress->{msg_details}->( 
    260             sprintf( 
    261                 "%s : %s",  
    262                 $progress->{checksum_msg},  
    263                 $self->site_thumb_file 
    264             ) 
    265         ); 
    266     my $thumbnail_sum = file_md5_hex( 
    267         $self->site_thumb_file, 
    268     ); 
    269    $yield->(); 
    270   
    271     $progress->{msg_details}->( 
    272             sprintf( 
    273                 "%s : %s",  
    274                 $progress->{checksum_msg},  
    275                 $self->site_high_file 
    276             ) 
    277         ); 
    278   
    279     my $original_sum = file_md5_hex( 
    280         $self->site_high_file 
    281     ); 
    282  
    283     my $form = { 
    284         method            => 'pwg.images.exist', 
    285         md5sum_list       => $original_sum, 
    286     }; 
    287  
    288     $yield->(); 
    289     my $result = $self->uagent->post( 
    290         $self->urlbase.'/ws.php?format=json', 
    291         $form 
    292     ); 
    293     $yield->(); 
    294  
    295     my $hresult = {}; 
    296         eval { 
    297             $hresult = from_json( 
    298                 $result->{_content} 
    299             ); 
    300         }; 
     259    $self->sum_high_file( 
     260        $self->_checksum( 
     261            $self->site_high_file, 
     262            $progress 
     263        ) 
     264    ); 
     265    # is the same in pLoader but may be different  
     266    $self->sum_original_file( 
     267        $self->sum_high_file 
     268    ); 
     269 
    301270 
    302271    my $site_image_name = $self->site_image_name;  
    303272 
    304     my $image_id = $hresult->{result}{$original_sum}; 
     273    my $image_id = $self->_exists($self->sum_original_file);; 
    305274    my $status = 0; 
    306275    my $status_line = "An error has occured during upload."; 
    307276    my $content = {}; 
     277    my $doubleCheck; 
     278    my $form; 
    308279    while(1){ 
    309280        if(!defined($image_id)){ 
    310281                 
    311             my $resized_params = { 
    312                 filepath       => $self->site_resized_file, 
    313                 type           => 'file', 
    314                 original_sum   => $original_sum, 
    315             }; 
    316  
    317             $progress->{current_msg} = $progress->{resized_msg}; 
    318             $yield->(); 
    319             $self->send_chunks( 
    320                 $resized_params, 
    321                 $progress, 
    322             ); 
    323             $yield->(); 
    324  
     282            my $resized_params = $self->_send_chunks('file', $progress); 
    325283            $status_line = $resized_params->{message}; 
    326284            last if !$resized_params->{ok}; 
    327285           
    328             my $thumb_params = { 
    329                 filepath       => $self->site_thumb_file, 
    330                 type           => 'thumb', 
    331                 original_sum   => $original_sum,                 
    332             }; 
    333      
    334             $progress->{current_msg} = $progress->{thumbnail_msg}; 
    335             $yield->(); 
    336             $self->send_chunks( 
    337                 $thumb_params, 
    338                 $progress, 
    339             ); 
    340             $yield->(); 
     286            my $thumb_params = $self->_send_chunks('thumb', $progress); 
    341287            $status_line = $thumb_params->{message}; 
    342288            last if !$thumb_params->{ok}; 
    343  
    344289         
    345290            $form = { 
    346291                method            => 'pwg.images.add', 
    347                 original_sum      => $original_sum, 
    348                 file_sum          => $file_sum, 
    349                 thumbnail_sum     => $thumbnail_sum, 
     292                original_sum      => $self->sum_original_file, 
     293                file_sum          => $self->sum_resized_file, 
     294                thumbnail_sum     => $self->sum_thumb_file, 
    350295                categories        => $self->categories, 
    351296                name              => $site_image_name, 
     
    357302                 
    358303            }; 
    359             my $high_params = { 
    360                 filepath       => $self->site_high_file, 
    361                 type           => 'high', 
    362                 original_sum   => $original_sum, 
    363             }; 
    364304     
    365305            if($self->upload_high){ 
    366                 $form->{high_sum} = $original_sum; 
    367                 $progress->{current_msg} = $progress->{highdef_msg}; 
    368                 $yield->(); 
    369                 $self->send_chunks( 
    370                     $high_params, 
    371                     $progress 
    372                 ); 
    373                 $yield->(); 
     306                my $high_params = $self->_send_chunks('high', $progress); 
    374307                $status_line = $high_params->{message}; 
    375308                last if !$high_params->{ok}; 
    376309            } 
     310            $doubleCheck = 1; 
    377311        } 
    378312        else { 
     
    388322                tag_ids           => $self->site_tags, 
    389323            }; 
    390             $yield->(); 
     324            $progress->{yield}->(); 
    391325        } 
    392326 
     
    394328        delete $form->{tag_ids} if '' eq $self->site_tags; 
    395329 
    396         $yield->(); 
    397         $result = $self->uagent->post( 
     330        $progress->{yield}->(); 
     331        my $result = $self->uagent->post( 
    398332            $self->urlbase.'/ws.php?format=json', 
    399333            $form 
     
    409343        $status_line = $result->status_line;  
    410344 
     345        if($doubleCheck){ 
     346            $content->{stat} = 'fail' if !$self->_exists($self->sum_original_file);  
     347        } 
     348 
    411349        last; 
    412350    } 
     
    414352    return ( $status,  $status_line, $content); 
    415353} 
    416   
     354 
     355sub _exists { 
     356    my ( $self, $md5_sum ) = @_; 
     357 
     358    my $form = { 
     359        method            => 'pwg.images.exist', 
     360        md5sum_list       => $md5_sum, 
     361    }; 
     362 
     363    my $result = $self->uagent->post( 
     364        $self->urlbase.'/ws.php?format=json', 
     365        $form 
     366    ); 
     367 
     368    my $hresult = {}; 
     369    eval { 
     370        $hresult = from_json( 
     371            $result->{_content} 
     372        ); 
     373    }; 
     374    my $id; 
     375    $id = $hresult->{result}{$self->sum_original_file} if 'ok' eq $hresult->{stat}; 
     376     
     377    $id; 
     378}  
     379 
     380sub _checksum { 
     381    my ( $self, $file, $progress ) = @_; 
     382    my $file_sum; 
     383 
     384    my $yield = $progress->{yield}; 
     385 
     386    $yield->(); 
     387    $progress->{msg_details}->( 
     388        sprintf( 
     389            "%s : %s",  
     390            $progress->{checksum_msg},  
     391            $file 
     392        ) 
     393    ); 
     394    eval { 
     395        $file_sum = file_md5_hex( 
     396            $file 
     397        ); 
     398    }; 
     399    $yield->(); 
     400 
     401    $file_sum; 
     402} 
     403 
     404sub _send_chunks { 
     405    my ( $self, $type, $progress ) = @_; 
     406 
     407    my $msg = { 
     408        thumb=>'thumbnail_msg', 
     409        file=>'resized_msg', 
     410        high=>'highdef_msg', 
     411    }; 
     412 
     413    my $filepath = { 
     414        thumb=>$self->site_thumb_file, 
     415        file=>$self->site_resized_file, 
     416        high=>$self->site_high_file, 
     417    }; 
     418 
     419    $progress->{current_msg} = $progress->{$msg->{$type}}; 
     420    $progress->{yield}->(); 
     421 
     422    my $params = { 
     423         filepath      => $filepath->{$type}, 
     424         type          => $type, 
     425         original_sum  => $self->sum_original_file, 
     426    }; 
     427 
     428    $self->send_chunks( 
     429       $params, 
     430       $progress, 
     431    ); 
     432    $progress->{yield}->(); 
     433 
     434    $params; 
     435} 
    417436 
    418437sub AddCategories{ 
Note: See TracChangeset for help on using the changeset viewer.