Passed
Push — master ( c00ab5...5ed1e2 )
by litefeel
03:01
created

lib/client/fetch.php (6 issues)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
/**
3
 * Fetch API client class.
4
 * @package Writing_On_GitHub
5
 */
6
7
/**
8
 * Class Writing_On_GitHub_Fetch_Client
9
 */
10
class Writing_On_GitHub_Fetch_Client extends Writing_On_GitHub_Base_Client {
11
12
	/**
13
	 * Compare a commit by sha with master from the GitHub API
14
	 *
15
	 * @param string $sha Sha for commit to retrieve.
16
	 *
17
	 * @return Writing_On_GitHub_File_Info[]|WP_Error
0 ignored issues
show
Should the return type not be stdClass|WP_Error|array? Also, consider making the array more specific, something like array<String>, or String[].

This check compares the return type specified in the @return annotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.

If the return type contains the type array, this check recommends the use of a more specific type like String[] or array<String>.

Loading history...
18
	 */
19 1
	public function compare( $sha ) {
20
		// https://api.github.com/repos/litefeel/testwpsync/compare/861f87e8851b8debb78db548269d29f8da4d94ac...master
21 1
		$endpoint = $this->compare_endpoint();
22 1
		$branch = $this->branch();
23 1
		$data = $this->call( 'GET', "$endpoint/$sha...$branch" );
24
25 1
		if ( is_wp_error( $data ) ) {
26
			return $data;
27
		}
28
29 1
		$files = array();
30 1
		foreach ($data->files as $file) {
31 1
			$file->path = $file->filename;
32 1
			$files[] = new Writing_On_GitHub_File_Info($file);
33 1
		}
34
35 1
		return $files;
36
	}
37
38
	/**
39
	 * Calls the content API to get the post's contents and metadata
40
	 *
41
	 * Returns Object the response from the API
42
	 *
43
	 * @param Writing_On_GitHub_Post $post Post to retrieve remote contents for.
44
	 *
45
	 * @return mixed
0 ignored issues
show
Consider making the return type a bit more specific; maybe use stdClass|WP_Error.

This check looks for the generic type array as a return type and suggests a more specific type. This type is inferred from the actual code.

Loading history...
46
	 */
47
	public function remote_contents( $post ) {
48
		return $this->call( 'GET', $this->content_endpoint( $post->github_path() ) );
49
	}
50
51
	public function exists( $path ) {
52
		$result = $this->call( 'GET', $this->content_endpoint( $path ) );
53
		if ( is_wp_error( $result ) ) {
0 ignored issues
show
This if statement, and the following return statement can be replaced with return !is_wp_error($result);.
Loading history...
54
			return false;
55
		}
56
		return true;
57
	}
58
59
	/**
60
	 * Retrieves a tree by sha recursively from the GitHub API
61
	 *
62
	 * @param string $sha Commit sha to retrieve tree from.
63
	 *
64
	 * @return Writing_On_GitHub_File_Info[]|WP_Error
0 ignored issues
show
Should the return type not be stdClass|WP_Error|array? Also, consider making the array more specific, something like array<String>, or String[].

This check compares the return type specified in the @return annotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.

If the return type contains the type array, this check recommends the use of a more specific type like String[] or array<String>.

Loading history...
65
	 */
66 6
	public function tree_recursive( $sha = '_default' ) {
67
68 6
		if ( '_default' === $sha ) {
69 6
			$sha = $this->branch();
0 ignored issues
show
Consider using a different name than the parameter $sha. This often makes code more readable.
Loading history...
70 6
		}
71
72 6
		$data = $this->call( 'GET', $this->tree_endpoint() . '/' . $sha . '?recursive=1' );
73
74 6
		if ( is_wp_error( $data ) ) {
75 4
			return $data;
76
		}
77
78 2
		$files = array();
79
80 2
		foreach ( $data->tree as $index => $thing ) {
81
			// We need to remove the trees because
82
			// the recursive tree includes both
83
			// the subtrees as well the subtrees' blobs.
84 2
			if ( 'blob' === $thing->type ) {
85 2
				$thing->status = '';
86 2
				$files[] = new Writing_On_GitHub_File_Info( $thing );
87 2
			}
88 2
		}
89
90 2
		return $files;
91
	}
92
93
	/**
94
	 * Retrieves the blob data for a given sha
95
	 *
96
	 * @param Writing_On_GitHub_File_Info $fileinfo
97
	 *
98
	 * @return Writing_On_GitHub_Blob|WP_Error
0 ignored issues
show
Should the return type not be stdClass|WP_Error|Writing_On_GitHub_Blob?

This check compares the return type specified in the @return annotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.

Loading history...
99
	 */
100 1
	public function blob( Writing_On_GitHub_File_Info $fileinfo ) {
101 1
		$data = $this->call( 'GET', $this->blob_endpoint() . '/' . $fileinfo->sha );
102
103 1
		if ( is_wp_error( $data ) ) {
104 1
			return $data;
105
		}
106
107
		$data->path = $fileinfo->path;
108
		return new Writing_On_GitHub_Blob( $data );
109
	}
110
}
111