Skip to main content

shopify_client/admin/storefront_access_token/
remote.rs

1use crate::common::ServiceContext;
2use crate::{
3    common::{http::execute_graphql, types::APIError},
4    types::storefront_access_token::{
5        ListStorefrontAccessTokensResp, StorefrontAccessTokenCreateInput,
6        StorefrontAccessTokenCreateResp, StorefrontAccessTokenDeleteInput,
7        StorefrontAccessTokenDeleteResp,
8    },
9};
10
11use serde_json::json;
12
13pub async fn list_storefront_access_tokens(
14    ctx: &ServiceContext,
15) -> Result<ListStorefrontAccessTokensResp, APIError> {
16    let query = r#"
17        query {
18            shop {
19                storefrontAccessTokens(first: 100) {
20                    edges {
21                        node {
22                            id
23                            accessToken
24                            accessScopes {
25                                handle
26                            }
27                            createdAt
28                            title
29                            updatedAt
30                        }
31                    }
32                    pageInfo {
33                        hasNextPage
34                        endCursor
35                    }
36                }
37            }
38        }
39    "#;
40
41    let variables = json!({});
42
43    execute_graphql(ctx, query, variables).await
44}
45
46pub async fn create_storefront_access_token(
47    ctx: &ServiceContext,
48    input: &StorefrontAccessTokenCreateInput,
49) -> Result<StorefrontAccessTokenCreateResp, APIError> {
50    let query = r#"
51        mutation storefrontAccessTokenCreate($input: StorefrontAccessTokenInput!) {
52            storefrontAccessTokenCreate(input: $input) {
53                storefrontAccessToken {
54                    id
55                    accessToken
56                    accessScopes {
57                        handle
58                    }
59                    createdAt
60                    title
61                }
62                userErrors {
63                    field
64                    message
65                }
66            }
67        }
68    "#;
69
70    let variables = json!({
71        "input": {
72            "title": input.title
73        }
74    });
75
76    execute_graphql(ctx, query, variables).await
77}
78
79pub async fn delete_storefront_access_token(
80    ctx: &ServiceContext,
81    input: &StorefrontAccessTokenDeleteInput,
82) -> Result<StorefrontAccessTokenDeleteResp, APIError> {
83    let query = r#"
84        mutation storefrontAccessTokenDelete($input: StorefrontAccessTokenDeleteInput!) {
85            storefrontAccessTokenDelete(input: $input) {
86                deletedStorefrontAccessTokenId
87                userErrors {
88                    field
89                    message
90                }
91            }
92        }
93    "#;
94
95    let variables = json!({
96        "input": {
97            "id": input.id
98        }
99    });
100
101    execute_graphql(ctx, query, variables).await
102}