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 |
||||
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; |
||||
0 ignored issues
–
show
Bug
Best Practice
introduced
by
![]() |
|||||
27 | } |
||||
28 | |||||
29 | 1 | $files = array(); |
|||
30 | 1 | foreach ($data->files as $file) { |
|||
0 ignored issues
–
show
|
|||||
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 |
||||
46 | */ |
||||
47 | public function remote_contents( $post ) { |
||||
48 | return $this->call( 'GET', $this->content_endpoint( $post->github_path() ) ); |
||||
49 | } |
||||
50 | |||||
51 | |||||
52 | |||||
53 | public function exists( $path ) { |
||||
54 | $result = $this->call( 'GET', $this->content_endpoint( $path ) ); |
||||
55 | if ( is_wp_error( $result ) ) { |
||||
56 | return false; |
||||
57 | } |
||||
58 | return true; |
||||
59 | } |
||||
60 | |||||
61 | /** |
||||
62 | * Retrieves a tree by sha recursively from the GitHub API |
||||
63 | * |
||||
64 | * @param string $sha Commit sha to retrieve tree from. |
||||
65 | * |
||||
66 | * @return Writing_On_GitHub_File_Info[]|WP_Error |
||||
67 | */ |
||||
68 | 6 | public function tree_recursive( $sha = '_default' ) { |
|||
69 | |||||
70 | 6 | if ( '_default' === $sha ) { |
|||
71 | 6 | $sha = $this->branch(); |
|||
72 | 6 | } |
|||
73 | |||||
74 | 6 | $data = $this->call( 'GET', $this->tree_endpoint() . '/' . $sha . '?recursive=1' ); |
|||
75 | |||||
76 | 6 | if ( is_wp_error( $data ) ) { |
|||
77 | 4 | return $data; |
|||
0 ignored issues
–
show
|
|||||
78 | } |
||||
79 | |||||
80 | 2 | $files = array(); |
|||
81 | |||||
82 | 2 | foreach ( $data->tree as $index => $thing ) { |
|||
0 ignored issues
–
show
|
|||||
83 | // We need to remove the trees because |
||||
84 | // the recursive tree includes both |
||||
85 | // the subtrees as well the subtrees' blobs. |
||||
86 | 2 | if ( 'blob' === $thing->type ) { |
|||
87 | 2 | $thing->status = ''; |
|||
88 | 2 | $files[] = new Writing_On_GitHub_File_Info( $thing ); |
|||
89 | 2 | } |
|||
90 | 2 | } |
|||
91 | |||||
92 | 2 | return $files; |
|||
93 | } |
||||
94 | |||||
95 | /** |
||||
96 | * Retrieves the blob data for a given sha |
||||
97 | * |
||||
98 | * @param Writing_On_GitHub_File_Info $fileinfo |
||||
99 | * |
||||
100 | * @return Writing_On_GitHub_Blob|WP_Error |
||||
101 | */ |
||||
102 | 1 | public function blob( Writing_On_GitHub_File_Info $fileinfo ) { |
|||
103 | 1 | $data = $this->call( 'GET', $this->blob_endpoint() . '/' . $fileinfo->sha ); |
|||
104 | |||||
105 | 1 | if ( is_wp_error( $data ) ) { |
|||
106 | 1 | return $data; |
|||
0 ignored issues
–
show
|
|||||
107 | } |
||||
108 | |||||
109 | $data->path = $fileinfo->path; |
||||
0 ignored issues
–
show
|
|||||
110 | return new Writing_On_GitHub_Blob( $data ); |
||||
0 ignored issues
–
show
It seems like
$data can also be of type WP_Error ; however, parameter $data of Writing_On_GitHub_Blob::__construct() does only seem to accept stdClass , maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
![]() |
|||||
111 | } |
||||
112 | |||||
113 | /** |
||||
114 | * Get blob by path |
||||
115 | * @param string $path |
||||
116 | * @return Writing_On_GitHub_Blob|WP_Error |
||||
117 | */ |
||||
118 | public function blob_by_path( $path ) { |
||||
119 | $result = $this->call( 'GET', $this->content_endpoint( $path ) ); |
||||
120 | if ( is_wp_error( $result ) ) { |
||||
121 | return $result; |
||||
0 ignored issues
–
show
|
|||||
122 | } |
||||
123 | |||||
124 | return new Writing_On_GitHub_Blob( $result ); |
||||
0 ignored issues
–
show
It seems like
$result can also be of type WP_Error ; however, parameter $data of Writing_On_GitHub_Blob::__construct() does only seem to accept stdClass , maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
![]() |
|||||
125 | } |
||||
126 | } |
||||
127 |