Passed
Push — master ( 433e74...ff36ac )
by litefeel
02:44
created
lib/client/base.php 1 patch
Indentation   +200 added lines, -200 removed lines patch added patch discarded remove patch
@@ -9,204 +9,204 @@
 block discarded – undo
9 9
  */
10 10
 class Writing_On_GitHub_Base_Client {
11 11
 
12
-    const HOST_OPTION_KEY   = 'wogh_host';
13
-    const TOKEN_OPTION_KEY  = 'wogh_oauth_token';
14
-    const REPO_OPTION_KEY   = 'wogh_repository';
15
-    const BRANCH_OPTION_KEY = 'wogh_branch';
16
-
17
-    /**
18
-     * Application container.
19
-     *
20
-     * @var Writing_On_GitHub
21
-     */
22
-    protected $app;
23
-
24
-    /**
25
-     * Instantiates a new Api object.
26
-     *
27
-     * @param Writing_On_GitHub $app Application container.
28
-     */
29
-    public function __construct( Writing_On_GitHub $app ) {
30
-        $this->app = $app;
31
-    }
32
-
33
-    /**
34
-     * Generic GitHub API interface and response handler
35
-     *
36
-     * @param string $method HTTP method.
37
-     * @param string $endpoint API endpoint.
38
-     * @param array  $body Request body.
39
-     *
40
-     * @return stdClass|WP_Error
41
-     */
42
-    protected function call( $method, $endpoint, $body = array() ) {
43
-        if ( is_wp_error( $error = $this->can_call() ) ) {
44
-            /* @var WP_Error $error */
45
-            return $error;
46
-        }
47
-
48
-        $args = array(
49
-            'method'  => $method,
50
-            'headers' => array(
51
-                'Authorization' => 'token ' . $this->oauth_token(),
52
-            ),
53
-        );
54
-
55
-        if ( 'GET' !== $method ) {
56
-            $args['body'] = json_encode( $body );
57
-        }
58
-
59
-        // $tmpbody = isset( $args['body'] ) ? $args['body'] : '';
60
-        // error_log( "writing-on-github-call $method $endpoint $tmpbody" );
61
-
62
-        $response = wp_remote_request( $endpoint, $args );
63
-        $status   = wp_remote_retrieve_header( $response, 'status' );
64
-        $body     = json_decode( wp_remote_retrieve_body( $response ) );
65
-
66
-        if ( '2' !== substr( $status, 0, 1 ) && '3' !== substr( $status, 0, 1 ) ) {
67
-            return new WP_Error(
68
-                strtolower( str_replace( ' ', '_', $status ) ),
69
-                sprintf(
70
-                    __( 'Method %s to endpoint %s failed with error: %s', 'writing-on-github' ),
71
-                    $method,
72
-                    $endpoint,
73
-                    ( $body && $body->message ) ? $body->message : 'Unknown error'
74
-                )
75
-            );
76
-        }
77
-
78
-        return $body;
79
-    }
80
-
81
-    /**
82
-     * Validates whether the Api object can make a call.
83
-     *
84
-     * @return true|WP_Error
85
-     */
86
-    protected function can_call() {
87
-        if ( ! $this->oauth_token() ) {
88
-            return new WP_Error(
89
-                'missing_token',
90
-                __( 'Writing On GitHub needs an auth token. Please update your settings.', 'writing-on-github' )
91
-            );
92
-        }
93
-
94
-        $repo = $this->repository();
95
-
96
-        if ( ! $repo ) {
97
-            return new WP_Error(
98
-                'missing_repository',
99
-                __( 'Writing On GitHub needs a repository. Please update your settings.', 'writing-on-github' )
100
-            );
101
-        }
102
-
103
-        $parts = explode( '/', $repo );
104
-
105
-        if ( 2 !== count( $parts ) ) {
106
-            return new WP_Error(
107
-                'malformed_repository',
108
-                __( 'Writing On GitHub needs a properly formed repository. Please update your settings.', 'writing-on-github' )
109
-            );
110
-        }
111
-
112
-        return true;
113
-    }
114
-
115
-    /**
116
-     * Returns the repository to sync with
117
-     *
118
-     * @return string
119
-     */
120
-    public function repository() {
121
-        return (string) get_option( self::REPO_OPTION_KEY );
122
-    }
123
-
124
-    /**
125
-     * Returns the user's oauth token
126
-     *
127
-     * @return string
128
-     */
129
-    public function oauth_token() {
130
-        return (string) get_option( self::TOKEN_OPTION_KEY );
131
-    }
132
-
133
-    /**
134
-     * Returns the GitHub host to sync with (for GitHub Enterprise support)
135
-     */
136
-    public function api_base() {
137
-        return get_option( self::HOST_OPTION_KEY );
138
-    }
139
-
140
-    public function branch() {
141
-        $branch = get_option( self::BRANCH_OPTION_KEY );
142
-        return $branch ? $branch : 'master';
143
-    }
144
-
145
-    /**
146
-     * API endpoint for the master branch reference
147
-     */
148
-    public function reference_endpoint() {
149
-        $url = $this->api_base() . '/repos/';
150
-        $url = $url . $this->repository() . '/git/refs/heads/' . $this->branch();
151
-
152
-        return $url;
153
-    }
154
-
155
-    /**
156
-     * Api to get and create commits
157
-     */
158
-    public function commit_endpoint() {
159
-        $url = $this->api_base() . '/repos/';
160
-        $url = $url . $this->repository() . '/git/commits';
161
-
162
-        return $url;
163
-    }
164
-
165
-    /**
166
-     * Api to compare commits
167
-     */
168
-    public function compare_endpoint() {
169
-        $url = $this->api_base() . '/repos/';
170
-        $url = $url . $this->repository() . '/compare';
171
-
172
-        return $url;
173
-    }
174
-
175
-    /**
176
-     * Api to get and create trees
177
-     */
178
-    public function tree_endpoint() {
179
-        $url = $this->api_base() . '/repos/';
180
-        $url = $url . $this->repository() . '/git/trees';
181
-
182
-        return $url;
183
-    }
184
-
185
-    /**
186
-     * Builds the proper blob API endpoint for a given post
187
-     *
188
-     * Returns String the relative API call path
189
-     */
190
-    public function blob_endpoint() {
191
-        $url = $this->api_base() . '/repos/';
192
-        $url = $url . $this->repository() . '/git/blobs';
193
-
194
-        return $url;
195
-    }
196
-
197
-    /**
198
-     * Builds the proper content API endpoint for a given post
199
-     *
200
-     * Returns String the relative API call path
201
-     */
202
-    public function content_endpoint( $path = false ) {
203
-        $url = $this->api_base() . '/repos/';
204
-        $url = $url . $this->repository() . '/contents';
205
-
206
-        if ( ! empty($path) ) {
207
-            $url .= '/' . $path;
208
-        }
209
-
210
-        return $url;
211
-    }
12
+	const HOST_OPTION_KEY   = 'wogh_host';
13
+	const TOKEN_OPTION_KEY  = 'wogh_oauth_token';
14
+	const REPO_OPTION_KEY   = 'wogh_repository';
15
+	const BRANCH_OPTION_KEY = 'wogh_branch';
16
+
17
+	/**
18
+	 * Application container.
19
+	 *
20
+	 * @var Writing_On_GitHub
21
+	 */
22
+	protected $app;
23
+
24
+	/**
25
+	 * Instantiates a new Api object.
26
+	 *
27
+	 * @param Writing_On_GitHub $app Application container.
28
+	 */
29
+	public function __construct( Writing_On_GitHub $app ) {
30
+		$this->app = $app;
31
+	}
32
+
33
+	/**
34
+	 * Generic GitHub API interface and response handler
35
+	 *
36
+	 * @param string $method HTTP method.
37
+	 * @param string $endpoint API endpoint.
38
+	 * @param array  $body Request body.
39
+	 *
40
+	 * @return stdClass|WP_Error
41
+	 */
42
+	protected function call( $method, $endpoint, $body = array() ) {
43
+		if ( is_wp_error( $error = $this->can_call() ) ) {
44
+			/* @var WP_Error $error */
45
+			return $error;
46
+		}
47
+
48
+		$args = array(
49
+			'method'  => $method,
50
+			'headers' => array(
51
+				'Authorization' => 'token ' . $this->oauth_token(),
52
+			),
53
+		);
54
+
55
+		if ( 'GET' !== $method ) {
56
+			$args['body'] = json_encode( $body );
57
+		}
58
+
59
+		// $tmpbody = isset( $args['body'] ) ? $args['body'] : '';
60
+		// error_log( "writing-on-github-call $method $endpoint $tmpbody" );
61
+
62
+		$response = wp_remote_request( $endpoint, $args );
63
+		$status   = wp_remote_retrieve_header( $response, 'status' );
64
+		$body     = json_decode( wp_remote_retrieve_body( $response ) );
65
+
66
+		if ( '2' !== substr( $status, 0, 1 ) && '3' !== substr( $status, 0, 1 ) ) {
67
+			return new WP_Error(
68
+				strtolower( str_replace( ' ', '_', $status ) ),
69
+				sprintf(
70
+					__( 'Method %s to endpoint %s failed with error: %s', 'writing-on-github' ),
71
+					$method,
72
+					$endpoint,
73
+					( $body && $body->message ) ? $body->message : 'Unknown error'
74
+				)
75
+			);
76
+		}
77
+
78
+		return $body;
79
+	}
80
+
81
+	/**
82
+	 * Validates whether the Api object can make a call.
83
+	 *
84
+	 * @return true|WP_Error
85
+	 */
86
+	protected function can_call() {
87
+		if ( ! $this->oauth_token() ) {
88
+			return new WP_Error(
89
+				'missing_token',
90
+				__( 'Writing On GitHub needs an auth token. Please update your settings.', 'writing-on-github' )
91
+			);
92
+		}
93
+
94
+		$repo = $this->repository();
95
+
96
+		if ( ! $repo ) {
97
+			return new WP_Error(
98
+				'missing_repository',
99
+				__( 'Writing On GitHub needs a repository. Please update your settings.', 'writing-on-github' )
100
+			);
101
+		}
102
+
103
+		$parts = explode( '/', $repo );
104
+
105
+		if ( 2 !== count( $parts ) ) {
106
+			return new WP_Error(
107
+				'malformed_repository',
108
+				__( 'Writing On GitHub needs a properly formed repository. Please update your settings.', 'writing-on-github' )
109
+			);
110
+		}
111
+
112
+		return true;
113
+	}
114
+
115
+	/**
116
+	 * Returns the repository to sync with
117
+	 *
118
+	 * @return string
119
+	 */
120
+	public function repository() {
121
+		return (string) get_option( self::REPO_OPTION_KEY );
122
+	}
123
+
124
+	/**
125
+	 * Returns the user's oauth token
126
+	 *
127
+	 * @return string
128
+	 */
129
+	public function oauth_token() {
130
+		return (string) get_option( self::TOKEN_OPTION_KEY );
131
+	}
132
+
133
+	/**
134
+	 * Returns the GitHub host to sync with (for GitHub Enterprise support)
135
+	 */
136
+	public function api_base() {
137
+		return get_option( self::HOST_OPTION_KEY );
138
+	}
139
+
140
+	public function branch() {
141
+		$branch = get_option( self::BRANCH_OPTION_KEY );
142
+		return $branch ? $branch : 'master';
143
+	}
144
+
145
+	/**
146
+	 * API endpoint for the master branch reference
147
+	 */
148
+	public function reference_endpoint() {
149
+		$url = $this->api_base() . '/repos/';
150
+		$url = $url . $this->repository() . '/git/refs/heads/' . $this->branch();
151
+
152
+		return $url;
153
+	}
154
+
155
+	/**
156
+	 * Api to get and create commits
157
+	 */
158
+	public function commit_endpoint() {
159
+		$url = $this->api_base() . '/repos/';
160
+		$url = $url . $this->repository() . '/git/commits';
161
+
162
+		return $url;
163
+	}
164
+
165
+	/**
166
+	 * Api to compare commits
167
+	 */
168
+	public function compare_endpoint() {
169
+		$url = $this->api_base() . '/repos/';
170
+		$url = $url . $this->repository() . '/compare';
171
+
172
+		return $url;
173
+	}
174
+
175
+	/**
176
+	 * Api to get and create trees
177
+	 */
178
+	public function tree_endpoint() {
179
+		$url = $this->api_base() . '/repos/';
180
+		$url = $url . $this->repository() . '/git/trees';
181
+
182
+		return $url;
183
+	}
184
+
185
+	/**
186
+	 * Builds the proper blob API endpoint for a given post
187
+	 *
188
+	 * Returns String the relative API call path
189
+	 */
190
+	public function blob_endpoint() {
191
+		$url = $this->api_base() . '/repos/';
192
+		$url = $url . $this->repository() . '/git/blobs';
193
+
194
+		return $url;
195
+	}
196
+
197
+	/**
198
+	 * Builds the proper content API endpoint for a given post
199
+	 *
200
+	 * Returns String the relative API call path
201
+	 */
202
+	public function content_endpoint( $path = false ) {
203
+		$url = $this->api_base() . '/repos/';
204
+		$url = $url . $this->repository() . '/contents';
205
+
206
+		if ( ! empty($path) ) {
207
+			$url .= '/' . $path;
208
+		}
209
+
210
+		return $url;
211
+	}
212 212
 }
Please login to merge, or discard this patch.
lib/client/persist.php 1 patch
Indentation   +60 added lines, -60 removed lines patch added patch discarded remove patch
@@ -9,75 +9,75 @@
 block discarded – undo
9 9
  */
10 10
 class Writing_On_GitHub_Persist_Client extends Writing_On_GitHub_Base_Client {
11 11
 
12
-    /**
13
-     * Get the data for the current user.
14
-     *
15
-     * @return array
16
-     */
17
-    protected function export_user() {
18
-        $user_id = get_current_user_id();
19
-        $user = get_userdata( $user_id );
12
+	/**
13
+	 * Get the data for the current user.
14
+	 *
15
+	 * @return array
16
+	 */
17
+	protected function export_user() {
18
+		$user_id = get_current_user_id();
19
+		$user = get_userdata( $user_id );
20 20
 
21
-        if ( $user ) {
22
-            return array(
23
-                'name'  => $user->display_name,
24
-                'email' => $user->user_email,
25
-            );
26
-        }
21
+		if ( $user ) {
22
+			return array(
23
+				'name'  => $user->display_name,
24
+				'email' => $user->user_email,
25
+			);
26
+		}
27 27
 
28
-        return false;
29
-    }
28
+		return false;
29
+	}
30 30
 
31
-    /**
32
-     * Delete the file.
33
-     *
34
-     * @return array
35
-     */
36
-    public function delete_file( $path, $sha, $message ) {
37
-        $body = new stdClass();
38
-        $body->message = $message;
39
-        $body->sha = $sha;
40
-        $body->branch = $this->branch();
31
+	/**
32
+	 * Delete the file.
33
+	 *
34
+	 * @return array
35
+	 */
36
+	public function delete_file( $path, $sha, $message ) {
37
+		$body = new stdClass();
38
+		$body->message = $message;
39
+		$body->sha = $sha;
40
+		$body->branch = $this->branch();
41 41
 
42
-        if ( $author = $this->export_user() ) {
43
-            $body->author = $author;
44
-        }
42
+		if ( $author = $this->export_user() ) {
43
+			$body->author = $author;
44
+		}
45 45
 
46
-        return $this->call( 'DELETE', $this->content_endpoint( $path ), $body );
47
-    }
46
+		return $this->call( 'DELETE', $this->content_endpoint( $path ), $body );
47
+	}
48 48
 
49
-    /**
50
-     * Create the file.
51
-     *
52
-     * @return array
53
-     */
54
-    public function create_file( $blob, $message ) {
55
-        $body = $blob->to_body();
56
-        $body->message = $message;
57
-        $body->branch = $this->branch();
58
-        unset($body->sha);
49
+	/**
50
+	 * Create the file.
51
+	 *
52
+	 * @return array
53
+	 */
54
+	public function create_file( $blob, $message ) {
55
+		$body = $blob->to_body();
56
+		$body->message = $message;
57
+		$body->branch = $this->branch();
58
+		unset($body->sha);
59 59
 
60
-        if ( $author = $this->export_user() ) {
61
-            $body->author = $author;
62
-        }
60
+		if ( $author = $this->export_user() ) {
61
+			$body->author = $author;
62
+		}
63 63
 
64
-        return $this->call( 'PUT', $this->content_endpoint( $blob->path() ), $body );
65
-    }
64
+		return $this->call( 'PUT', $this->content_endpoint( $blob->path() ), $body );
65
+	}
66 66
 
67
-    /**
68
-     * Update the file.
69
-     *
70
-     * @return array
71
-     */
72
-    public function update_file( $blob, $message ) {
73
-        $body = $blob->to_body();
74
-        $body->message = $message;
75
-        $body->branch = $this->branch();
67
+	/**
68
+	 * Update the file.
69
+	 *
70
+	 * @return array
71
+	 */
72
+	public function update_file( $blob, $message ) {
73
+		$body = $blob->to_body();
74
+		$body->message = $message;
75
+		$body->branch = $this->branch();
76 76
 
77
-        if ( $author = $this->export_user() ) {
78
-            $body->author = $author;
79
-        }
77
+		if ( $author = $this->export_user() ) {
78
+			$body->author = $author;
79
+		}
80 80
 
81
-        return $this->call( 'PUT', $this->content_endpoint( $blob->path() ), $body );
82
-    }
81
+		return $this->call( 'PUT', $this->content_endpoint( $blob->path() ), $body );
82
+	}
83 83
 }
Please login to merge, or discard this patch.
lib/response.php 1 patch
Indentation   +70 added lines, -70 removed lines patch added patch discarded remove patch
@@ -9,87 +9,87 @@
 block discarded – undo
9 9
  */
10 10
 class Writing_On_GitHub_Response {
11 11
 
12
-    /**
13
-     * Application container.
14
-     *
15
-     * @var Writing_On_GitHub
16
-     */
17
-    protected $app;
12
+	/**
13
+	 * Application container.
14
+	 *
15
+	 * @var Writing_On_GitHub
16
+	 */
17
+	protected $app;
18 18
 
19
-    /**
20
-     * Writing_On_GitHub_Response constructor.
21
-     *
22
-     * @param Writing_On_GitHub $app Application container.
23
-     */
24
-    public function __construct( Writing_On_GitHub $app ) {
25
-        $this->app = $app;
26
-    }
19
+	/**
20
+	 * Writing_On_GitHub_Response constructor.
21
+	 *
22
+	 * @param Writing_On_GitHub $app Application container.
23
+	 */
24
+	public function __construct( Writing_On_GitHub $app ) {
25
+		$this->app = $app;
26
+	}
27 27
 
28
-    /**
29
-     * Writes to the log and returns the error response.
30
-     *
31
-     * @param WP_Error $error Error to respond with.
32
-     *
33
-     * @return false
34
-     */
35
-    public function error( WP_Error $error ) {
36
-        global $wp_version;
28
+	/**
29
+	 * Writes to the log and returns the error response.
30
+	 *
31
+	 * @param WP_Error $error Error to respond with.
32
+	 *
33
+	 * @return false
34
+	 */
35
+	public function error( WP_Error $error ) {
36
+		global $wp_version;
37 37
 
38
-        $this->log( $error );
38
+		$this->log( $error );
39 39
 
40
-        if ( defined( 'DOING_AJAX' ) && DOING_AJAX && defined( 'WOGH_AJAX' ) && WOGH_AJAX ) {
41
-            /**
42
-             * WordPress 4.1.0 introduced allowing WP_Error objects to be
43
-             * passed directly into `wp_send_json_error`. This shims in
44
-             * compatibility for older versions. We're currently supporting 3.9+.
45
-             */
46
-            if ( version_compare( $wp_version, '4.1.0', '<' ) ) {
47
-                $result = array();
40
+		if ( defined( 'DOING_AJAX' ) && DOING_AJAX && defined( 'WOGH_AJAX' ) && WOGH_AJAX ) {
41
+			/**
42
+			 * WordPress 4.1.0 introduced allowing WP_Error objects to be
43
+			 * passed directly into `wp_send_json_error`. This shims in
44
+			 * compatibility for older versions. We're currently supporting 3.9+.
45
+			 */
46
+			if ( version_compare( $wp_version, '4.1.0', '<' ) ) {
47
+				$result = array();
48 48
 
49
-                foreach ( $error->errors as $code => $messages ) {
50
-                    foreach ( $messages as $message ) {
51
-                        $result[] = array( 'code' => $code, 'message' => $message );
52
-                    }
53
-                }
49
+				foreach ( $error->errors as $code => $messages ) {
50
+					foreach ( $messages as $message ) {
51
+						$result[] = array( 'code' => $code, 'message' => $message );
52
+					}
53
+				}
54 54
 
55
-                $error = $result;
56
-            }
55
+				$error = $result;
56
+			}
57 57
 
58
-            wp_send_json_error( $error );
59
-        }
58
+			wp_send_json_error( $error );
59
+		}
60 60
 
61
-        return false;
62
-    }
61
+		return false;
62
+	}
63 63
 
64
-    /**
65
-     * Writes to the log and returns the success response.
66
-     *
67
-     * @param string $success Success message to respond with.
68
-     *
69
-     * @return true
70
-     */
71
-    public function success( $success ) {
72
-        $this->log( $success );
64
+	/**
65
+	 * Writes to the log and returns the success response.
66
+	 *
67
+	 * @param string $success Success message to respond with.
68
+	 *
69
+	 * @return true
70
+	 */
71
+	public function success( $success ) {
72
+		$this->log( $success );
73 73
 
74
-        if ( defined( 'DOING_AJAX' ) && DOING_AJAX && defined( 'WOGH_AJAX' ) && WOGH_AJAX ) {
75
-            wp_send_json_success( $success );
76
-        }
74
+		if ( defined( 'DOING_AJAX' ) && DOING_AJAX && defined( 'WOGH_AJAX' ) && WOGH_AJAX ) {
75
+			wp_send_json_success( $success );
76
+		}
77 77
 
78
-        return true;
79
-    }
78
+		return true;
79
+	}
80 80
 
81
-    /**
82
-     * Writes a log message.
83
-     *
84
-     * Can extract a message from WP_Error object.
85
-     *
86
-     * @param string|WP_Error $msg Message to log.
87
-     */
88
-    protected function log( $msg ) {
89
-        if ( is_wp_error( $msg ) ) {
90
-            $msg = $msg->get_error_message();
91
-        }
81
+	/**
82
+	 * Writes a log message.
83
+	 *
84
+	 * Can extract a message from WP_Error object.
85
+	 *
86
+	 * @param string|WP_Error $msg Message to log.
87
+	 */
88
+	protected function log( $msg ) {
89
+		if ( is_wp_error( $msg ) ) {
90
+			$msg = $msg->get_error_message();
91
+		}
92 92
 
93
-        Writing_On_GitHub::write_log( $msg );
94
-    }
93
+		Writing_On_GitHub::write_log( $msg );
94
+	}
95 95
 }
Please login to merge, or discard this patch.
lib/controller.php 1 patch
Indentation   +230 added lines, -230 removed lines patch added patch discarded remove patch
@@ -9,234 +9,234 @@
 block discarded – undo
9 9
  */
10 10
 class Writing_On_GitHub_Controller {
11 11
 
12
-    /**
13
-     * Application container.
14
-     *
15
-     * @var Writing_On_GitHub
16
-     */
17
-    public $app;
18
-
19
-    /**
20
-     * Instantiates a new Controller object
21
-     *
22
-     * @param Writing_On_GitHub $app Applicatio container.
23
-     */
24
-    public function __construct( Writing_On_GitHub $app ) {
25
-        $this->app = $app;
26
-    }
27
-
28
-    /**
29
-     * Webhook callback as triggered from GitHub push.
30
-     *
31
-     * Reads the Webhook payload and syncs posts as necessary.
32
-     *
33
-     * @return boolean
34
-     */
35
-    public function pull_posts() {
36
-        $this->set_ajax();
37
-        if ( ! $this->app->semaphore()->is_open() ) {
38
-            return $this->app->response()->error( new WP_Error(
39
-                'semaphore_locked',
40
-                sprintf( __( '%s : Semaphore is locked, import/export already in progress.', 'writing-on-github' ), 'Controller::pull_posts()' )
41
-            ) );
42
-        }
43
-
44
-        if ( ! $this->app->request()->is_secret_valid() ) {
45
-            return $this->app->response()->error( new WP_Error(
46
-                'invalid_headers',
47
-                __( 'Failed to validate secret.', 'writing-on-github' )
48
-            ) );
49
-        }
50
-
51
-        // ping
52
-        if ( $this->app->request()->is_ping() ) {
53
-            return $this->app->response()->success( __( 'Wordpress is ready.', 'writing-on-github' ) );
54
-        }
55
-
56
-        // push
57
-        if ( ! $this->app->request()->is_push() ) {
58
-            return $this->app->response()->error( new WP_Error(
59
-                'invalid_headers',
60
-                __( 'Failed to validate webhook event.', 'writing-on-github' )
61
-            ) );
62
-        }
63
-        $payload = $this->app->request()->payload();
64
-
65
-        if ( ! $payload->should_import() ) {
66
-            return $this->app->response()->error( new WP_Error(
67
-                'invalid_payload',
68
-                sprintf(
69
-                    __( "%s won't be imported.", 'writing-on-github' ),
70
-                    strtolower( $payload->get_commit_id() ) ? : '[Missing Commit ID]'
71
-                )
72
-            ) );
73
-        }
74
-
75
-        $this->app->semaphore()->lock();
76
-        remove_action( 'save_post', array( $this, 'export_post' ) );
77
-        remove_action( 'delete_post', array( $this, 'delete_post' ) );
78
-
79
-        $result = $this->app->import()->payload( $payload );
80
-
81
-        $this->app->semaphore()->unlock();
82
-
83
-        if ( is_wp_error( $result ) ) {
84
-            /* @var WP_Error $result */
85
-            return $this->app->response()->error( $result );
86
-        }
87
-
88
-        return $this->app->response()->success( $result );
89
-    }
90
-
91
-    /**
92
-     * Imports posts from the current master branch.
93
-     *
94
-     * @return boolean
95
-     */
96
-    public function import_master( $user_id = 0 ) {
97
-        if ( ! $this->app->semaphore()->is_open() ) {
98
-            return $this->app->response()->error( new WP_Error(
99
-                'semaphore_locked',
100
-                sprintf( __( '%s : Semaphore is locked, import/export already in progress.', 'writing-on-github' ), 'Controller::import_master()' )
101
-            ) );
102
-        }
103
-
104
-        $this->app->semaphore()->lock();
105
-        remove_action( 'save_post', array( $this, 'export_post' ) );
106
-        remove_action( 'save_post', array( $this, 'delete_post' ) );
107
-
108
-        if ( $user_id ) {
109
-            wp_set_current_user( $user_id );
110
-        }
111
-
112
-        $result = $this->app->import()->master();
113
-
114
-        $this->app->semaphore()->unlock();
115
-
116
-        if ( is_wp_error( $result ) ) {
117
-            /* @var WP_Error $result */
118
-            update_option( '_wogh_import_error', $result->get_error_message() );
119
-
120
-            return $this->app->response()->error( $result );
121
-        }
122
-
123
-        update_option( '_wogh_import_complete', 'yes' );
124
-
125
-        return $this->app->response()->success( $result );
126
-    }
127
-
128
-    /**
129
-     * Export all the posts in the database to GitHub.
130
-     *
131
-     * @param  int        $user_id
132
-     * @param  boolean    $force
133
-     * @return boolean
134
-     */
135
-    public function export_all( $user_id = 0, $force = false ) {
136
-        if ( ! $this->app->semaphore()->is_open() ) {
137
-            return $this->app->response()->error( new WP_Error(
138
-                'semaphore_locked',
139
-                sprintf( __( '%s : Semaphore is locked, import/export already in progress.', 'writing-on-github' ), 'Controller::export_all()' )
140
-            ) );
141
-        }
142
-
143
-        $this->app->semaphore()->lock();
144
-
145
-        if ( $user_id ) {
146
-            wp_set_current_user( $user_id );
147
-        }
148
-
149
-        $result = $this->app->export()->full($force);
150
-        $this->app->semaphore()->unlock();
151
-
152
-        // Maybe move option updating out of this class/upgrade message display?
153
-        if ( is_wp_error( $result ) ) {
154
-            /* @var WP_Error $result */
155
-            update_option( '_wogh_export_error', $result->get_error_message() );
156
-
157
-            return $this->app->response()->error( $result );
158
-        } else {
159
-            update_option( '_wogh_export_complete', 'yes' );
160
-            update_option( '_wogh_fully_exported', 'yes' );
161
-
162
-            return $this->app->response()->success( $result );
163
-        }
164
-    }
165
-
166
-    /**
167
-     * Exports a single post to GitHub by ID.
168
-     *
169
-     * Called on the save_post hook.
170
-     *
171
-     * @param int $post_id Post ID.
172
-     *
173
-     * @return boolean
174
-     */
175
-    public function export_post( $post_id ) {
176
-        if ( wp_is_post_revision( $post_id ) ) {
177
-            return;
178
-        }
179
-
180
-        if ( ! $this->app->semaphore()->is_open() ) {
181
-            return $this->app->response()->error( new WP_Error(
182
-                'semaphore_locked',
183
-                sprintf( __( '%s : Semaphore is locked, import/export already in progress.', 'writing-on-github' ), 'Controller::export_post()' )
184
-            ) );
185
-        }
186
-
187
-        $this->app->semaphore()->lock();
188
-        $result = $this->app->export()->update( $post_id );
189
-        $this->app->semaphore()->unlock();
190
-
191
-        if ( is_wp_error( $result ) ) {
192
-            /* @var WP_Error $result */
193
-            return $this->app->response()->error( $result );
194
-        }
195
-
196
-        return $this->app->response()->success( $result );
197
-    }
198
-
199
-    /**
200
-     * Removes the post from the tree.
201
-     *
202
-     * Called the delete_post hook.
203
-     *
204
-     * @param int $post_id Post ID.
205
-     *
206
-     * @return boolean
207
-     */
208
-    public function delete_post( $post_id ) {
209
-        if ( wp_is_post_revision( $post_id ) ) {
210
-            return;
211
-        }
212
-
213
-        if ( ! $this->app->semaphore()->is_open() ) {
214
-            return $this->app->response()->error( new WP_Error(
215
-                'semaphore_locked',
216
-                sprintf( __( '%s : Semaphore is locked, import/export already in progress.', 'writing-on-github' ), 'Controller::delete_post()' )
217
-            ) );
218
-        }
219
-
220
-        $this->app->semaphore()->lock();
221
-        $result = $this->app->export()->delete( $post_id );
222
-        $this->app->semaphore()->unlock();
223
-
224
-        if ( is_wp_error( $result ) ) {
225
-            /* @var WP_Error $result */
226
-            return $this->app->response()->error( $result );
227
-        }
228
-
229
-        return $this->app->response()->success( $result );
230
-    }
231
-
232
-    /**
233
-     * Indicates we're running our own AJAX hook
234
-     * and thus should respond with JSON, rather
235
-     * than just returning data.
236
-     */
237
-    protected function set_ajax() {
238
-        if ( ! defined( 'WOGH_AJAX' ) ) {
239
-            define( 'WOGH_AJAX', true );
240
-        }
241
-    }
12
+	/**
13
+	 * Application container.
14
+	 *
15
+	 * @var Writing_On_GitHub
16
+	 */
17
+	public $app;
18
+
19
+	/**
20
+	 * Instantiates a new Controller object
21
+	 *
22
+	 * @param Writing_On_GitHub $app Applicatio container.
23
+	 */
24
+	public function __construct( Writing_On_GitHub $app ) {
25
+		$this->app = $app;
26
+	}
27
+
28
+	/**
29
+	 * Webhook callback as triggered from GitHub push.
30
+	 *
31
+	 * Reads the Webhook payload and syncs posts as necessary.
32
+	 *
33
+	 * @return boolean
34
+	 */
35
+	public function pull_posts() {
36
+		$this->set_ajax();
37
+		if ( ! $this->app->semaphore()->is_open() ) {
38
+			return $this->app->response()->error( new WP_Error(
39
+				'semaphore_locked',
40
+				sprintf( __( '%s : Semaphore is locked, import/export already in progress.', 'writing-on-github' ), 'Controller::pull_posts()' )
41
+			) );
42
+		}
43
+
44
+		if ( ! $this->app->request()->is_secret_valid() ) {
45
+			return $this->app->response()->error( new WP_Error(
46
+				'invalid_headers',
47
+				__( 'Failed to validate secret.', 'writing-on-github' )
48
+			) );
49
+		}
50
+
51
+		// ping
52
+		if ( $this->app->request()->is_ping() ) {
53
+			return $this->app->response()->success( __( 'Wordpress is ready.', 'writing-on-github' ) );
54
+		}
55
+
56
+		// push
57
+		if ( ! $this->app->request()->is_push() ) {
58
+			return $this->app->response()->error( new WP_Error(
59
+				'invalid_headers',
60
+				__( 'Failed to validate webhook event.', 'writing-on-github' )
61
+			) );
62
+		}
63
+		$payload = $this->app->request()->payload();
64
+
65
+		if ( ! $payload->should_import() ) {
66
+			return $this->app->response()->error( new WP_Error(
67
+				'invalid_payload',
68
+				sprintf(
69
+					__( "%s won't be imported.", 'writing-on-github' ),
70
+					strtolower( $payload->get_commit_id() ) ? : '[Missing Commit ID]'
71
+				)
72
+			) );
73
+		}
74
+
75
+		$this->app->semaphore()->lock();
76
+		remove_action( 'save_post', array( $this, 'export_post' ) );
77
+		remove_action( 'delete_post', array( $this, 'delete_post' ) );
78
+
79
+		$result = $this->app->import()->payload( $payload );
80
+
81
+		$this->app->semaphore()->unlock();
82
+
83
+		if ( is_wp_error( $result ) ) {
84
+			/* @var WP_Error $result */
85
+			return $this->app->response()->error( $result );
86
+		}
87
+
88
+		return $this->app->response()->success( $result );
89
+	}
90
+
91
+	/**
92
+	 * Imports posts from the current master branch.
93
+	 *
94
+	 * @return boolean
95
+	 */
96
+	public function import_master( $user_id = 0 ) {
97
+		if ( ! $this->app->semaphore()->is_open() ) {
98
+			return $this->app->response()->error( new WP_Error(
99
+				'semaphore_locked',
100
+				sprintf( __( '%s : Semaphore is locked, import/export already in progress.', 'writing-on-github' ), 'Controller::import_master()' )
101
+			) );
102
+		}
103
+
104
+		$this->app->semaphore()->lock();
105
+		remove_action( 'save_post', array( $this, 'export_post' ) );
106
+		remove_action( 'save_post', array( $this, 'delete_post' ) );
107
+
108
+		if ( $user_id ) {
109
+			wp_set_current_user( $user_id );
110
+		}
111
+
112
+		$result = $this->app->import()->master();
113
+
114
+		$this->app->semaphore()->unlock();
115
+
116
+		if ( is_wp_error( $result ) ) {
117
+			/* @var WP_Error $result */
118
+			update_option( '_wogh_import_error', $result->get_error_message() );
119
+
120
+			return $this->app->response()->error( $result );
121
+		}
122
+
123
+		update_option( '_wogh_import_complete', 'yes' );
124
+
125
+		return $this->app->response()->success( $result );
126
+	}
127
+
128
+	/**
129
+	 * Export all the posts in the database to GitHub.
130
+	 *
131
+	 * @param  int        $user_id
132
+	 * @param  boolean    $force
133
+	 * @return boolean
134
+	 */
135
+	public function export_all( $user_id = 0, $force = false ) {
136
+		if ( ! $this->app->semaphore()->is_open() ) {
137
+			return $this->app->response()->error( new WP_Error(
138
+				'semaphore_locked',
139
+				sprintf( __( '%s : Semaphore is locked, import/export already in progress.', 'writing-on-github' ), 'Controller::export_all()' )
140
+			) );
141
+		}
142
+
143
+		$this->app->semaphore()->lock();
144
+
145
+		if ( $user_id ) {
146
+			wp_set_current_user( $user_id );
147
+		}
148
+
149
+		$result = $this->app->export()->full($force);
150
+		$this->app->semaphore()->unlock();
151
+
152
+		// Maybe move option updating out of this class/upgrade message display?
153
+		if ( is_wp_error( $result ) ) {
154
+			/* @var WP_Error $result */
155
+			update_option( '_wogh_export_error', $result->get_error_message() );
156
+
157
+			return $this->app->response()->error( $result );
158
+		} else {
159
+			update_option( '_wogh_export_complete', 'yes' );
160
+			update_option( '_wogh_fully_exported', 'yes' );
161
+
162
+			return $this->app->response()->success( $result );
163
+		}
164
+	}
165
+
166
+	/**
167
+	 * Exports a single post to GitHub by ID.
168
+	 *
169
+	 * Called on the save_post hook.
170
+	 *
171
+	 * @param int $post_id Post ID.
172
+	 *
173
+	 * @return boolean
174
+	 */
175
+	public function export_post( $post_id ) {
176
+		if ( wp_is_post_revision( $post_id ) ) {
177
+			return;
178
+		}
179
+
180
+		if ( ! $this->app->semaphore()->is_open() ) {
181
+			return $this->app->response()->error( new WP_Error(
182
+				'semaphore_locked',
183
+				sprintf( __( '%s : Semaphore is locked, import/export already in progress.', 'writing-on-github' ), 'Controller::export_post()' )
184
+			) );
185
+		}
186
+
187
+		$this->app->semaphore()->lock();
188
+		$result = $this->app->export()->update( $post_id );
189
+		$this->app->semaphore()->unlock();
190
+
191
+		if ( is_wp_error( $result ) ) {
192
+			/* @var WP_Error $result */
193
+			return $this->app->response()->error( $result );
194
+		}
195
+
196
+		return $this->app->response()->success( $result );
197
+	}
198
+
199
+	/**
200
+	 * Removes the post from the tree.
201
+	 *
202
+	 * Called the delete_post hook.
203
+	 *
204
+	 * @param int $post_id Post ID.
205
+	 *
206
+	 * @return boolean
207
+	 */
208
+	public function delete_post( $post_id ) {
209
+		if ( wp_is_post_revision( $post_id ) ) {
210
+			return;
211
+		}
212
+
213
+		if ( ! $this->app->semaphore()->is_open() ) {
214
+			return $this->app->response()->error( new WP_Error(
215
+				'semaphore_locked',
216
+				sprintf( __( '%s : Semaphore is locked, import/export already in progress.', 'writing-on-github' ), 'Controller::delete_post()' )
217
+			) );
218
+		}
219
+
220
+		$this->app->semaphore()->lock();
221
+		$result = $this->app->export()->delete( $post_id );
222
+		$this->app->semaphore()->unlock();
223
+
224
+		if ( is_wp_error( $result ) ) {
225
+			/* @var WP_Error $result */
226
+			return $this->app->response()->error( $result );
227
+		}
228
+
229
+		return $this->app->response()->success( $result );
230
+	}
231
+
232
+	/**
233
+	 * Indicates we're running our own AJAX hook
234
+	 * and thus should respond with JSON, rather
235
+	 * than just returning data.
236
+	 */
237
+	protected function set_ajax() {
238
+		if ( ! defined( 'WOGH_AJAX' ) ) {
239
+			define( 'WOGH_AJAX', true );
240
+		}
241
+	}
242 242
 }
Please login to merge, or discard this patch.
lib/cli.php 1 patch
Indentation   +146 added lines, -146 removed lines patch added patch discarded remove patch
@@ -9,150 +9,150 @@
 block discarded – undo
9 9
  */
10 10
 class Writing_On_GitHub_CLI extends WP_CLI_Command {
11 11
 
12
-    /**
13
-     * Application container.
14
-     *
15
-     * @var Writing_On_GitHub
16
-     */
17
-    protected $app;
18
-
19
-    /**
20
-     * Grab the Application container on instantiation.
21
-     */
22
-    public function __construct() {
23
-        $this->app = Writing_On_GitHub::$instance;
24
-    }
25
-
26
-    /**
27
-     * Exports an individual post
28
-     * all your posts to GitHub
29
-     *
30
-     * ## OPTIONS
31
-     *
32
-     * <post_id|all>
33
-     * : The post ID to export or 'all' for full site
34
-     *
35
-     * <user_id>
36
-     * : The user ID you'd like to save the commit as
37
-     *
38
-     * ## EXAMPLES
39
-     *
40
-     *     wp wogh export all 1
41
-     *     wp wogh export 1 1
42
-     *
43
-     * @synopsis <post_id|all> <user_id>
44
-     *
45
-     * @param array $args Command arguments.
46
-     */
47
-    public function export( $args ) {
48
-        list( $post_id, $user_id ) = $args;
49
-
50
-        if ( ! is_numeric( $user_id ) ) {
51
-            WP_CLI::error( __( 'Invalid user ID', 'writing-on-github' ) );
52
-        }
53
-
54
-        $this->app->export()->set_user( $user_id );
55
-
56
-        if ( 'all' === $post_id ) {
57
-            WP_CLI::line( __( 'Starting full export to GitHub.', 'writing-on-github' ) );
58
-            $this->app->controller()->export_all();
59
-        } elseif ( is_numeric( $post_id ) ) {
60
-            WP_CLI::line(
61
-                sprintf(
62
-                    __( 'Exporting post ID to GitHub: %d', 'writing-on-github' ),
63
-                    $post_id
64
-                )
65
-            );
66
-            $this->app->controller()->export_post( (int) $post_id );
67
-        } else {
68
-            WP_CLI::error( __( 'Invalid post ID', 'writing-on-github' ) );
69
-        }
70
-    }
71
-
72
-    /**
73
-     * Imports the post in your GitHub repo
74
-     * into your WordPress blog
75
-     *
76
-     * ## OPTIONS
77
-     *
78
-     * <user_id>
79
-     * : The user ID you'd like to save the commit as
80
-     *
81
-     * ## EXAMPLES
82
-     *
83
-     *     wp wogh import 1
84
-     *
85
-     * @synopsis <user_id>
86
-     *
87
-     * @param array $args Command arguments.
88
-     */
89
-    public function import( $args ) {
90
-        list( $user_id ) = $args;
91
-
92
-        if ( ! is_numeric( $user_id ) ) {
93
-            WP_CLI::error( __( 'Invalid user ID', 'writing-on-github' ) );
94
-        }
95
-
96
-        update_option( '_wogh_export_user_id', (int) $user_id );
97
-
98
-        WP_CLI::line( __( 'Starting import from GitHub.', 'writing-on-github' ) );
99
-
100
-        $this->app->controller()->import_master();
101
-    }
102
-
103
-    /**
104
-     * Fetches the provided sha or the repository's
105
-     * master branch and caches it.
106
-     *
107
-     * ## OPTIONS
108
-     *
109
-     * <user_id>
110
-     * : The user ID you'd like to save the commit as
111
-     *
112
-     * ## EXAMPLES
113
-     *
114
-     *     wp wogh prime --branch=master
115
-     *     wp wogh prime --sha=<commit_sha>
116
-     *
117
-     * @synopsis [--sha=<commit_sha>] [--branch]
118
-     *
119
-     * @param array $args Command arguments.
120
-     * @param array $assoc_args Command associated arguments.
121
-     */
122
-    public function prime( $args, $assoc_args ) {
123
-        if ( isset( $assoc_args['branch'] ) ) {
124
-            WP_CLI::line( __( 'Starting branch import.', 'writing-on-github' ) );
125
-
126
-            $commit = $this->app->api()->fetch()->master();
127
-
128
-            if ( is_wp_error( $commit ) ) {
129
-                WP_CLI::error(
130
-                    sprintf(
131
-                        __( 'Failed to import and cache branch with error: %s', 'writing-on-github' ),
132
-                        $commit->get_error_message()
133
-                    )
134
-                );
135
-            } else {
136
-                WP_CLI::success(
137
-                    sprintf(
138
-                        __( 'Successfully imported and cached commit %s from branch.', 'writing-on-github' ),
139
-                        $commit->sha()
140
-                    )
141
-                );
142
-            }
143
-        } else if ( isset( $assoc_args['sha'] ) ) {
144
-            WP_CLI::line( 'Starting sha import.' );
145
-
146
-            $commit = $this->app->api()->fetch()->commit( $assoc_args['sha'] );
147
-
148
-            WP_CLI::success(
149
-                sprintf(
150
-                    __( 'Successfully imported and cached commit %s.', 'writing-on-github' ),
151
-                    $commit->sha()
152
-                )
153
-            );
154
-        } else {
155
-            WP_CLI::error( 'Invalid fetch.' );
156
-        }
157
-    }
12
+	/**
13
+	 * Application container.
14
+	 *
15
+	 * @var Writing_On_GitHub
16
+	 */
17
+	protected $app;
18
+
19
+	/**
20
+	 * Grab the Application container on instantiation.
21
+	 */
22
+	public function __construct() {
23
+		$this->app = Writing_On_GitHub::$instance;
24
+	}
25
+
26
+	/**
27
+	 * Exports an individual post
28
+	 * all your posts to GitHub
29
+	 *
30
+	 * ## OPTIONS
31
+	 *
32
+	 * <post_id|all>
33
+	 * : The post ID to export or 'all' for full site
34
+	 *
35
+	 * <user_id>
36
+	 * : The user ID you'd like to save the commit as
37
+	 *
38
+	 * ## EXAMPLES
39
+	 *
40
+	 *     wp wogh export all 1
41
+	 *     wp wogh export 1 1
42
+	 *
43
+	 * @synopsis <post_id|all> <user_id>
44
+	 *
45
+	 * @param array $args Command arguments.
46
+	 */
47
+	public function export( $args ) {
48
+		list( $post_id, $user_id ) = $args;
49
+
50
+		if ( ! is_numeric( $user_id ) ) {
51
+			WP_CLI::error( __( 'Invalid user ID', 'writing-on-github' ) );
52
+		}
53
+
54
+		$this->app->export()->set_user( $user_id );
55
+
56
+		if ( 'all' === $post_id ) {
57
+			WP_CLI::line( __( 'Starting full export to GitHub.', 'writing-on-github' ) );
58
+			$this->app->controller()->export_all();
59
+		} elseif ( is_numeric( $post_id ) ) {
60
+			WP_CLI::line(
61
+				sprintf(
62
+					__( 'Exporting post ID to GitHub: %d', 'writing-on-github' ),
63
+					$post_id
64
+				)
65
+			);
66
+			$this->app->controller()->export_post( (int) $post_id );
67
+		} else {
68
+			WP_CLI::error( __( 'Invalid post ID', 'writing-on-github' ) );
69
+		}
70
+	}
71
+
72
+	/**
73
+	 * Imports the post in your GitHub repo
74
+	 * into your WordPress blog
75
+	 *
76
+	 * ## OPTIONS
77
+	 *
78
+	 * <user_id>
79
+	 * : The user ID you'd like to save the commit as
80
+	 *
81
+	 * ## EXAMPLES
82
+	 *
83
+	 *     wp wogh import 1
84
+	 *
85
+	 * @synopsis <user_id>
86
+	 *
87
+	 * @param array $args Command arguments.
88
+	 */
89
+	public function import( $args ) {
90
+		list( $user_id ) = $args;
91
+
92
+		if ( ! is_numeric( $user_id ) ) {
93
+			WP_CLI::error( __( 'Invalid user ID', 'writing-on-github' ) );
94
+		}
95
+
96
+		update_option( '_wogh_export_user_id', (int) $user_id );
97
+
98
+		WP_CLI::line( __( 'Starting import from GitHub.', 'writing-on-github' ) );
99
+
100
+		$this->app->controller()->import_master();
101
+	}
102
+
103
+	/**
104
+	 * Fetches the provided sha or the repository's
105
+	 * master branch and caches it.
106
+	 *
107
+	 * ## OPTIONS
108
+	 *
109
+	 * <user_id>
110
+	 * : The user ID you'd like to save the commit as
111
+	 *
112
+	 * ## EXAMPLES
113
+	 *
114
+	 *     wp wogh prime --branch=master
115
+	 *     wp wogh prime --sha=<commit_sha>
116
+	 *
117
+	 * @synopsis [--sha=<commit_sha>] [--branch]
118
+	 *
119
+	 * @param array $args Command arguments.
120
+	 * @param array $assoc_args Command associated arguments.
121
+	 */
122
+	public function prime( $args, $assoc_args ) {
123
+		if ( isset( $assoc_args['branch'] ) ) {
124
+			WP_CLI::line( __( 'Starting branch import.', 'writing-on-github' ) );
125
+
126
+			$commit = $this->app->api()->fetch()->master();
127
+
128
+			if ( is_wp_error( $commit ) ) {
129
+				WP_CLI::error(
130
+					sprintf(
131
+						__( 'Failed to import and cache branch with error: %s', 'writing-on-github' ),
132
+						$commit->get_error_message()
133
+					)
134
+				);
135
+			} else {
136
+				WP_CLI::success(
137
+					sprintf(
138
+						__( 'Successfully imported and cached commit %s from branch.', 'writing-on-github' ),
139
+						$commit->sha()
140
+					)
141
+				);
142
+			}
143
+		} else if ( isset( $assoc_args['sha'] ) ) {
144
+			WP_CLI::line( 'Starting sha import.' );
145
+
146
+			$commit = $this->app->api()->fetch()->commit( $assoc_args['sha'] );
147
+
148
+			WP_CLI::success(
149
+				sprintf(
150
+					__( 'Successfully imported and cached commit %s.', 'writing-on-github' ),
151
+					$commit->sha()
152
+				)
153
+			);
154
+		} else {
155
+			WP_CLI::error( 'Invalid fetch.' );
156
+		}
157
+	}
158 158
 }
Please login to merge, or discard this patch.
lib/api.php 1 patch
Indentation   +48 added lines, -48 removed lines patch added patch discarded remove patch
@@ -9,59 +9,59 @@
 block discarded – undo
9 9
  */
10 10
 class Writing_On_GitHub_Api {
11 11
 
12
-    /**
13
-     * Application container.
14
-     *
15
-     * @var Writing_On_GitHub
16
-     */
17
-    protected $app;
12
+	/**
13
+	 * Application container.
14
+	 *
15
+	 * @var Writing_On_GitHub
16
+	 */
17
+	protected $app;
18 18
 
19
-    /**
20
-     * GitHub fetch client.
21
-     *
22
-     * @var Writing_On_GitHub_Fetch_Client
23
-     */
24
-    protected $fetch;
19
+	/**
20
+	 * GitHub fetch client.
21
+	 *
22
+	 * @var Writing_On_GitHub_Fetch_Client
23
+	 */
24
+	protected $fetch;
25 25
 
26
-    /**
27
-     * Github persist client.
28
-     *
29
-     * @var Writing_On_GitHub_Persist_Client
30
-     */
31
-    protected $persist;
26
+	/**
27
+	 * Github persist client.
28
+	 *
29
+	 * @var Writing_On_GitHub_Persist_Client
30
+	 */
31
+	protected $persist;
32 32
 
33
-    /**
34
-     * Instantiates a new Api object.
35
-     *
36
-     * @param Writing_On_GitHub $app Application container.
37
-     */
38
-    public function __construct( Writing_On_GitHub $app ) {
39
-        $this->app = $app;
40
-    }
33
+	/**
34
+	 * Instantiates a new Api object.
35
+	 *
36
+	 * @param Writing_On_GitHub $app Application container.
37
+	 */
38
+	public function __construct( Writing_On_GitHub $app ) {
39
+		$this->app = $app;
40
+	}
41 41
 
42
-    /**
43
-     * Lazy-load fetch client.
44
-     *
45
-     * @return Writing_On_GitHub_Fetch_Client
46
-     */
47
-    public function fetch() {
48
-        if ( ! $this->fetch ) {
49
-            $this->fetch = new Writing_On_GitHub_Fetch_Client( $this->app );
50
-        }
42
+	/**
43
+	 * Lazy-load fetch client.
44
+	 *
45
+	 * @return Writing_On_GitHub_Fetch_Client
46
+	 */
47
+	public function fetch() {
48
+		if ( ! $this->fetch ) {
49
+			$this->fetch = new Writing_On_GitHub_Fetch_Client( $this->app );
50
+		}
51 51
 
52
-        return $this->fetch;
53
-    }
52
+		return $this->fetch;
53
+	}
54 54
 
55
-    /**
56
-     * Lazy-load persist client.
57
-     *
58
-     * @return Writing_On_GitHub_Persist_Client
59
-     */
60
-    public function persist() {
61
-        if ( ! $this->persist ) {
62
-            $this->persist = new Writing_On_GitHub_Persist_Client( $this->app );
63
-        }
55
+	/**
56
+	 * Lazy-load persist client.
57
+	 *
58
+	 * @return Writing_On_GitHub_Persist_Client
59
+	 */
60
+	public function persist() {
61
+		if ( ! $this->persist ) {
62
+			$this->persist = new Writing_On_GitHub_Persist_Client( $this->app );
63
+		}
64 64
 
65
-        return $this->persist;
66
-    }
65
+		return $this->persist;
66
+	}
67 67
 }
Please login to merge, or discard this patch.
lib/payload.php 1 patch
Indentation   +112 added lines, -112 removed lines patch added patch discarded remove patch
@@ -9,116 +9,116 @@
 block discarded – undo
9 9
  */
10 10
 class Writing_On_GitHub_Payload {
11 11
 
12
-    /**
13
-     * Application container.
14
-     *
15
-     * @var Writing_On_GitHub
16
-     */
17
-    protected $app;
18
-
19
-    /**
20
-     * Payload data.
21
-     *
22
-     * @var stdClass
23
-     */
24
-    protected $data;
25
-
26
-    /**
27
-     * Writing_On_GitHub_Payload constructor.
28
-     *
29
-     * @param Writing_On_GitHub $app      Application container.
30
-     * @param string                $raw_data Raw request data.
31
-     */
32
-    public function __construct( Writing_On_GitHub $app, $raw_data ) {
33
-        $this->app  = $app;
34
-        $this->data = json_decode( $raw_data );
35
-    }
36
-
37
-    /**
38
-     * Returns whether payload should be imported.
39
-     *
40
-     * @return bool
41
-     */
42
-    public function should_import() {
43
-        // @todo how do we get this without importing the whole api object just for this?
44
-        if ( strtolower( $this->data->repository->full_name ) !== strtolower( $this->app->api()->fetch()->repository() ) ) {
45
-            return false;
46
-        }
47
-
48
-        // The last term in the ref is the payload_branch name.
49
-        $refs   = explode( '/', $this->data->ref );
50
-        $payload_branch = array_pop( $refs );
51
-
52
-        $branch = $this->app->api()->fetch()->branch();
53
-
54
-        if ( $branch !== $payload_branch ) {
55
-            return false;
56
-        }
57
-
58
-        // We add a tag to commits we push out, so we shouldn't pull them in again.
59
-        $tag = apply_filters( 'wogh_commit_msg_tag', 'wogh' );
60
-
61
-        if ( ! $tag ) {
62
-            throw new Exception( __( 'Commit message tag not set. Filter `wogh_commit_msg_tag` misconfigured.', 'writing-on-github' ) );
63
-        }
64
-
65
-        if ( $tag === substr( $this->message(), -1 * strlen( $tag ) ) ) {
66
-            return false;
67
-        }
68
-
69
-        if ( ! $this->get_commit_id() ) {
70
-            return false;
71
-        }
72
-
73
-        return true;
74
-    }
75
-
76
-    public function get_before_commit_id() {
77
-        return $this->data->before ? $this->data->before : null;
78
-    }
79
-
80
-    /**
81
-     * Returns the sha of the head commit.
82
-     *
83
-     * @return string
84
-     */
85
-    public function get_commit_id() {
86
-        return $this->data->head_commit ? $this->data->head_commit->id : null;
87
-    }
88
-
89
-    /**
90
-     * Returns the email address for the commit author.
91
-     *
92
-     * @return string
93
-     */
94
-    public function get_author_email() {
95
-        return $this->data->head_commit->author->email;
96
-    }
97
-
98
-    /**
99
-     * Returns array commits for the payload.
100
-     *
101
-     * @return array
102
-     */
103
-    public function get_commits() {
104
-        return $this->data->commits;
105
-    }
106
-
107
-    /**
108
-     * Returns the repository's full name.
109
-     *
110
-     * @return string
111
-     */
112
-    public function get_repository_name() {
113
-        return $this->data->repository->full_name;
114
-    }
115
-
116
-    /**
117
-     * Returns the payload's commit message.
118
-     *
119
-     * @return string
120
-     */
121
-    protected function message() {
122
-        return $this->data->head_commit->message;
123
-    }
12
+	/**
13
+	 * Application container.
14
+	 *
15
+	 * @var Writing_On_GitHub
16
+	 */
17
+	protected $app;
18
+
19
+	/**
20
+	 * Payload data.
21
+	 *
22
+	 * @var stdClass
23
+	 */
24
+	protected $data;
25
+
26
+	/**
27
+	 * Writing_On_GitHub_Payload constructor.
28
+	 *
29
+	 * @param Writing_On_GitHub $app      Application container.
30
+	 * @param string                $raw_data Raw request data.
31
+	 */
32
+	public function __construct( Writing_On_GitHub $app, $raw_data ) {
33
+		$this->app  = $app;
34
+		$this->data = json_decode( $raw_data );
35
+	}
36
+
37
+	/**
38
+	 * Returns whether payload should be imported.
39
+	 *
40
+	 * @return bool
41
+	 */
42
+	public function should_import() {
43
+		// @todo how do we get this without importing the whole api object just for this?
44
+		if ( strtolower( $this->data->repository->full_name ) !== strtolower( $this->app->api()->fetch()->repository() ) ) {
45
+			return false;
46
+		}
47
+
48
+		// The last term in the ref is the payload_branch name.
49
+		$refs   = explode( '/', $this->data->ref );
50
+		$payload_branch = array_pop( $refs );
51
+
52
+		$branch = $this->app->api()->fetch()->branch();
53
+
54
+		if ( $branch !== $payload_branch ) {
55
+			return false;
56
+		}
57
+
58
+		// We add a tag to commits we push out, so we shouldn't pull them in again.
59
+		$tag = apply_filters( 'wogh_commit_msg_tag', 'wogh' );
60
+
61
+		if ( ! $tag ) {
62
+			throw new Exception( __( 'Commit message tag not set. Filter `wogh_commit_msg_tag` misconfigured.', 'writing-on-github' ) );
63
+		}
64
+
65
+		if ( $tag === substr( $this->message(), -1 * strlen( $tag ) ) ) {
66
+			return false;
67
+		}
68
+
69
+		if ( ! $this->get_commit_id() ) {
70
+			return false;
71
+		}
72
+
73
+		return true;
74
+	}
75
+
76
+	public function get_before_commit_id() {
77
+		return $this->data->before ? $this->data->before : null;
78
+	}
79
+
80
+	/**
81
+	 * Returns the sha of the head commit.
82
+	 *
83
+	 * @return string
84
+	 */
85
+	public function get_commit_id() {
86
+		return $this->data->head_commit ? $this->data->head_commit->id : null;
87
+	}
88
+
89
+	/**
90
+	 * Returns the email address for the commit author.
91
+	 *
92
+	 * @return string
93
+	 */
94
+	public function get_author_email() {
95
+		return $this->data->head_commit->author->email;
96
+	}
97
+
98
+	/**
99
+	 * Returns array commits for the payload.
100
+	 *
101
+	 * @return array
102
+	 */
103
+	public function get_commits() {
104
+		return $this->data->commits;
105
+	}
106
+
107
+	/**
108
+	 * Returns the repository's full name.
109
+	 *
110
+	 * @return string
111
+	 */
112
+	public function get_repository_name() {
113
+		return $this->data->repository->full_name;
114
+	}
115
+
116
+	/**
117
+	 * Returns the payload's commit message.
118
+	 *
119
+	 * @return string
120
+	 */
121
+	protected function message() {
122
+		return $this->data->head_commit->message;
123
+	}
124 124
 }
Please login to merge, or discard this patch.
lib/fileinfo.php 1 patch
Indentation   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -6,13 +6,13 @@
 block discarded – undo
6 6
  */
7 7
 class Writing_On_GitHub_File_Info {
8 8
 
9
-    public function __construct( stdClass $data ) {
10
-        $this->sha          = $data->sha;
11
-        $this->path         = $data->path;
12
-        $this->status       = $data->status;
13
-    }
9
+	public function __construct( stdClass $data ) {
10
+		$this->sha          = $data->sha;
11
+		$this->path         = $data->path;
12
+		$this->status       = $data->status;
13
+	}
14 14
 
15
-    public $sha;
16
-    public $path;
17
-    public $status;  // added removed modified
15
+	public $sha;
16
+	public $path;
17
+	public $status;  // added removed modified
18 18
 }
Please login to merge, or discard this patch.
lib/semaphore.php 1 patch
Indentation   +51 added lines, -51 removed lines patch added patch discarded remove patch
@@ -9,55 +9,55 @@
 block discarded – undo
9 9
  */
10 10
 class Writing_On_GitHub_Semaphore {
11 11
 
12
-    /**
13
-     * Sempahore's option key.
14
-     */
15
-    const KEY = 'wogh_semaphore_lock';
16
-
17
-    /**
18
-     * Option key when semaphore is locked.
19
-     */
20
-    const VALUE_LOCKED = 'yes';
21
-
22
-    /**
23
-     * Option key when semaphore is unlocked.
24
-     */
25
-    const VALUE_UNLOCKED = 'no';
26
-
27
-    /**
28
-     * Clean up the old values on instantiation.
29
-     */
30
-    public function __construct() {
31
-        delete_option( self::KEY );
32
-    }
33
-
34
-    /**
35
-     * Checks if the Semaphore is open.
36
-     *
37
-     * Fails to report it's open if the the Api class can't make a call
38
-     * or the push lock has been enabled.
39
-     *
40
-     * @return bool
41
-     */
42
-    public function is_open() {
43
-        if ( self::VALUE_LOCKED === get_transient( self::KEY ) ) {
44
-            return false;
45
-        }
46
-
47
-        return true;
48
-    }
49
-
50
-    /**
51
-     * Enables the push lock.
52
-     */
53
-    public function lock() {
54
-        set_transient( self::KEY, self::VALUE_LOCKED, MINUTE_IN_SECONDS );
55
-    }
56
-
57
-    /**
58
-     * Disables the push lock.
59
-     */
60
-    public function unlock() {
61
-        set_transient( self::KEY, self::VALUE_UNLOCKED, MINUTE_IN_SECONDS );
62
-    }
12
+	/**
13
+	 * Sempahore's option key.
14
+	 */
15
+	const KEY = 'wogh_semaphore_lock';
16
+
17
+	/**
18
+	 * Option key when semaphore is locked.
19
+	 */
20
+	const VALUE_LOCKED = 'yes';
21
+
22
+	/**
23
+	 * Option key when semaphore is unlocked.
24
+	 */
25
+	const VALUE_UNLOCKED = 'no';
26
+
27
+	/**
28
+	 * Clean up the old values on instantiation.
29
+	 */
30
+	public function __construct() {
31
+		delete_option( self::KEY );
32
+	}
33
+
34
+	/**
35
+	 * Checks if the Semaphore is open.
36
+	 *
37
+	 * Fails to report it's open if the the Api class can't make a call
38
+	 * or the push lock has been enabled.
39
+	 *
40
+	 * @return bool
41
+	 */
42
+	public function is_open() {
43
+		if ( self::VALUE_LOCKED === get_transient( self::KEY ) ) {
44
+			return false;
45
+		}
46
+
47
+		return true;
48
+	}
49
+
50
+	/**
51
+	 * Enables the push lock.
52
+	 */
53
+	public function lock() {
54
+		set_transient( self::KEY, self::VALUE_LOCKED, MINUTE_IN_SECONDS );
55
+	}
56
+
57
+	/**
58
+	 * Disables the push lock.
59
+	 */
60
+	public function unlock() {
61
+		set_transient( self::KEY, self::VALUE_UNLOCKED, MINUTE_IN_SECONDS );
62
+	}
63 63
 }
Please login to merge, or discard this patch.