Advertisement
haxmeister

pastebin.com API in perl class feature

Jan 6th, 2024 (edited)
1,524
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 4.13 KB | None | 0 0
  1. use v5.38;
  2. use feature 'class';
  3. use warnings qw( all -experimental );
  4.  
  5. class WWW::Pastebin::Client 1.234 {
  6.     use Carp;
  7.     use HTTP::Tiny;
  8.  
  9.     field $dev_key  :param;
  10.     field $user_key :param = 0;
  11.     field $API_PASTE_URL   = "https://pastebin.com/api/api_post.php";
  12.     field $API_LOGIN_URL   = "https://pastebin.com/api/api_login.php";
  13.     field $API_RAW_URL     = "https://pastebin.com/api/api_raw.php";
  14.     field $http            = HTTP::Tiny->new();
  15.  
  16.     method set_user_key($key){ $user_key = $key }
  17.  
  18.     # returns the current user_key or
  19.     # requests a new api_user_key (session) if there isn't one
  20.     # this will invalidate the last key produced because
  21.     # pastebin only allows one user key per user
  22.     method get_user_key ($name, $pass) {
  23.         if ($user_key){ return $user_key }
  24.         # prepare the message to retrieve a user key
  25.         my %params = (
  26.             'api_dev_key'       => $dev_key,
  27.             'api_user_name'     => $name,
  28.             'api_user_password' => $pass,
  29.         );
  30.  
  31.         # make the request with url encoding
  32.         return $http->post_form($API_LOGIN_URL, \%params);
  33.     }
  34.  
  35.     method paste(%params){
  36.  
  37.         # croak if these required parameters are missing
  38.         $user_key                 or croak "Missing or empty api_user_key parameter";
  39.         $params{'api_paste_code'} or croak "Missing or empty 'api_paste_code' parameter";
  40.  
  41.         # add the needed keys
  42.         $params{'api_dev_key'} = $dev_key;
  43.         $params{'api_option'}  = 'paste';
  44.  
  45.         # make the request with url encoding
  46.         return $http->post_form($API_PASTE_URL, \%params);
  47.     }
  48.  
  49.     method paste_anon(%params){
  50.  
  51.         # die if this required parameter is missing
  52.         $params{'api_paste_code'} or croak "Missing or empty api_paste_code parameter";
  53.  
  54.         # remove any identifying keys if they are present
  55.         delete $params{'api_user_key'};
  56.         delete $params{'api_user_name'};
  57.         delete $params{'api_user_password'};
  58.  
  59.         # add the needed keys from the Client object
  60.         $params{'api_dev_key'} = $dev_key;
  61.         $params{'api_option'}  = 'paste';
  62.  
  63.         # make the request with url encoding
  64.         return $http->post_form($API_PASTE_URL, \%params);
  65.     }
  66.  
  67.     method list(%params){
  68.  
  69.         # croak if these required parameters are missing
  70.         $params{'api_user_key'} or croak "Missing or empty api_user_key parameter";
  71.  
  72.         # set required parameters
  73.         $params{api_dev_key}  = $dev_key;
  74.         $params{api_user_key} = $user_key;
  75.         $params{api_option}   = 'list';
  76.  
  77.         # make the request with url encoding
  78.         return $http->post_form($API_PASTE_URL, \%params);
  79.     }
  80.  
  81.     method del(%params){
  82.  
  83.         # croak if these required parameters are missing
  84.         $user_key                or croak "api_user_key is not set";
  85.         $params{'api_paste_key'} or croak "Missing or empty api_paste_key parameter";
  86.  
  87.         # set required parameters
  88.         $params{api_dev_key}  = $dev_key;
  89.         $params{api_user_key} = $user_key;
  90.         $params{api_option}   = 'delete';
  91.  
  92.         return $http->post_form($API_PASTE_URL, \%params);
  93.     }
  94.  
  95.     method user_details(%params){
  96.  
  97.         # croak if these required parameters are missing
  98.         $user_key or croak "api_user_key is not set";
  99.  
  100.         # set required parameters
  101.         $params{api_dev_key}  = $dev_key;
  102.         $params{api_user_key} = $user_key;
  103.         $params{api_option}   = 'delete';
  104.  
  105.         return $http->post_form($API_PASTE_URL, \%params);
  106.     }
  107.  
  108.     method get_raw_paste(%params){
  109.  
  110.         # croak if these required parameters are missing
  111.         $user_key              or croak "api_user_key is not set";
  112.         $params{api_paste_key} or croak "Missing or empty api_paste_key parameter";
  113.  
  114.         # set required parameters
  115.         $params{api_dev_key}  = $dev_key;
  116.         $params{api_user_key} = $user_key;
  117.         $params{api_option}   = 'show_paste';
  118.  
  119.         return $http->post_form($API_PASTE_URL, \%params);
  120.     }
  121.  
  122.     method get_raw_public_paste($paste_key){
  123.         return $http->get("https://pastebin.com/raw/$paste_key");
  124.     }
  125. }
  126.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement