Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
meibuyu-rpc
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
without authentication
meibuyu-rpc
Commits
b4fc60a5
Commit
b4fc60a5
authored
Sep 09, 2020
by
王源
🎧
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'shopify' into test
parents
fdf13407
c07263e0
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
62 additions
and
0 deletions
+62
-0
AbstractShopify.php
src/Shopify/lib/AbstractShopify.php
+62
-0
No files found.
src/Shopify/lib/AbstractShopify.php
View file @
b4fc60a5
...
...
@@ -257,6 +257,19 @@ abstract class AbstractShopify
return
$this
->
processResponse
(
$response
,
$dataKey
);
}
/**
* 分页
* @param null $url
* @return ['data' => [数据], 'next_link' => '下一页链接']
* @throws Exception
*/
public
function
page
(
$url
=
null
)
{
if
(
!
$url
)
$url
=
$this
->
generateUrl
();
$response
=
HttpRequestJson
::
get
(
$url
,
$this
->
httpHeaders
);
return
$this
->
processPageResponse
(
$response
,
$this
->
pluralizeKey
);
}
/**
* 根据id获取一条数据
* @param $id
...
...
@@ -380,4 +393,53 @@ abstract class AbstractShopify
}
}
/**
* 处理响应
* @param array $response
* @param null $dataKey
* @return mixed
* @throws Exception
*/
public
function
processPageResponse
(
$response
,
$dataKey
=
null
)
{
[
$code
,
$header
,
$body
]
=
$response
;
$content
=
json_decode
(
$body
,
true
);
$link
=
$this
->
getLink
(
$header
);
if
(
isset
(
$content
[
'errors'
]))
{
throw
new
Exception
(
$this
->
castString
(
$content
[
'errors'
]),
$code
);
}
if
(
$dataKey
&&
isset
(
$content
[
$dataKey
]))
{
$data
=
$content
[
$dataKey
];
}
else
{
$data
=
$content
;
}
return
[
'data'
=>
$data
,
'next_link'
=>
$link
];
}
public
function
getLink
(
$header
,
$type
=
'next'
)
{
if
(
array_key_exists
(
'x-shopify-api-version'
,
$header
)
&&
$header
[
'x-shopify-api-version'
]
<
'2019-07'
)
{
return
null
;
}
if
(
!
empty
(
$header
[
'link'
]))
{
if
(
stristr
(
$header
[
'link'
],
'; rel="'
.
$type
.
'"'
)
>
-
1
)
{
$headerLinks
=
explode
(
','
,
$header
[
'link'
]);
foreach
(
$headerLinks
as
$headerLink
)
{
if
(
stristr
(
$headerLink
,
'; rel="'
.
$type
.
'"'
)
===
-
1
)
{
continue
;
}
$pattern
=
'#<(.*?)>; rel="'
.
$type
.
'"#m'
;
preg_match
(
$pattern
,
$headerLink
,
$linkResponseHeaders
);
if
(
$linkResponseHeaders
)
{
return
$linkResponseHeaders
[
1
];
}
}
}
}
return
null
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment