App-ggdrv

 view release on metacpan or  search on metacpan

lib/App/ggdrv/fsearch.pm  view on Meta::CPAN

  $csec = qx [ sed -ne's/^CLIENT_SECRET[ =:\t]*//p' $gfile ] =~ s/\n$//r ; # クライアントシークレット
  $rtoken = qx [ sed -ne's/^REFRESH_TOKEN[ =:\t]*//p' $gfile ] =~ s/\n$//r ; 
  $atoken = qx [ sed -ne's/^ACCESS_TOKEN[ =:\t]*//p' $gfile ] =~ s/\n$//r ; 
  $disk = Net::Google::Drive->new( 
    -client_id => $cid, -client_secret => $csec, -refresh_token => $rtoken , -access_token  => $atoken );

  $file_name = $ARGV[0] // '*' ; # ファイル一覧を出力。## アスタリスクで全部のファイルの情報を取ってくる。ただし最大100個のようである。

  $files = $disk->searchFileByNameContains( -filename => $file_name ) or croak "File '$file_name' not found";
  $fnum = 0 ;
  binmode STDOUT, ":utf8";
  do { say join"\t",sprintf('%03d',++$fnum),$_->{kind},$_->{id},qq["$_->{name}"],$_->{mimeType} } for @{$files} ;

}

=encoding utf8

=head1

   最大100個のファイルを取り出す。
   ワイルドカードを使ったファイル名で検索ができる。IDを突き止めることが出来る。

lib/App/ggdrv/fsearchall.pm  view on Meta::CPAN

  $atoken = qx [ sed -ne's/^ACCESS_TOKEN[ =:\t]*//p' $gfile ] =~ s/\n$//r ;
  say $atoken ;
  $count_limit = $o{g} // 2 ; 
  # 全てのファイルを取得する
  $uri = URI -> new ( $GOOGLE_DRIVE_API ) ;
  $uri -> query_form ( access_token => $atoken ) ;
  & files ( $uri ) ;
}

sub files {
  binmode STDOUT, ":utf8" ;
  my $uri = shift;
  #say "\$uri=$uri" ;
  my $count = 0 ; # URIの中身から取り出した nextPageToken を引っ張り出した回数
  my $fnum = 0 ; # ファイルの個数
  my $ht = HTTP::Tiny->new();
  while ( $count < $count_limit ) {
    my $contents = decode_json( $ht->get($uri)->{content} );
    do { print Dumper $contents ; $contents->{error} ? last : next } if $o{D} ;
    $uri->query_form( access_token => $atoken, pageToken => $contents->{nextPageToken} ) ;
    for my $content ( @{ $contents->{files} } ) {

lib/App/ggdrv/upload.pm  view on Meta::CPAN

  getopts 'f:m:' , \%o ;
  $o{f} //= '' ; # フォルダ名
  $o{m} //= 'text/plain' ; # MIMEタイプ
  $gfile = $ENV{ GGDRV_API } // "~/.ggdrv2303v1" ;
  $atoken = qx [ sed -ne's/^ACCESS_TOKEN[ =:\t]*//p' $gfile ] =~ s/\n$//r ;
  $GOOGLE_DRIVE_UPLOAD_API = "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart" ;
  & f_each ( $_ ) for @ARGV ; 
}

sub f_each ( $ ) { 
  binmode STDOUT, ":utf8";
  my $mimeType = $o{m} ; 
  my $ej1 = encode_json { name => $_[0] , mimeType => $mimeType , $o{f} ne q[] ? ( parents  => [ $o{f} ] ): () } ;
  my $res = LWP::UserAgent -> new -> request (
    POST $GOOGLE_DRIVE_UPLOAD_API ,
    'Content-Type' => 'multipart/form-data' ,
    Authorization =>  "Bearer $atoken" ,
    Content => [
      metadata => [ undef, undef , 'Content-Type' => 'application/json;charset=UTF-8' , 'Content' => $ej1 ] ,
      file => [ $_[0] ] ,
    ] ,



( run in 0.511 second using v1.01-cache-2.11-cpan-3cd7ad12f66 )