WordPress.org

Make WordPress Core

Ticket #18200: fake-api-response.php

File fake-api-response.php, 3.2 KB (added by dimadin, 16 months ago)

Plugin used to test attachment:ticket:18200:lp.5.diff as described in comment:ticket:18200:43

Line 
1<?php
2
3/**
4 * Plugin Name: Fake API Response
5 * Description: Modify WordPress.org API response to test language packs updates.
6 * Author:      Milan Dinić
7 * Author URI:  http://blog.milandinic.com/
8 * Version:     1.0
9 * License:     GPL
10 */
11
12/* Exit if accessed directly */
13if ( ! defined( 'ABSPATH' ) ) exit;
14
15function md_fake_api_response( $response, $r, $url ) {
16        if ( 0 !== strpos( $url, 'http://api.wordpress.org/' ) )
17                return $response; // Not API request. Bail immediately.
18
19        // Core
20        if ( 0 === strpos( $url, 'http://api.wordpress.org/core/version-check/1.6' ) ) {
21                $body = $response['body'];
22
23                $body = trim( wp_remote_retrieve_body( $response ) );
24                $body = maybe_unserialize( $body );
25
26                if ( ! is_array( $body ) )
27                        return $response;
28
29                $de_DE = new stdClass();
30                $de_DE->type = 'core';
31                $de_DE->version = '2012-02-18 08:48:04';
32                $de_DE->lang = 'de_DE';
33                $de_DE->package = 'https://dl.dropbox.com/s/ac7lrqbslxbxx2x/core-de_DE.zip';
34
35                $sr_RS = new stdClass();
36                $sr_RS->type = 'core';
37                $sr_RS->version = '2012-02-18 08:48:04';
38                $sr_RS->lang = 'sr_RS';
39                $sr_RS->package = 'https://dl.dropbox.com/s/kzrqwlq33hqif2z/core-sr_RS.zip';
40
41                $body['language_updates'] = array( $de_DE, $sr_RS );
42                $body = serialize( $body );
43
44                $response['body'] = $body;
45        }
46
47        // Plugins
48        if ( 0 === strpos( $url, 'http://api.wordpress.org/plugins/update-check/1.0' ) ) {
49                $body = $response['body'];
50
51                $body = trim( wp_remote_retrieve_body( $response ) );
52                $body = maybe_unserialize( $body );
53
54                if ( ! is_array( $body ) )
55                        return $response;
56
57                $ru_RU = new stdClass();
58                $ru_RU->type = 'plugin';
59                $ru_RU->version = '2012-02-18 08:48:04';
60                $ru_RU->lang = 'ru_RU';
61                $ru_RU->package = 'https://dl.dropbox.com/s/m8abj6ewwghagl2/maintenance-mode-ru_RU.zip';
62
63                $it_IT = new stdClass();
64                $it_IT->type = 'plugin';
65                $it_IT->version = '2012-02-18 08:48:04';
66                $it_IT->lang = 'it_IT';
67                $it_IT->package = 'https://dl.dropbox.com/s/isxlp5kb71o2lr4/bbp-digest-it_IT.zip';
68
69                $es_ES = new stdClass();
70                $es_ES->type = 'plugin';
71                $es_ES->version = '2012-02-18 08:48:04';
72                $es_ES->lang = 'es_ES';
73                $es_ES->package = 'https://dl.dropbox.com/s/q6kf6fnh16v95rv/cache-images-es_ES.zip';
74
75                $body['language_updates'] = array( $ru_RU, $it_IT, $es_ES );
76                $body = serialize( $body );
77
78                $response['body'] = $body;
79        }
80
81        // Themes
82        if ( 0 === strpos( $url, 'http://api.wordpress.org/themes/update-check/1.0' ) ) {
83                $body = $response['body'];
84
85                $body = trim( wp_remote_retrieve_body( $response ) );
86                $body = maybe_unserialize( $body );
87
88                if ( ! is_array( $body ) )
89                        return $response;
90
91                $sl_SI = new stdClass();
92                $sl_SI->type = 'theme';
93                $sl_SI->version = '2012-02-18 08:48:04';
94                $sl_SI->lang = 'sl_SI';
95                $sl_SI->package = 'https://dl.dropbox.com/s/vo5fqe2s5uo2qb3/p2-sl_SI.zip';
96
97                $pt_BR = new stdClass();
98                $pt_BR->type = 'theme';
99                $pt_BR->version = '2012-02-18 08:48:04';
100                $pt_BR = $theme;
101                $pt_BR->lang = 'pt_BR';
102                $pt_BR->package = 'https://dl.dropbox.com/s/3vo5hxiaa36higq/responsive-pt_BR.zip';
103
104                $body['language_updates'] = array( $sl_SI, $pt_BR );
105                $body = serialize( $body );
106
107                $response['body'] = $body;
108        }
109
110        return $response;
111}
112add_filter( 'http_response', 'md_fake_api_response', 50, 3 );