This repository was archived by the owner on Dec 5, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathwp-pixabay-api.php
153 lines (124 loc) · 3.44 KB
/
wp-pixabay-api.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
<?php
/**
* WP Pixabay API (https://pixabay.com/api/docs/)
*
* @package WP-Pixabay-API
*/
/*
* Plugin Name: WP PixaBay API
* Plugin URI: https://github.com/wp-api-libraries/wp-pixabay-api
* Description: Perform API requests to Pixabay in WordPress.
* Author: WP API Libraries
* Version: 1.0.0
* Author URI: https://wp-api-libraries.com
* GitHub Plugin URI: https://github.com/wp-api-libraries/wp-pixabay-api
* GitHub Branch: master
*/
/* Exit if accessed directly */
if ( ! defined( 'ABSPATH' ) ) { exit; }
/* Check if class exists. */
if ( ! class_exists( 'PixabayAPI' ) ) {
/**
* PixabayAPI class.
*/
class PixabayAPI {
/**
* API Key.
*
* @var string
*/
static private $api_key;
/**
* URL to the API.
*
* @var string
*/
private $base_uri = 'https://pixabay.com/api/';
/**
* __construct function.
*
* @access public
* @param mixed $api_key API Key.
* @return void
*/
public function __construct( $api_key ) {
static::$api_key = $api_key;
}
/**
* Fetch the request from the API.
*
* @access private
* @param mixed $request Request URL.
* @return $body Body.
*/
private function fetch( $request ) {
$request .= '?key=' .static::$api_key;
$response = wp_remote_get( $request );
$code = wp_remote_retrieve_response_code( $response );
if ( 200 !== $code ) {
return new WP_Error( 'response-error', sprintf( __( 'Server response code: %d', 'text-domain' ), $code ) );
}
$body = wp_remote_retrieve_body( $response );
return json_decode( $body );
}
/**
* Checks the Rate Limit.
*/
private function check_rate_limit() {
$ratelimit = wp_remote_retrieve_header( $this->response, 'X-RateLimit-Limit' );
$ratelimit_remaining = wp_remote_retrieve_header( $this->response, 'X-RateLimit-Remaining' );
$ratelimit_reset = wp_remote_retrieve_header( $this->response, 'X-RateLimit-Reset' );
}
/**
* search_images function.
*
* @access public
* @param mixed $q
* @param mixed $lang
* @param mixed $id
* @param mixed $response_group
* @param mixed $image_type
* @param mixed $orientation
* @param mixed $category
* @param mixed $min_width
* @param mixed $min_height
* @param mixed $editors_choice
* @param mixed $safesearch
* @param mixed $order
* @param mixed $page
* @param mixed $per_page
* @param mixed $callback
* @param mixed $pretty
* @return void
*/
public function search_images( $q, $lang, $id, $response_group, $image_type, $orientation, $category, $min_width, $min_height, $editors_choice, $safesearch, $order, $page, $per_page, $callback, $pretty ) {
$request = $this->base_uri;
return $this->fetch( $request );
}
/**
* search_videos function.
*
* @access public
* @param mixed $q
* @param mixed $lang
* @param mixed $id
* @param mixed $video_type
* @param mixed $category
* @param mixed $min_width
* @param mixed $min_height
* @param mixed $editors_choice
* @param mixed $safesearch
* @param mixed $order
* @param mixed $page
* @param mixed $per_page
* @param mixed $callback
* @param mixed $pretty
* @return void
*/
public function search_videos( $q, $lang, $id, $video_type, $category, $min_width, $min_height, $editors_choice, $safesearch, $order, $page, $per_page, $callback, $pretty ) {
$request = $this->base_uri . 'videos/';
return $this->fetch( $request );
}
// TODO - Add Response Key with Descriptions.
}
}