Repository navigation
Expand file tree
/
Copy pathSearch.php
More file actions
141 lines (127 loc) · 3.45 KB
/
Copy pathSearch.php
File metadata and controls
141 lines (127 loc) · 3.45 KB
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
<?php
/**
* Part of the Joomla Framework Github Package
*
* @copyright Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
namespace Joomla\Github\Package;
use Joomla\Github\AbstractPackage;
use Joomla\Uri\Uri;
/**
* GitHub API Search class for the Joomla Framework.
*
* @link https://developer.github.com/v3/search
*
* @since 1.0
*/
class Search extends AbstractPackage
{
/**
* Search issues.
*
* @param string $owner The name of the owner of the repository.
* @param string $repo The name of the repository.
* @param string $state The state - open or closed.
* @param string $keyword The search term.
*
* @return object
*
* @since 1.0
* @throws \UnexpectedValueException
* @deprecated The legacy API is deprecated
*/
public function issues($owner, $repo, $state, $keyword)
{
if (\in_array($state, array('open', 'close')) == false)
{
throw new \UnexpectedValueException('State must be either "open" or "closed"');
}
// Build the request path.
$path = '/legacy/issues/search/' . $owner . '/' . $repo . '/' . $state . '/' . $keyword;
// Send the request.
return $this->processResponse(
$this->client->get($this->fetchUrl($path))
);
}
/**
* Search repositories.
*
* Find repositories by keyword. Note, this legacy method does not follow
* the v3 pagination pattern.
* This method returns up to 100 results per page and pages can be fetched
* using the start_page parameter.
*
* @param string $keyword The search term.
* @param string $language Filter results by language https://github.com/languages
* @param integer $startPage Page number to fetch
*
* @return object
*
* @since 1.0
* @deprecated The legacy API is deprecated
*/
public function repositories($keyword, $language = '', $startPage = 0)
{
// Build the request path.
$uri = new Uri($this->fetchUrl('/legacy/repos/search/' . $keyword));
if ($language)
{
$uri->setVar('language', $language);
}
if ($startPage)
{
$uri->setVar('start_page', $startPage);
}
// Send the request.
return $this->processResponse($this->client->get($uri));
}
/**
* Search users.
*
* Find users by keyword.
*
* @param string $keyword The search term.
* @param integer $startPage Page number to fetch
*
* @return object
*
* @since 1.0
* @deprecated The legacy API is deprecated
*/
public function users($keyword, $startPage = 0)
{
// Build the request path.
$uri = new Uri($this->fetchUrl('/legacy/user/search/' . $keyword));
if ($startPage)
{
$uri->setVar('start_page', $startPage);
}
// Send the request.
return $this->processResponse($this->client->get($uri));
}
/**
* Email search.
*
* This API call is added for compatibility reasons only. There’s no guarantee
* that full email searches will always be available. The @ character in the
* address must be left unencoded. Searches only against public email addresses
* (as configured on the user’s GitHub profile).
*
* @param string $email The email address(es).
*
* @return object
*
* @since 1.0
* @deprecated The legacy API is deprecated
*/
public function email($email)
{
// Build the request path.
$path = '/legacy/user/email/' . $email;
// Send the request.
return $this->processResponse(
$this->client->get($this->fetchUrl($path))
);
}
}