Announcement

  •  » Engine
  •  » Api and getStatus

#1 2018-07-24 14:27:53

Maxime656_2
Member
2018-07-24
2

Api and getStatus

Hello,

I have a problem with using piwigo's api.
I use the pwg.session.login method but when I do pwg.session.getStatus i am already on the guest user ...

However the pwg.session.login method returns me the following message {"stat":"ok","result":true}


How should I proceed?

Thank you in advance !


Piwigo version: 2.9.4
PHP version: 5.4
MySQL version:
Piwigo URL: http://

Offline

 

#2 2018-07-24 15:24:03

plg
Piwigo Team
Nantes, France, Europe
2002-04-05
13791

Re: Api and getStatus

Hi Maxime656_2,

Here is an example in PHP, with script piwigo_remote.php

Code:

<?php
if (php_sapi_name() != 'cli')
{
  die('this script must be run from cli');
}

$opt = getopt('', array('url:', 'username:', 'password:'));

$mandatory_fields = array('url', 'username', 'password');
foreach ($mandatory_fields as $field)
{
  if (!isset($opt[$field]))
  {
    die('missing --'.$field."\n");
  }
}

$cookie_jar = tempnam("/tmp", "COOKIE");
piwigo_login($cookie_jar, $opt['url'], $opt['username'], $opt['password']);
$status = piwigo_get_status($cookie_jar, $opt['url']);
unlink($cookie_jar);

print_r($status);

function piwigo_login($cookie_jar, $piwigo_url, $username, $password)
{
  $url = $piwigo_url.'/ws.php?method=pwg.session.login';

  $postfields = array(
    'username' => $username,
    'password' => $password,
  );

  $postdata = http_build_query($postfields);

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
  curl_setopt($ch, CURLOPT_COOKIEFILE,  $cookie_jar);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

  $resultLogin = curl_exec($ch);

  //close connection
  curl_close($ch);
}

function piwigo_get_status($cookie_jar, $piwigo_url)
{
  $url = $piwigo_url.'/ws.php?method=pwg.session.getStatus&format=json';

  $postfields = array(
  );

  $postdata = http_build_query($postfields);

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

  //set the url, number of POST vars, POST data
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);

  // set cookie
  curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
  curl_setopt($ch, CURLOPT_COOKIEFILE,  $cookie_jar);

  //execute post
  $result = curl_exec($ch);

  //close connection
  curl_close($ch);

  $status = json_decode($result, true)['result'];
  return $status;
}
?>

and here is how it works:

Code:

$ php piwigo_remote.php --url=http://piwigo.org/demo --username=pierrick --password=secretpassword
Array
(
    [username] => pierrick
    [status] => webmaster
    [theme] => modus
    [language] => en_UK
    [pwg_token] => b51612137zx7608f533epeaf4043977c
    [charset] => utf-8
    [current_datetime] => 2018-07-24 15:21:09
    [version] => 2.9.4
    [available_sizes] => Array
        (
            [0] => square
            [1] => thumb
            [2] => 2small
            [3] => xsmall
            [4] => small
            [5] => medium
            [6] => large
            [7] => xlarge
            [8] => xxlarge
        )

    [upload_file_types] => jpg,jpeg,png,gif
    [upload_form_chunk_size] => 500
)

Offline

 

#3 2018-07-24 16:06:10

Maxime656_2
Member
2018-07-24
2

Re: Api and getStatus

Thank you, I figured out how to do it right just before you answered ;)

Offline

 
  •  » Engine
  •  » Api and getStatus

Board footer

Powered by FluxBB

github twitter newsletter Donate Piwigo.org © 2002-2024 · Contact