2424 """
2525
2626
27+ class OrderType (object ):
28+
29+ """
30+ OrderType is used to choose one of the ascending and descending
31+ It returns either ascending or descending
32+ """
33+ ASC , DESC = range (0 , 2 )
34+
35+ pass
36+
37+
2738class AssetLibrary :
2839
2940 """
@@ -35,23 +46,27 @@ class AssetLibrary:
3546 """
3647
3748 def __init__ (self ):
38- self .count = 0
49+
50+ self .__count = 0
3951 self .__stack_instance = None
4052 self .__http_request = None
4153 self .__stack_headers = {}
4254 self .__query_params = {}
4355
4456 def instance (self , stack_instance ):
57+
4558 self .__stack_instance = stack_instance
4659 self .__stack_headers .update (self .__stack_instance .headers )
4760 self .__http_request = self .__stack_instance .http_request
4861
4962 def set_header (self , key : str , value ):
63+
5064 if key is not None and value is not None :
5165 self .__stack_headers [key ] = value
5266 return self
5367
5468 def headers (self , headers : dict ):
69+
5570 if headers is not None and len (headers ) > 0 and isinstance (headers , dict ):
5671 self .__stack_headers = headers
5772 if 'environment' in self .__stack_headers :
@@ -60,6 +75,7 @@ def headers(self, headers: dict):
6075 return self
6176
6277 def remove_header (self , key ):
78+
6379 if key is not None :
6480 if key in self .__stack_headers :
6581 self .__stack_headers .pop (key )
@@ -74,79 +90,31 @@ def include_relative_url(self):
7490 return self
7591
7692 def get_count (self ) -> int :
77- return self .count
78-
79- # Color = enumerate(RED="ASCENDING", GREEN='DESCENDING')
80- # [PENDING], Need to add
81- # order_by = Enum('ORDER_BY', 'ASCENDING DESCENDING')
82- # def sort(self, key: str, order_by):
83- # if ORDER_.ASCENDING:
84- # self.__post_params['asc'] = key
85- # if ORDER_BY.DESCENDING:
86- # self.__post_params['desc'] = key
87- # return self.__post_params
88-
89- def fetch_all (self ):
90-
91- import requests
92- from urllib import parse
93- from requests import Response
94- from contentstack import Config
95- from contentstack import Error
96- from contentstack import Asset
97-
98- error = None
99- asset_url = Config ().endpoint ('assets' )
100- self .__stack_headers .update (self .header_agents ())
101- payload = parse .urlencode (query = self .__query_params , encoding = 'UTF-8' )
102-
103- try :
104- response : Response = requests .get (asset_url , params = payload , headers = self .__stack_headers )
105- list_asset : list [Asset ] = []
106-
107- if response .ok :
108-
109- response : dict = response .json ()['assets' ]
110-
111- for asset in response :
112- asset_instance = Asset ()
113- asset_resp : Asset = asset_instance .configure (response = asset )
114- list_asset .append (asset_resp )
115-
116- return list_asset
117- else :
118- error_dict = response .json ()
119- return Error ().error (error_dict )
120-
121- except requests .exceptions .RequestException as e :
122- raise ConnectionError (e .response )
123-
124-
125- @classmethod
126- def header_agents (cls ) -> dict :
93+ """
94+ get_count returns the total size of content
95+ :return: count of content
96+ :rtype: int
97+ """
98+ return self .__count
12799
128- import contentstack
129- import platform
100+ def sort (self , key : str , order_by : OrderType ):
130101
131102 """
132- Contentstack-User-Agent header.
103+ :param key: provides key on which ASC/DESC need to apply.
104+ :param order_by: object option either "asc" or "desc"
105+ :return self , instance of AssetLibrary
133106 """
134- header = {'sdk' : dict (name = contentstack .__package__ , version = contentstack .__version__ )}
135- os_name = platform .system ()
107+ if order_by == 1 :
108+ self .__query_params ['asc' ] = key
109+ else :
110+ self .__query_params ['desc' ] = key
136111
137- if os_name == 'Darwin' :
138- os_name = 'macOS'
112+ return self .__query_params
139113
140- elif not os_name or os_name == 'Java' :
141- os_name = None
114+ def fetch_all (self ):
115+ from contentstack import Config
116+ asset_url = Config ().endpoint ('assets' )
117+ return self .__http_request .get_result (asset_url , self .__query_params , self .__stack_headers )
142118
143- elif os_name and os_name not in ['macOS' , 'Windows' ]:
144- os_name = 'Linux'
145119
146- header ['os' ] = {
147- 'name' : os_name ,
148- 'version' : platform .release ()
149- }
150120
151- local_headers = {'X-User-Agent' : str (header ), "Content-Type" : 'application/json' }
152- return local_headers
0 commit comments